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

  1. Acesse a página de configurações do projeto da sua organização em Configurações da Organização>Geral>Projetos.

    Selecione as configurações da sua organização.

  2. Selecione o projeto que deseja editar.

    Selecione seu projeto.

  3. Em Configurações do Projeto, selecione Repositórios. Selecione o repositório no qual você deseja executar comandos do Git.

  4. Selecione Segurança para editar a segurança do repositório.

    Escolha Segurança para editar a segurança do repositório.

  5. 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

gerenciar projeto

Se você essa página for exibida, selecione o repositório e, em seguida, selecione o link:

painel de controle superior ao projeto

guia controle de versão do projeto do painel de controle

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.

permissões

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

Adicione uma seção checkout com persistCredentials definido como true.

steps:
- checkout: self
  persistCredentials: true

Saiba mais sobre checkout.

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:

Verifique se checkout tem clean definido como true.

steps:
- checkout: self
  clean: true

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?

Script de lote

Linha de comando

PowerShell

Script de shell

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 ou skip-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.