Suporte ao submódulo Git para repositórios da Adobe git-submodule-support
Os submódulos Git podem ser usados para mesclar o conteúdo de várias ramificações entre repositórios Git no momento da compilação.
Quando o processo de compilação do Cloud Manager é executado, depois que o repositório configurado para o pipeline é clonado e a ramificação configurada é desmarcada, se a ramificação contiver um arquivo .gitmodules
no diretório raiz, o comando será executado.
O comando a seguir verificará cada submódulo no diretório apropriado.
$ git submodule update --init
Essa técnica é uma possível alternativa à solução descrita no documento Trabalho com vários repositórios Git de origem para organizações familiarizadas com o uso de submódulos Git e que não desejam gerenciar um processo de mesclagem externo.
Por exemplo, digamos que existam três repositórios, cada um contendo uma única ramificação chamada main
. No repositório principal, ou seja, aquele configurado nos pipelines, a ramificação main
tem um arquivo pom.xml
que declara os projetos contidos nos outros dois repositórios.
<?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>
Em seguida, você adicionaria submódulos para os outros dois repositórios.
$ 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
Isso resultaria em um arquivo .gitmodules
semelhante ao mostrado a seguir.
[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
Mais informações sobre os submódulos Git podem ser encontradas na seção Manual de referência do Git.
Limitações e recomendações limitations-recommendations
Ao usar submódulos do Git com repositórios gerenciados pelo Adobe, esteja ciente das limitações a seguir.
- A URL do Git deve seguir exatamente a sintaxe descrita na seção anterior.
- Somente há suporte aos submódulos na raiz da ramificação.
- Por motivos de segurança, não incorpore credenciais nas URLs do Git.
- A menos que seja necessário, é altamente recomendado usar submódulos superficiais.
- Para fazer isso, execute
git config -f .gitmodules submodule.<submodule path>.shallow true
para cada submódulo.
- Para fazer isso, execute
- As referências do submódulo Git são armazenadas em confirmações Git específicas. Como resultado, quando alterações no repositório do submódulo são feitas, a confirmação referenciada deve ser atualizada.
- Por exemplo, usando
git submodule update --remote
- Por exemplo, usando
Suporte ao submódulo Git para repositórios privados private-repositories
O suporte para submódulos git ao usar repositórios privados é basicamente o mesmo que usar repositórios da Adobe.
No entanto, após configurar o arquivo pom.xml
e executar os comandos git submodule
, é necessário adicionar um arquivo .gitmodules
no diretório raiz do repositório agregador do Cloud Manager para detectar a configuração do submódulo.
Limitações e recomendações limitations-recommendations-private-repos
Ao usar submódulos git com repositórios privados, esteja ciente das limitações a seguir.
- Os URLs do git para os submódulos podem estar no formato HTTPS ou SSH, mas devem estar vinculados a um repositório github.com
- Adicionar um submódulo de repositório da Adobe a um repositório agregador do GitHub ou vice-versa não funcionará.
- Os submódulos do GitHub devem estar acessíveis ao aplicativo Adobe GitHub.
- As limitações do uso de submódulos git com repositórios gerenciados pela Adobe também se aplicam.