Unterstützung von Git-Untermodulen für Cloud Manager git-submodule-support
Git-Untermodule können verwendet werden, um zum Build-Zeitpunkt den Inhalt mehrerer Verzweigungen über Git-Repositorys hinweg zusammenzuführen.
Wenn der Build-Prozess von Cloud Manager ausgeführt wird, klont er das Repository der Pipeline und prüft dann die Verzweigung. Wenn eine .gitmodules-Datei im Stammverzeichnis der Verzweigung vorhanden ist, wird der entsprechende Befehl ausgeführt.
Mit dem folgenden Befehl wird jedes Untermodul in das entsprechende Verzeichnis ausgecheckt.
$ git submodule update --init
Diese Technik bietet eine Alternative zu der in Arbeiten mit mehreren Quellen-Git-Repositorys beschriebenen Lösung. Es ist für Organisationen geeignet, die mit Git-Untermodulen vertraut sind und es vorziehen, keinen externen Zusammenführungsprozess zu verwalten.
Nehmen wir beispielsweise an, dass es drei Repositorys gibt. Jedes Repository enthält eine einzelne Verzweigung mit dem Namen main. Im primären Repository, d. h. dem in den Pipelines konfigurierten, verfügt die main-Verzweigung über eine pom.xml, in der die in den beiden anderen Repositorys enthaltenen Projekte deklariert werden:
<?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>
Fügen Sie Untermodule für die beiden anderen Repositorys hinzu:
$ 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
Dies führt zu einer .gitmodules-Datei ähnlich der Folgenden:
[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
Weitere Informationen zu Git-Untermodulen finden Sie auch im Git-Referenzhandbuch .
Verwendungshinweise für Adobe-Repositorys usage-notes-recommendations-adobe-repos
-
Die Git-URL muss der im vorherigen Abschnitt beschriebenen Syntax entsprechen.
-
Es werden nur Untermodule im Stammverzeichnis der Verzweigung unterstützt.
-
Betten Sie aus Sicherheitsgründen keine Anmeldeinformationen in Git-URLs ein.
-
Sofern nicht anders erforderlich, empfiehlt Adobe die Verwendung von flachen Untermodulen, indem Sie Folgendes ausführen:
git config -f .gitmodules submodule.<submodule path>.shallow truefür jedes Untermodul. -
Für bestimmte Git-Commits werden Git-Untermodulverweise gespeichert. Wenn Änderungen am Untermodul-Repository vorgenommen werden, muss der referenzierte Commit aktualisiert werden.
Verwenden Sie beispielsweise Folgendes:git submodule update --remote
Unterstützung von Git-Untermodulen für private Repositorys private-repositories
Die Unterstützung für Git-Untermodule in privaten Repositorys ähnelt ihrer Verwendung mit Adobe-Repositorys.
Damit Cloud Manager die Untermodulkonfiguration erkennt, fügen Sie dem Stammverzeichnis des Aggregator-Repositorys jedoch eine .gitmodules hinzu, nachdem Sie Ihre pom.xml konfiguriert und die git submodule-Befehle ausgeführt haben.
Git-Untermodulunterstützung für externe Repositorys external-repositories
Die Unterstützung für Git-Untermodule in externen Repositorys (Bring Your Own Git) funktioniert ähnlich wie ihre Verwendung mit Adobe-Repositorys und privaten Repositorys. Cloud Manager authentifiziert Untermodulabrufe während des Builds, sodass auf Ihrem externen Git-Anbieter gehostete Untermodule ohne zusätzliche Pipeline-Konfiguration aufgelöst werden.
Fügen Sie wie bei den anderen Repository-Typen eine .gitmodules-Datei zum Stammverzeichnis des Aggregator-Repositorys hinzu, nachdem Sie Ihre pom.xml-Datei konfiguriert und die git submodule-Befehle ausgeführt haben.
Damit Cloud Manager einen Submodulabruf authentifizieren kann, muss das Submodulrepository zu derselben Organisation gehören wie ein externes Repository, das bereits in Cloud Manager registriert ist. Cloud Manager verwendet das Zugriffstoken eines registrierten Repositorys in dieser Organisation, um den Abruf zu authentifizieren. Das Token wird Server-seitig angewendet und nie der Build-Umgebung bereitgestellt.
Nutzungshinweise usage-notes-recommendations-private-repos
- Diese Hinweise gelten für Untermodule, die auf ein GitHub.com-Repository verweisen. Informationen zu Untermodulen, die auf einem externen Git-Anbieter gehostet werden, finden Sie unter Git-Untermodulunterstützung für externe Repositorys.
- Es werden sowohl relative als auch absolute Submodul-URLs in der
.gitmodules-Datei unterstützt. - Das Untermodul-Repository muss auf einem unterstützten externen Git-Anbieter gehostet werden: GitHub Enterprise, GitLab, Bitbucket oder Azure DevOps.
- Mindestens ein Repository derselben Organisation muss in Cloud Manager registriert sein, damit ein gültiges Zugriffstoken verfügbar ist.
- Betten Sie aus Sicherheitsgründen keine Anmeldeinformationen in Git-URLs ein.
- Die Einschränkungen bei der Verwendung von Git-Untermodulen mit von Adobe verwalteten Repositorys gelten ebenfalls.