Executar comandos git em um script
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Para alguns fluxos de trabalho, você precisa do pipeline de build para executar comandos do Git. Por exemplo, depois que um build de CI em uma ramificação de recurso for feito, a equipe talvez queira mesclar a ramificação com principal.
O Git está disponível em agentes hospedados pela Microsoft e em agentes locais.
Habilitar scripts para executar comandos do Git
Observação
Antes de começar, verifique se a identidade padrão da sua conta está definida com o código a seguir. Essa deve ser a primeira etapa após o check-out do código.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Conceder permissões de controle de versão ao serviço de build
Acesse a página de configurações do projeto da sua organização em Configurações da Organização>Geral>Projetos.
Selecione o projeto que deseja editar.
Em Configurações do Projeto, selecione Repositórios. Selecione o repositório no qual você deseja executar comandos do Git.
Selecione Segurança para editar a segurança do repositório.
Procure Serviço de Build de Coleção de Projetos. Selecione a identidade {{nome do seu projeto}} Build Service ({sua organização}) (não o grupo Contas de serviço de Build de coleção de projetos ({sua organização})). Por padrão, essa identidade pode ler do repositório, mas não pode efetuar push de alterações de volta para ele. Conceda as permissões necessárias para os comandos do Git que você deseja executar. Normalmente, convém conceder:
- Criar branch: Permitir
- Contribuir: Permitir
- Leitura: Permitir
- Criar marcação: Permitir
Acesse a guia painel de controle do Controle de Versão
Azure Repos:
https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol
Local:
https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol
Se você essa página for exibida, selecione o repositório e, em seguida, selecione o link:
Na guia Controle de Versão, selecione o repositório no qual você deseja executar comandos Git e selecione Serviço de Build de Coleção de Projetos. Por padrão, essa identidade pode ler do repositório, mas não pode efetuar push de alterações de volta para ele.
Conceda as permissões necessárias para os comandos do Git que você deseja executar. Normalmente, convém conceder:
- Criar branch: Permitir
- Contribuir: Permitir
- Leitura: Permitir
- Criar marcação: Permitir
Quando terminar de conceder as permissões, selecione Salvar alterações.
Permitir que scripts acessem o token do sistema
Na guia opções, selecione Permitir que scripts acessem o token OAuth.
Não se esqueça de limpar o repositório local
Determinados tipos de alterações no repositório local não são limpos automaticamente pelo pipeline de build. Faça o seguinte:
- Exclua os branches locais que você criar.
- Desfaça as alterações de configuração do Git.
Se você tiver problemas ao usar um agente local, verifique se o repositório está limpo:
Na guia repositório, defina Clean como True.
Na guia variáveis, crie ou modifique a variável
Build.Clean
e defina-a comosource
.
Exemplos
Listar os arquivos no repositório
Na guia build, adicione esta tarefa:
Tarefa | Argumentos |
---|---|
Utilitário: Linha de Comando Lista os arquivos no Repositório do Git. |
Tool: git Argumentos: ls-files |
Mescla um branch de recurso com main.
Você deseja que um build de CI mescle com main se o build for bem-sucedido.
Na guia Gatilhos, selecione Integração contínua (CI) e inclua os branches que você deseja compilar.
Crie merge.bat
na raiz do repositório:
@echo off
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/main (
ECHO Building main branch so no merge is needed.
EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO GIT CHECKOUT MAIN
git checkout main
ECHO GIT STATUS
git status
ECHO GIT MERGE
git merge %sourceBranch% -m "Merge to main"
ECHO GIT STATUS
git status
ECHO GIT PUSH
git push origin
ECHO GIT STATUS
git status
Na guia build, adicione essa tarefa como última:
Tarefa | Argumentos |
---|---|
Utilitário: Script do Lote Execute merge.bat. |
Caminho: merge.bat |
Perguntas frequentes
Posso executar comandos do Git se meu repositório remoto estiver no GitHub ou em outro serviço Git, como o Bitbucket Cloud?
Sim
Quais tarefas posso usar para executar comandos Git?
Como fazer evitar o disparo de um build de CI quando o script efetuar push?
Adicione ***NO_CI***
à mensagem de commit. Veja alguns exemplos:
git commit -m "This is a commit message ***NO_CI***"
git merge origin/features/hello-world -m "Merge to main ***NO_CI***"
Adicione [skip ci]
à mensagem ou descrição de commit. Veja alguns exemplos:
git commit -m "This is a commit message [skip ci]"
git merge origin/features/hello-world -m "Merge to main [skip ci]"
Você também pode usar qualquer uma destas variações para confirmações no Azure Repos Git, Bitbucket Cloud, GitHub e GitHub Enterprise Server.
[skip ci]
ou[ci skip]
skip-checks: true
ouskip-checks:true
[skip azurepipelines]
ou[azurepipelines skip]
[skip azpipelines]
ou[azpipelines skip]
[skip azp]
ou[azp skip]
***NO_CI***
Eu preciso de um agente?
Você precisa de pelo menos um agente para executar seu build ou versão.
Estou tendo problemas. Como posso solucioná-los?
Confira Solucionar problemas de build e versão.
Não consigo selecionar um pool de agentes padrão e não consigo enfileirar meu build ou versão. Como corrigir isso?
Confira Pools de agentes.
Falha da tarefa de push do NuGet com o seguinte erro: "Erro: não é possível obter o certificado do emissor local". Como posso corrigir isso?
Isso pode ser corrigido adicionando um certificado raiz confiável. Você pode adicionar a variável de ambiente NODE_EXTRA_CA_CERTS=file
ao agente de build ou adicionar a variável da tarefa NODE.EXTRA.CA.CERTS=file
no pipeline. Confira Documentação do Node.js para obter mais detalhes sobre essa variável. Confira Definir variáveis em um pipeline para obter instruções sobre como definir uma variável em seu pipeline.
Uso o TFS local e não vejo alguns desses recursos. Por que não?
Alguns desses recursos estão disponíveis apenas no Azure Pipelines e ainda não estão disponíveis localmente. Alguns recursos estarão disponíveis localmente se você tiver atualizado para a versão mais recente do TFS.