Compartir a través de


Compilación de repositorios de Bitbucket locales

Azure DevOps Services

Nota:

Para integrar Bitbucket Cloud con Azure Pipelines, consulte Bitbucket Cloud.

Puede integrar el servidor de Bitbucket local u otro servidor Git con Azure Pipelines. Es posible que el servidor local esté expuesto a Internet o que no sea así.

Si se puede acceder al servidor local desde los servidores que ejecutan el servicio Azure Pipelines, entonces:

  • puede configurar la compilación clásica y desencadenadores de CI

Si no se puede acceder al servidor local desde los servidores que ejecutan el servicio Azure Pipelines:

  • puede configurar canalizaciones de compilación clásicas e iniciar compilaciones manuales
  • no puede configurar desencadenadores de CI

Nota:

Las canalizaciones de YAML no funcionan con repositorios de Bitbucket locales.

Nota:

Los desencadenadores de PR no están disponibles con repositorios de Bitbucket locales.

Si el servidor local es accesible desde los agentes hospedados, puede usarlos para ejecutar compilaciones manuales, programadas o de CI. De lo contrario, deberá configurar agentes autohospedados que puedan acceder al servidor local y capturar el código.

Accesible desde Azure Pipelines

Si el servidor de Bitbucket local es accesible desde el servicio Azure Pipelines, cree una conexión de servicio Otro Git y úsela para crear una canalización. Active la opción Intentar acceder a este servidor Git desde Azure Pipelines.

Los desencadenadores de CI funcionan a través del sondeo y no a través de webhooks. En otras palabras, Azure Pipelines comprueba periódicamente el servidor de Bitbucket para ver si hay actualizaciones en el código. Si hay, Azure Pipelines inicia una nueva ejecución.

No accesible desde Azure Pipelines

Si no se puede acceder al servidor de Bitbucket desde Azure Pipelines, tiene dos opciones:

  • Trabaje con el departamento de TI para abrir una ruta de acceso de red entre Azure Pipelines y el servidor Git local. Por ejemplo, puede agregar excepciones a las reglas de firewall para permitir que fluya el tráfico de Azure Pipelines. Consulte la sección sobre direcciones IP de Azure DevOps para ver qué direcciones IP debe permitir. Además, debe tener una entrada DNS pública para el servidor de Bitbucket para que Azure Pipelines pueda resolver el FQDN del servidor en una dirección IP.

  • Puede usar otra conexión Otro Git pero indicar a Azure Pipelines que no intente acceder a este servidor Git desde Azure Pipelines. Los desencadenadores de CI y PR no están disponibles con otros repositorios de Git. Solo puede iniciar ejecuciones de canalización manuales o programadas.

Accesible desde agentes hospedados por Microsoft

Otra decisión que posiblemente tiene que tomar es si usar agentes hospedados por Microsoft o agentes autohospedados para ejecutar las canalizaciones. A menudo, esta opción depende de si los agentes hospedados por Microsoft pueden acceder al servidor. Para comprobar si pueden, cree una canalización para usar agentes hospedados por Microsoft y asegúrese de agregar un paso para comprobar el código fuente del servidor. Si es correcto, puede seguir usando agentes hospedados por Microsoft.

No se puede acceder desde agentes hospedados por Microsoft

Si se produce un error en la canalización de prueba simple mencionada en la sección anterior con el mensaje 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, no se puede acceder al servidor de Bitbucket desde agentes hospedados por Microsoft. De nuevo, probablemente se deba a que hay un firewall que bloquea el tráfico de estos servidores. Tiene dos opciones en este caso:

  • Trabaje con el departamento de TI para abrir una ruta de acceso de red entre agentes hospedados por Microsoft y el servidor de Bitbucket. Consulte la sección sobre redes en los agentes hospedados por Microsoft.

  • Empiece a usar agentes autohospedados o agentes de conjunto de escalado. Estos agentes se pueden configurar dentro de la red y, por tanto, tendrán acceso al servidor de Bitbucket. Estos agentes solo requieren conexiones salientes a Azure Pipelines. No es necesario abrir un firewall para las conexiones entrantes. Asegúrese de que el nombre del servidor especificado al crear la conexión de servicio se pueda resolver desde los agentes autohospedados.

Direcciones IP de Azure DevOps

Cuando use una conexión Otro Git para configurar una canalización clásica, deshabilite la comunicación entre el servicio Azure Pipelines y el servidor de Bitbucket y use agentes autohospedados para compilar código, obtendrá una experiencia degradada:

  • Debe escribir el nombre del repositorio manualmente durante la creación de la canalización.
  • No puede usar desencadenadores de CI, ya que Azure Pipelines no podrá sondear los cambios en el código.
  • No puede usar desencadenadores programados con la opción de compilar solo cuando hay cambios.
  • No puede ver información sobre la confirmación más reciente en la interfaz de usuario.

Si desea mejorar esta experiencia, es importante habilitar la comunicación desde Azure Pipelines al servidor de Bitbucket.

Para permitir que el tráfico de Azure DevOps llegue al servidor de Bitbucket, agregue las direcciones IP o las etiquetas de servicio especificadas en Conexiones entrantes a la lista de permitidos del firewall. Si usa ExpressRoute, asegúrese de incluir también intervalos IP de ExpressRoute en la lista de permitidos del firewall.

Permita que Azure Pipelines intente acceder al servidor Git en la conexión del servicio Otro Git .

Ejecuciones informativas

Una ejecución informativa indica que Azure DevOps no pudo recuperar el código fuente de una canalización YAML. La recuperación del código fuente se produce en respuesta a eventos externos, por ejemplo, una confirmación insertada. También ocurre en respuesta a los desencadenadores internos, por ejemplo, para comprobar si hay cambios en el código e iniciar una ejecución programada o no. La recuperación del código fuente puede producir un error por varias razones, siendo una de las más frecuentes la limitación de solicitudes por parte del proveedor del repositorio de Git. La existencia de una ejecución informativa no significa necesariamente que Azure DevOps vaya a ejecutar la canalización.

Una ejecución informativa es similar a la de la captura de pantalla siguiente.

Screenshot of an informational pipeline run.

Puede reconocer una ejecución informativa por los atributos siguientes:

  • El estado es Canceled.
  • La duración es < 1s.
  • El nombre de la ejecución contiene uno de los siguientes 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.
  • El nombre de la ejecución contiene generalmente el error de BitBucket o GitHub que hizo que no se pudiera cargar la canalización de YAML.
  • Sin fases, trabajos o pasos

Más información sobre las ejecuciones informativas.

Limitaciones

Azure Pipelines carga un máximo de 2000 ramas de un repositorio en listas desplegables del Portal de Azure Devops, por ejemplo, en la rama Predeterminada para la configuración de compilaciones manuales y programadas, o al elegir una rama al ejecutar una canalización manualmente. Si no ve la rama deseada en la lista, escriba manualmente el nombre de la rama deseada.

Preguntas más frecuentes

Los problemas relacionados con la integración del servidor Bitbucket se dividen en las siguientes categorías:

Desencadenadores con errores

Inserté un cambio en mi servidor, pero la canalización no se desencadena.

Siga cada uno de estos pasos para solucionar problemas relacionados con los desencadenadores con errores:

  • ¿Es accesible el servidor de Bitbucket desde Azure Pipelines? Azure Pipelines sondea periódicamente el servidor de Bitbucket en busca de cambios. Si el servidor de Bitbucket está detrás de un firewall, es posible que este tráfico no llegue al servidor. Para obtener más información, consulte Direcciones IP de Azure DevOps y compruebe que haya concedido excepciones a todas las direcciones IP necesarias. Estas direcciones IP pueden haber cambiado desde que configuró al principio las reglas de excepción. Solo puede iniciar ejecuciones manuales si usó una conexión de Git externa y si el servidor no es accesible desde Azure Pipelines.

  • ¿La canalización está en pausa o deshabilitada? Abra el editor de la canalización y seleccione Configuración para comprobarlo. Si la canalización está en pausa o deshabilitada, los desencadenadores no funcionarán.

  • ¿Ha excluido las ramas o rutas de acceso en las que insertó los cambios? Para comprobarlo, inserte un cambio en una ruta de acceso incluida en una rama incluida. Tenga en cuenta que las rutas de acceso de los desencadenadores distinguen mayúsculas de minúsculas. Asegúrese de usar las mismas mayúsculas o minúsculas que en las carpetas reales al especificar las rutas de acceso en los desencadenadores.

No inserté ninguna actualización en el código, pero la canalización aún se está desencadenando.

  • El desencadenador de integración continua para Bitbucket funciona a través de un sondeo. Después de cada intervalo de sondeo, Azure Pipelines intenta ponerse en contacto con el servidor de Bitbucket para comprobar si se han producido actualizaciones en el código. Si Azure Pipelines no puede acceder al servidor de Bitbucket (posiblemente debido a un problema de red), se iniciará una nueva ejecución de todos modos asumiendo que podría haber habido cambios en el código. Cuando Azure Pipelines no puede recuperar el código de una canalización de YAML, creará una ejecución informativa.

Error en la restauración

Cuando intento iniciar una nueva ejecución manualmente, hay un retraso de 4 a 8 minutos hasta que se inicia.

  • El servidor de Bitbucket no es accesible desde Azure Pipelines. Asegúrese de que no ha seleccionado la opción Intentar acceder a este servidor Git desde Azure Pipelines en la conexión del servicio Bitbucket. Si se selecciona esa opción, Azure Pipelines intentará ponerse en contacto con el servidor y, dado que el servidor no es accesible, finalmente se agota el tiempo de espera y se inicia la ejecución de todos modos. Al desactivar esa opción, se aceleran las ejecuciones manuales.

Se produce un error en el paso de restauración y no se puede resolver el servidor.

¿Usa agentes hospedados por Microsoft? Si es así, es posible que estos agentes no puedan acceder al servidor de Bitbucket. Consulte No se puede acceder desde agentes hospedados por Microsoft para obtener más información.