Resolução de erro de permissão ao fazer push de artefatos de build no Azure DevOps Pipelines

Durante a execução de pipelines de build no Azure DevOps, pode ser necessário fazer push de arquvios gerados de volta para o repositório Git. Um erro comum é o seguinte:

remote: 001f# service=git-receive-pack
remote: 0000000000aaTF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\8b517d3f-052b-41e0-a7f6-e811999734c0', scope 'repository'.
remote: TF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\8b517d3f-052b-41e0-a7f6-e811999734c0', scope 'repository'.
fatal: unable to access 'https://dev.azure.com/organizacao/projeto/_git/repositorio/': The requested URL returned error: 403

Esse erro indica que a identidade de serviço do build não possui permissão para contribuir no repositório. A seguir, as etapas para resolver o problema.

Pré‑requisito: configurar identidade local do Git

Antes de qualquer comando Git no pipeline, certifique‑se de definir o usuário e email globais:

git config --global user.email "seuemail@exemplo.com"
git config --global user.name "Seu Nome"

1. Conceder permissões à conta de serviço do build

No Azure DevOps, a identidade Project Collection Build Service (não o grupo) precisa de permissões de escrita no repositório.

  1. Vá para Organziation Settings > General > Projects e selecione o projeto.
  2. Em Project Settings, escolha Repositories e depois o repositório desejado.
  3. Selecione Security.
  4. Pesquise por Project Collection Build Service ({nome da organização}).
  5. Conceda as permissões mínimas necessárias, normalmente:
    • Create Branch: Allow
    • Contribute: Allow
    • Read: Allow
    • Create Tag: Allow

2. Permitir que o script acesse o token do sistema

No pipeline, ao fazer checkout, é necessário persistir as credenciais para que comandos Git posteriores funcionem.

YAML

steps:
- checkout: self
  persistCredentials: true

Para pipelines clássicos, marque a opção Allow scripts to access the OAuth token nas configurações do job.

3. Garantir que o repositório local esteja limpo

O pipeline pode deixar alterações residuais. Para evitar conflitos, configure a limpeza:

YAML

steps:
- checkout: self
  clean: true

Em pipelines clássicos, ative a opção Clean na tarefa de checkout.

Essas configurações garantem que a identidade de build tenha permissão e ambiente adequados para executar push de artefatos ou outros comandos Git.

Tags: azure-devops pipelines Git Permissions YAML

Publicado em 9-22 21:27