Cloud ManagerのGit サブモジュールのサポート git-submodule-support
Git サブモジュールを使用すると、ビルド時に Git リポジトリ間で複数のブランチのコンテンツを結合できます。
Cloud Manager のビルドプロセスを実行すると、パイプラインのリポジトリが複製され、分岐がチェックアウトされます。 .gitmodules ファイルが分岐のルートディレクトリに存在する場合、対応するコマンドが実行されます。
次のコマンドは、各サブモジュールを適切なディレクトリにチェックアウトします。
$ git submodule update --init
この手法は、複数のソース Git リポジトリの操作で説明しているソリューションの代わりになります。 Git サブモジュールに慣れ、外部マージ プロセスを管理しないことを好む組織に適しています。
例えば、3 つのリポジトリがあるとします。 各リポジトリには、main という名前の分岐が 1 つ含まれています。 プライマリリポジトリ(パイプラインで設定されたリポジトリ)で、main ブランチには、他の2つのリポジトリに含まれるプロジェクトを宣言するpom.xml ファイルがあります。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>customer.group.id</groupId>
<artifactId>customer-reactor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>project-a</module>
<module>project-b</module>
</modules>
</project>
他の2つのリポジトリのサブモジュールを追加します。
$ git submodule add -b main https://git.cloudmanager.adobe.com/ProgramName/projectA/ project-a
$ git submodule add -b main https://git.cloudmanager.adobe.com/ProgramName/projectB/ project-b
その結果、.gitmodules ファイルの内容は次のようになります。
[submodule "project-a"]
path = project-a
url = https://git.cloudmanager.adobe.com/ProgramName/projectA/
branch = main
[submodule "project-b"]
path = project-b
url = https://git.cloudmanager.adobe.com/ProgramName/projectB/
branch = main
Git サブモジュールについて詳しくは、Git リファレンスマニュアルも参照してください。
Adobe リポジトリの使用上のメモ usage-notes-recommendations-adobe-repos
-
Git URLは、前の節で説明した構文に従う必要があります。
-
分岐のルートにあるサブモジュールのみがサポートされます。
-
セキュリティ上の理由から、Git の URL に資格情報を埋め込まないでください。
-
特に必要がない限り、アドビでは、以下を実行してシャローサブモジュールを使用することをお勧めします。
各サブモジュールのgit config -f .gitmodules submodule.<submodule path>.shallow true。 -
Git サブモジュール参照は、特定の Git コミットに保存されます。 サブモジュールリポジトリに変更を加えた場合、参照されたコミットを更新する必要があります。
例えば、以下を使用します。git submodule update --remote
プライベートリポジトリに対する Git サブモジュールのサポート private-repositories
プライベートリポジトリ でのGit サブモジュールのサポートは、Adobe リポジトリでの使用と同様です。
ただし、Cloud Managerでサブモジュール設定を認識するには、pom.xml ファイルを設定してgit submodule コマンドを実行した後、.gitmodules ファイルをアグリゲータリポジトリのルートディレクトリに追加します。
外部リポジトリのGit サブモジュールのサポート external-repositories
外部リポジトリでのGit サブモジュールのサポート(独自のGitを取り込む)は、Adobe リポジトリとプライベートリポジトリでの使用とほぼ同じように機能します。 Cloud Managerは、ビルド中にサブモジュールの取得を認証するので、外部Git プロバイダーでホストされているサブモジュールは、追加のパイプライン設定なしで解決されます。
他のリポジトリタイプと同様に、pom.xml ファイルを設定してgit submodule コマンドを実行した後、.gitmodules ファイルをアグリゲータリポジトリのルートディレクトリに追加します。
Cloud Managerがサブモジュールフェッチを認証するには、サブモジュールリポジトリが、Cloud Managerに既に登録されている外部リポジトリと同じ組織に属している必要があります。 Cloud Managerは、その組織内の登録済みリポジトリのアクセストークンを使用して、取得を認証します。 トークンはサーバーサイドで適用され、ビルド環境に公開されることはありません。
使用上のメモ usage-notes-recommendations-private-repos
- これらのメモは、GitHub.com リポジトリを指すサブモジュールに適用されます。 外部Git プロバイダーでホストされているサブモジュールについては、外部リポジトリに対するGit サブモジュールのサポート を参照してください。
.gitmodulesファイルの相対URLと絶対サブモジュール URLの両方がサポートされています。- サブモジュールリポジトリは、サポートされている外部Git プロバイダー(GitHub Enterprise、GitLab、Bitbucket、またはAzure DevOps)でホストする必要があります。
- 有効なアクセストークンを使用できるように、同じ組織の少なくとも1つのリポジトリをCloud Managerに登録する必要があります。
- セキュリティ上の理由から、Git の URL に資格情報を埋め込まないでください。
- また、アドビが管理するリポジトリで Git サブモジュールを使用する場合の制限事項も適用されます。