Compartilhar via


Executar comandos do Git em scripts de pipeline

Azure DevOps Services | Servidor Azure DevOps | Azure DevOps Server 2022 | Azure DevOps Server 2020

Os comandos git estão disponíveis para criar fluxos de trabalho em agentes hospedados pela Microsoft e auto-hospedados . Por exemplo, depois que um build de CI (integração contínua) for concluído em um branch de recursos, você poderá mesclar o branch com o principal. Este artigo explica como executar comandos Git em scripts de build do Azure Pipelines.

Habilitar scripts para executar comandos do Git

Verifique se o GitHub usa a identidade padrão da sua conta do Azure DevOps. Se necessário, defina o usuário do GitHub como a primeira etapa após o check-out.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Conceder permissões ao serviço de build

O serviço de build do projeto deve ter permissões para gravar no repositório de origem. Defina as permissões necessárias da seguinte maneira:

  1. Nas Configurações do Projeto do projeto, selecione Repositórios em Repositórios.

  2. Na página Todos os repositórios , selecione Segurança para definir permissões para todos os repositórios no projeto. Ou selecione o repositório no qual você deseja executar os comandos do Git e selecione Segurança na página desse repositório.

    Sreenshot que mostra a seleção de Segurança para repositórios.

  3. Na página Permissões de usuário , selecione a identidade do Serviço de Build . Selecione <o nome> do projeto Build Service (<organização>) em Usuários, não contas de serviço de build de coleção de projetos. Por padrão, essa identidade pode ler do repositório, mas não pode enviar alterações por push a ela.

  4. Solte a lista e selecione Permitir ao lado de cada permissão necessária para os comandos do Git que você deseja executar, normalmente Criar branch, Contribuir, Ler e Criar marca.

    Captura de tela que mostra a concessão das permissões de identidade para repositórios.

Permitir que os scripts acessem o token do sistema

Para permitir que os scripts acessem o token OAuth do GitHub:

Adicione uma checkout etapa ao pipeline do YAML com persistCredentials definido como true.

steps:
- checkout: self
  persistCredentials: true

Para obter mais informações sobre a checkout etapa, consulte a steps.checkout definição.

Limpar o repositório local

O pipeline de build não limpa automaticamente determinadas alterações no repositório local, como excluir branches locais ou desfazer alterações locais git config . Se você tiver problemas usando um agente auto-hospedado, poderá limpar o repositório antes de executar o build.

Em geral, para um desempenho mais rápido de agentes auto-hospedados, não limpe o repositório. A limpeza não é eficaz para agentes hospedados pela Microsoft, pois eles usam um novo agente a cada vez. Para obter mais informações, consulte Limpar o repositório local no agente.

Para limpar o repositório antes de executar o build:

Definido clean como true na checkout etapa. Essa opção é executada git clean -ffdx seguida pela git reset --hard HEAD busca.

steps:
- checkout: self
  clean: true

Selecione Variáveis no editor de pipeline, crie ou modifique a Build.Clean variável e defina seu valor como source.

Exemplos de comando do Git

Os exemplos a seguir executam comandos Git em uma tarefa de linha de comando e uma tarefa de script do Lote .

Listar os arquivos em seu repositório

Para listar os arquivos no repositório Git, use a tarefa de linha de comando em um pipeline YAML da seguinte maneira:

- task: CmdLine@2
  inputs:
    script: 'git ls-files'

Mesclar um branch de recursos com o principal

O exemplo de pipeline clássico a seguir mescla um build de CI para main se o build for bem-sucedido.

  1. Crie um arquivo chamado merge.bat na raiz do repositório com o seguinte conteúdo:

    @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
    
  2. Na guia Gatilhos no pipeline Clássico, marque a caixa de seleção para habilitar a integração contínua.

  3. Em filtros branch e filtros de caminho, selecione branches e caminhos para Incluir ou Excluir do build.

  4. Adicione um script do Lote como a última tarefa em seu pipeline.

  5. Em Caminho na configuração da tarefa, insira o local e o nome do arquivo 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, você poderá executar comandos do Git se o repositório remoto estiver no GitHub ou em outro serviço Git, como o Bitbucket Cloud.

Quais tarefas posso usar para executar comandos do Git?

Você pode usar as seguintes tarefas do Azure Pipelines para executar comandos do Git:

Como posso evitar disparar um build de CI quando o script é enviado por push?

Para evitar disparar um build de CI quando o script for enviado por push, adicione [skip ci] à sua mensagem de confirmação ou descrição. Por exemplo:

  • 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 das seguintes variações para confirmações no Azure Repos Git, Bitbucket Cloud, GitHub ou 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***

Preciso de um agente para executar pipelines?

Sim, você precisa de pelo menos um agente para executar o pipeline de build ou lançamento.

Como posso solucionar problemas?

Consulte Solucionar problemas de execuções de pipeline.

Como posso corrigir não conseguir selecionar um pool de agentes padrão ou enfileirar minha execução de pipeline?

Consulte Criar e gerenciar pools de agentes.

Como posso corrigir a falha da tarefa de push do NuGet com "Erro: não é possível obter o certificado do emissor local"?

Você pode corrigir esse problema adicionando um certificado raiz confiável. Adicione a NODE_EXTRA_CA_CERTS=file variável de ambiente ao agente de build ou adicione a NODE.EXTRA.CA.CERTS=file variável de tarefa no pipeline.

Para obter mais informações sobre essa variável, consulte NODE_EXTRA_CA_CERTS=file na documentação do Node.js. Para obter instruções sobre como definir uma variável em seu pipeline, consulte Definir variáveis em um pipeline.

Por que não vejo alguns desses recursos no servidor do Azure DevOps local?

Alguns desses recursos estão disponíveis apenas no Azure DevOps Services e não estão disponíveis para o Servidor do Azure DevOps local. Alguns recursos estão disponíveis apenas na versão mais recente do Azure DevOps Server.