Compilar repositórios Bitbucket locais

Azure DevOps Services

Observação

Para integrar o Bitbucket Cloud ao Azure Pipelines, confira Bitbucket Cloud.

Você pode integrar seu servidor Bitbucket local ou outro servidor Git ao Azure Pipelines. Seu servidor local pode ser exposto ou não à Internet.

Se o servidor local estiver acessível nos servidores que executam o serviço do Azure Pipelines, então:

  • Você poderá configurar o build clássico e configurar gatilhos de CI.

Se seu servidor local não estiver acessível nos servidores que executam o serviço do Azure Pipelines, então:

  • Você poderá configurar pipelines de build clássicos e iniciar builds manuais.
  • você não pode configurar os gatilhos de CI

Observação

Os pipelines YAML não funcionam com repositórios Bitbucket locais.

Observação

Os gatilhos de PR não estão disponíveis com repositórios Bitbucket locais.

Se o servidor local estiver acessível por meio dos agentes hospedados, você poderá usá-los para executar builds manuais, agendados ou de CI. Caso contrário, você precisará configurar agentes auto-hospedados que possam acessar seu servidor local e buscar o código.

Acessível no Azure Pipelines

Se o servidor Bitbucket local estiver acessível no serviço Azure Pipelines, crie uma conexão de serviço Other Git e use-a para criar um pipeline. Marque a opção Tentar acessar este servidor Git do Azure Pipelines.

Os gatilhos de CI funcionam por meio de sondagem e não por meio de webhooks. Em outras palavras, o Azure Pipelines verifica periodicamente no servidor Bitbucket se há atualizações no código. Se houver, o Azure Pipelines iniciará uma nova execução.

Não acessível no Azure Pipelines

Se o servidor Bitbucket não puder ser acessado do Azure Pipelines, você terá duas opções:

  • Trabalhar com seu departamento de TI para abrir um caminho de rede entre o Azure Pipelines e o servidor Git local. Por exemplo, você pode adicionar exceções às regras de firewall para permitir que o tráfego do Azure Pipelines flua. Confira a seção sobre IPs do Azure DevOps para ver quais endereços IP você precisa permitir. Além disso, você precisa ter uma entrada DNS pública no servidor Bitbucket para que o Azure Pipelines possa resolver o FQDN do servidor para um endereço IP.

  • Você pode usar uma conexão Other Git, mas dizer ao Azure Pipelines para não tentar acessar esse servidor Git do Azure Pipelines. Os gatilhos de CI e PR não estão disponíveis com Outros Repositórios GIT. Você só pode iniciar execuções de pipeline manuais ou agendadas.

Acessível nos agentes hospedados pela Microsoft

Outra decisão que você possivelmente precisa tomar é usar agentes hospedados pela Microsoft ou agentes auto-hospedados para executar seus pipelines. Essa decisão geralmente é tomada dependendo de os agentes hospedados pela Microsoft poderem ou não acessar seu servidor. Para marcar se eles podem, crie um pipeline para usar agentes hospedados pela Microsoft e adicione uma etapa para fazer check-out do código-fonte do servidor. Se passar, você poderá continuar usando agentes hospedados pela Microsoft.

Não acessível por agentes hospedados pela Microsoft

Se o pipeline de teste simples mencionado na seção acima falhar com o erro TF401019: The Git repository with name or identifier <your repo name> does not exist or you do not have permissions for the operation you are attempting, o servidor Bitbucket não pode ser acessado nos agentes hospedados pela Microsoft. Novamente, isso provavelmente é causado por um firewall bloqueando o tráfego desses servidores. Neste caso, você tem duas opções:

  • Trabalhar com seu departamento de TI para abrir um caminho de rede entre agentes hospedados pela Microsoft e o servidor Bitbucket. Confira a seção sobre rede em agentes hospedados pela Microsoft.

  • Usar agentes auto-hospedados ou agentes de conjunto de dimensionamento. Esses agentes podem ser configurados em sua rede e, portanto, terão acesso ao servidor Bitbucket. Esses agentes exigem apenas conexões de saída com o Azure Pipelines. Não é necessário abrir um firewall para conexões de entrada. Verifique se o nome do servidor especificado ao criar a conexão de serviço é resolvível por meio dos agentes auto-hospedados.

Endereços IP do Azure DevOps

Ao usar a conexão Outro Git para configurar um pipeline clássico, desabilitar a comunicação entre o serviço Azure Pipelines e o servidor Bitbucket e usar agentes auto-hospedados para compilar código, você terá uma experiência degradada:

  • Você precisará digitar o nome do repositório manualmente durante a criação do pipeline
  • Você não poderá usar gatilhos de CI, pois o Azure Pipelines não poderá sondar alterações no código
  • Você não poderá usar gatilhos agendados com a opção de compilar somente quando houver alterações
  • Você não poderá exibir informações sobre o commit mais recente na interface do usuário

Para aprimorar essa experiência, é importante habilitar a comunicação do Azure Pipelines com o Bitbucket Server.

Para que o tráfego do Azure DevOps acesse seu Bitbucket Server, adicione os endereços IP ou as marcas de serviço especificadas em Conexões de entrada à lista de permitidos do firewall. Se você usar o ExpressRoute, inclua também os Intervalos de IP do ExpressRoute na lista de permissões do seu firewall.

Permita que o Azure Pipelines tente acessar o servidor Git na conexão de serviço Other Git.

Execuções informativas

Uma execução informativa informa que o Azure DevOps falhou ao recuperar o código-fonte de um pipeline YAML. A recuperação do código-fonte ocorre em resposta a eventos externos; por exemplo, um commit enviado por push. Também acontece em resposta a gatilhos internos; por exemplo, para verificar se há alterações de código e iniciar ou não uma execução agendada. A recuperação do código-fonte pode falhar por vários motivos. Um frequente é a limitação de solicitações pelo provedor do repositório Git. A existência de uma execução informativa não significa necessariamente que o Azure DevOps executaria o pipeline.

Uma execução informativa é semelhante à captura de tela a seguir.

Screenshot of an informational pipeline run.

Você pode reconhecer uma execução informativa pelos seguintes atributos:

  • O status é Canceled
  • A duração é < 1s
  • O nome da execução contém um dos seguintes textos:
    • Could not retrieve file content for {file_path} from repository {repo_name} hosted on {host} using commit {commit_sha}.
    • Could not retrieve content for object {commit_sha} from repository {repo_name} hosted on {host}.
    • Could not retrieve the tree object {tree_sha} from the repository {repo_name} hosted on {host}.
    • Could not find {file_path} from repository {repo_name} hosted on {host} using version {commit_sha}. One of the directories in the path contains too many files or subdirectories.
  • O nome da execução geralmente contém o erro do BitBucket/GitHub que causou falha na carga do pipeline YAML
  • Sem estágios/trabalhos/etapas

Saiba mais sobre execuções informativas.

Limitações

O Azure Pipelines carrega um máximo de 2000 ramificações de um repositório nas listas suspensas no Portal de Devops do Azure, por exemplo, na configuração Ramificação padrão para compilações manuais e agendadas ou ao escolher uma ramificação ao executar um pipeline manualmente. Se você não vir a ramificação desejada na lista, digite o nome da ramificação desejada manualmente.

Perguntas frequentes

Os problemas relacionados à integração do Bitbucket Server se enquadram nas seguintes categorias:

  • Gatilhos com falha: meu pipeline não está sendo disparado quando efetuo o push de uma atualização para o repositório.
  • Check-out com falha: meu pipeline está sendo disparado, mas ele falha na etapa de check-out.

Gatilhos com falha

Enviei uma alteração por push ao meu servidor, mas o pipeline não está sendo disparado.

Siga cada uma destas etapas para solucionar problemas dos gatilhos com falha:

  • O servidor Bitbucket está acessível no Azure Pipelines? O Azure Pipelines sonda periodicamente o servidor Bitbucket em busca de alterações. Se o servidor Bitbucket estiver atrás de um firewall, é possível que esse tráfego não chegue ao servidor. Para obter mais informações, consulte Endereços de IP do Azure DevOps e verifique se você concedeu exceções a todos os endereços de IP necessários. Esses endereços de IP podem ter sido alterados, pois você configurou originalmente as regras de exceção. Você só poderá iniciar as execuções manuais se tiver usado uma conexão Git externa e se o servidor não estiver acessível no Azure Pipelines.

  • Seu pipeline está em pausa ou desabilitado? Abra o editor do pipeline e selecione Configurações para verificar. Se o pipeline estiver em pausa ou desabilitado, os gatilhos não funcionarão.

  • Você excluiu os branches ou caminhos para os quais efetuou push das alterações? Teste enviando uma alteração por push para um caminho incluído em um branch incluído. Observe que os caminhos nos gatilhos diferenciam maiúsculas de minúsculas. Use a mesma formatação de maiúsculas e minúsculas que as pastas reais ao especificar os caminhos nos gatilhos.

Não enviei atualizações por push ao meu código. No entanto, o pipeline ainda está sendo disparado.

  • O gatilho de integração contínua do Bitbucket funciona por meio de sondagem. Após cada intervalo de sondagem, o Azure Pipelines tenta entrar em contato com o servidor Bitbucket para verificar se houve alguma atualização no código. Se o Azure Pipelines não conseguir acessar o servidor Bitbucket (possivelmente devido a um problema de rede), iniciaremos uma nova execução de qualquer maneira, supondo que possa ter havido alterações de código. Quando o Azure Pipelines não puder recuperar o código de um pipeline YAML, ele criará uma execução informativa.

Check-out com falha

Quando tento iniciar uma nova execução manualmente, há um atraso de 4 a 8 minutos antes de começar.

  • Seu servidor Bitbucket não está acessível no Azure Pipelines. Verifique se você não selecionou a opção Tentar acessar esse servidor Git do Azure Pipelines na conexão de serviço do Bitbucket. Se essa opção estiver selecionada, o Azure Pipelines tentará entrar em contato com o servidor e, como o servidor está inacessível, ele eventualmente alcançará o tempo limite e iniciará a execução de qualquer maneira. Desmarcar essa opção acelera suas execuções manuais.

A etapa de check-out falha com o erro de que o servidor não pode ser resolvido.

Você usa agentes hospedados pela Microsoft? Nesse caso, é possível que esses agentes não consigam acessar o servidor Bitbucket. Confira Não acessível de agentes hospedados pela Microsoft para obter mais informações.