Share via


Crie repositórios Bitbucket locais

Serviços de DevOps do Azure

Nota

Para integrar o Bitbucket Cloud com o Azure Pipelines, consulte Bitbucket Cloud.

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

Se o seu servidor local estiver acessível a partir dos servidores que executam o serviço Azure Pipelines, então:

  • você pode configurar a compilação clássica e configurar gatilhos de CI

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

  • Você pode configurar pipelines de compilação clássicos e iniciar compilações manuais
  • não é possível configurar gatilhos de CI

Nota

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

Nota

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

Se o servidor local estiver acessível a partir dos agentes hospedados, você poderá usá-los para executar compilações manuais, agendadas ou de CI. Caso contrário, você deve configurar agentes auto-hospedados que possam acessar seu servidor local e buscar o código.

Acessível a partir do Azure Pipelines

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

Os gatilhos de IC funcionam através de sondagens e não através de webhooks. Em outras palavras, o Azure Pipelines verifica periodicamente o servidor Bitbucket se houver atualizações no código. Se houver, o Azure Pipelines iniciará uma nova execução.

Não acessível a partir dos Pipelines do Azure

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

  • Trabalhe 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 suas regras de firewall para permitir que o tráfego dos Pipelines do Azure flua. Consulte a seção sobre IPs de DevOps do Azure para ver quais endereços IP você precisa permitir. Além disso, você precisa ter uma entrada DNS pública para o servidor Bitbucket para que o Azure Pipelines possa resolver o FQDN do seu servidor para um endereço IP.

  • Você pode usar uma conexão Outro Git, mas diga ao Azure Pipelines para não tentar acessar esse servidor Git a partir 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 a partir de agentes hospedados pela Microsoft

Outra decisão que você possivelmente terá que tomar é usar agentes hospedados pela Microsoft ou agentes auto-hospedados para executar seus pipelines. Essa escolha geralmente depende se os agentes hospedados pela Microsoft podem acessar seu servidor. Para verificar se eles podem, crie um pipeline para usar agentes hospedados pela Microsoft e certifique-se de adicionar uma etapa para fazer check-out do código-fonte do seu servidor. Se isso passar, você poderá continuar usando agentes hospedados pela Microsoft.

Não acessível a partir de 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 poderá ser acessado a partir de agentes hospedados pela Microsoft. Isso é provavelmente causado por um firewall bloqueando o tráfego desses servidores. Neste caso, tem duas opções:

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

  • Mude para o uso de agentes auto-hospedados ou agentes de scale-set. Esses agentes podem ser configurados dentro da 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 há necessidade de abrir um firewall para conexões de entrada. Certifique-se de que o nome do servidor especificado ao criar a conexão de serviço possa ser resolvido a partir dos agentes auto-hospedados.

Endereços IP do Azure DevOps

Quando você usa Outra conexão Git para configurar um pipeline clássico, desabilita a comunicação entre o serviço Azure Pipelines e o servidor Bitbucket e usa agentes autohospedados para criar código, você obtém uma experiência degradada:

  • Você precisa digitar o nome do repositório manualmente durante a criação do pipeline
  • Você não pode usar gatilhos de CI, pois os Pipelines do Azure não poderão pesquisar alterações no código
  • Você não pode usar gatilhos agendados com a opção de criar somente quando houver alterações
  • Não é possível visualizar informações sobre a confirmação mais recente na interface do usuário

Se você quiser aprimorar essa experiência, é importante habilitar a comunicação do Azure Pipelines para o Bitbucket Server.

Para permitir que o tráfego do Azure DevOps chegue ao seu Bitbucket Server, adicione os endereços IP ou tags de serviço especificados em Conexões de entrada à lista de permissões do firewall. Se você usa a Rota Expressa, certifique-se de incluir também os intervalos de IP da Rota Expressa na lista de permissões do firewall.

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

Execuções informativas

Uma execução informativa informa que o Azure DevOps não conseguiu recuperar o código-fonte de um pipeline YAML. A recuperação do código-fonte acontece em resposta a eventos externos, por exemplo, uma confirmação enviada. Isso também acontece em resposta a gatilhos internos, por exemplo, para verificar se há alterações de código e iniciar uma execução agendada ou não. A recuperação do código-fonte pode falhar por vários motivos, sendo um deles 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 iria executar o pipeline.

Uma execução informativa se parece com a captura de tela a seguir.

Screenshot of an informational pipeline run.

Você pode reconhecer uma execução informacional 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 BitBucket / GitHub que causou a falha na carga do pipeline YAML
  • Sem etapas / 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 em 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.

FAQ

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

Gatilhos com falha

Eu empurrei uma alteração para o meu servidor, mas o pipeline não está sendo acionado.

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

  • O seu servidor Bitbucket está acessível a partir do Azure Pipelines? O Azure Pipelines sonda periodicamente o servidor Bitbucket em busca de alterações. Se o servidor Bitbucket estiver protegido por um firewall, esse tráfego pode não chegar ao seu servidor. Para obter mais informações, consulte Endereços IP do Azure DevOps e verifique se você concedeu exceções a todos os endereços IP necessários. Esses endereços IP podem ter sido alterados desde que você configurou originalmente as regras de exceção. Só pode iniciar execuções manuais se tiver utilizado uma ligação Git externa e se o seu servidor não estiver acessível a partir dos Pipelines do Azure.

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

  • Excluiu os ramos ou caminhos para os quais empurrou as suas mudanças? Teste empurrando uma alteração para um caminho incluído em uma ramificação incluída. Observe que os caminhos nos gatilhos diferenciam maiúsculas de minúsculas. Certifique-se de usar o mesmo caso que os de pastas reais ao especificar os caminhos em gatilhos.

Eu não enviei nenhuma atualização para o meu código, no entanto, o pipeline ainda está sendo acionado.

  • O gatilho de integração contínua para Bitbucket funciona através de sondagem. Após cada intervalo de sondagem, o Azure Pipelines tenta entrar em contato com o servidor Bitbucket para verificar se houve atualizações 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.

Falha no checkout

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

  • O seu servidor Bitbucket não está acessível a partir dos Pipelines do Azure. Certifique-se de que não selecionou a opção para tentar aceder a este servidor Git a partir do Azure Pipelines na ligação do serviço Bitbucket. Se essa opção for selecionada, o Azure Pipelines tentará entrar em contato com seu servidor e, como seu servidor está inacessível, ele eventualmente expira e inicia 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? Em caso afirmativo, esses agentes podem não conseguir alcançar seu servidor Bitbucket. Consulte Não acessível a partir de agentes hospedados pela Microsoft para obter mais informações.