Uso de Azure Pipelines para compilar e insertar imágenes de contenedor en registros
Artículo
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Este artículo le guía por la configuración y la configuración para usar Azure Pipelines para compilar e insertar una imagen de Docker en una instancia de Azure Container Registry, Docker Hub y Google Artifact Registry. Además, detalla el uso de para System.AccessToken la autenticación segura dentro de la canalización.
Este artículo le guía a través de la configuración y configuración para usar Azure Pipelines para compilar e insertar una imagen de Docker en un Docker Hub y en el Registro de artefactos de Google. Además, detalla el uso de para System.AccessToken la autenticación segura dentro de la canalización.
Aprenderá a crear una canalización YAML para compilar e insertar una imagen de Docker en un registro de contenedor. La tarea Docker@2 se usa para compilar e insertar la imagen en el registro de contenedor.
Requisitos previos
Un proyecto de Azure DevOps.
Un registro de contenedor (Docker Hub, Google Artifact Registry o Azure Container Registry).
Un repositorio de GitHub con un Dockerfile. Si no tiene una, puede usar el repositorio de ejemplo En el explorador, vaya al repositorio de ejemplo y, a continuación, bifurquelo a la cuenta de GitHub.
Docker. Si usa un agente autohospedado, asegúrese de que Docker está instalado y del motor de Docker que se ejecuta con privilegios elevados. Los agentes hospedados por Microsoft tienen Docker preinstalado.
Un proyecto de Azure DevOps.
Un registro de contenedor (Docker Hub o Google Artifact Registry).
Un repositorio de GitHub con un Dockerfile. Si no tiene una, puede usar el repositorio de ejemplo En el explorador, vaya al repositorio de ejemplo y, a continuación, bifurquelo a la cuenta de GitHub.
Docker. Si usa un agente autohospedado, asegúrese de que Docker está instalado y del motor de Docker que se ejecuta con privilegios elevados. Los agentes hospedados por Microsoft tienen Docker preinstalado.
Creación de una conexión de servicio de Docker
Antes de insertar imágenes de contenedor en un registro, debe crear una conexión de servicio en Azure DevOps. Esta conexión de servicio almacena las credenciales necesarias para autenticarse de forma segura con el registro de contenedor. Vaya a la página Conexiones de servicio del proyecto de Azure DevOps para crear una nueva conexión de servicio y seleccione el tipo de conexión del Registro de Docker.
Hay diferentes procesos para crear una conexión de servicio para un Docker Hub y un Registro de artefactos de Google.
Elija la opción Azure Container Registry en Conexión del servicio de registro de Docker y proporcione la información necesaria para el método de autenticación que elija.
También puede crear la canalización mediante la plantilla de Docker para compilar e insertar una imagen en Azure Container Registry. Esta plantilla crea automáticamente una conexión de servicio y una canalización de YAML. Para más información, consulte Uso de Docker YAML para compilar e insertar imágenes en Azure Container Registry.
No se admite la inserción de una imagen de Docker en Azure Container Registry en Azure DevOps Server.
Para crear una conexión de servicio de Docker asociada al Registro de artefactos de Google:
Abra el proyecto en la consola de Google Cloud Platform (GCP) y, a continuación, abra Cloud Shell.
Para ahorrar tiempo al escribir el identificador del proyecto y las opciones de zona del motor de proceso, establezca los valores de configuración predeterminados mediante la ejecución de los siguientes comandos:
gcloud config set project [PROJECT_NAME]
gcloud config set compute/zone [ZONE]
Reemplace [PROJECT_NAME] por el nombre del proyecto de GCP y reemplace [ZONE] por el nombre de la zona que va a usar para crear recursos. Si no está seguro de qué zona elegir, use us-central1-a. Por ejemplo:
gcloud config set project azure-pipelines-test-project-12345
gcloud config set compute/zone us-central1-a
Habilite la API del Registro de artefactos para el proyecto:
La tarea Docker@2 está diseñada para simplificar el proceso de creación, inserción y administración de imágenes de Docker en Azure Pipelines. Esta tarea admite una amplia gama de comandos de Docker, como compilación, inserción, inicio de sesión, cierre de sesión, inicio, detención y ejecución.
En los pasos siguientes se describe cómo crear una canalización YAML que use la tarea Docker@2 para compilar e insertar la imagen.
Vaya al proyecto de Azure DevOps y seleccione Canalizaciones en el menú izquierdo.
Seleccione Nueva canalización para crear una nueva canalización.
Seleccione GitHub o GitHub Enterprise Server como ubicación para el código fuente.
Si aún no lo ha hecho, autorice a Azure Pipelines a conectarse a su cuenta de Servidor de GitHub Enterprise.
Seleccione Conexión al servidor de GitHub Enterprise.
Escriba los detalles de la cuenta y, a continuación, seleccione Comprobar y guardar.
Seleccione el repositorio.
Si se le redirige a GitHub
Seleccione la plantilla De canalización de inicio para crear una configuración básica de canalización.
Reemplace el contenido de la clase azure-pipelines.yml por el código siguiente.
En función de si va a implementar una aplicación de Linux o Windows, asegúrese de establecer vmImage en ubuntu-latest o windows-latest. Si usa un agente autohospedado, establezca vmImage en el nombre del grupo que contiene el agente autohospedado con la funcionalidad de Docker. Puede agregar la demands: docker propiedad para asegurarse de que está seleccionado un agente con Docker instalado.
Reemplace <docker connection> por el nombre de la conexión del servicio Docker que creó anteriormente.
Reemplace <target repository name> por el nombre del repositorio en el registro de contenedor donde desea insertar la imagen. Por ejemplo, <your-docker-hub-username>/<repository-name>.
Cuando haya terminado, seleccione Guardar y ejecutar.
Al guardar el archivo azure-pipelines.yml en el repositorio, se le pedirá que agregue un mensaje de confirmación. Escriba un mensaje y, a continuación, seleccione Guardar y ejecutar.
Al usar agentes autohospedados, asegúrese de que Docker está instalado en el host del agente y el motor o demonio de Docker se ejecuta con privilegios elevados.
Para crear la imagen, Docker debe estar instalado en el host del agente y el motor o demonio de Docker debe ejecutarse con privilegios elevados. Siga estos pasos para crear la canalización mediante el editor de canalizaciones de YAML.
Vaya a la colección y cree un proyecto.
En el proyecto, seleccione Canalizaciones.
Seleccione Crear canalización.
Seleccione Servidor de GitHub Enterprise como ubicación del código fuente.
Si aún no lo ha hecho, autorice a Azure Pipelines a conectarse a su cuenta de Servidor de GitHub Enterprise.
Seleccione Conexión al servidor de GitHub Enterprise.
Escriba los detalles de la cuenta y, a continuación, seleccione Comprobar y guardar.
Seleccione el repositorio.
Si se le redirige a GitHub para instalar la aplicación de Azure Pipelines, seleccione Aprobar e instalar.
Para configurar la canalización, seleccione la plantilla Crear una imagen de Docker.
En el editor de canalizaciones de YAML, reemplace el contenido del archivo YAML por el código siguiente. Reemplace el nombre del grupo por el nombre del grupo que contiene el agente autohospedado por la funcionalidad de Docker.
En función de si va a implementar una aplicación de Linux o Windows, asegúrese de establecer vmImage en ubuntu-latest o windows-latest.
Reemplace <target repository name> por el nombre del repositorio en el registro de contenedor donde desea insertar la imagen. Por ejemplo, <your-docker-hub-username>/<repository-name>.
Reemplace <docker connection> por el nombre de la conexión del servicio Docker que creó anteriormente.
La tarea Docker@2 se usa para compilar e insertar la imagen en el registro de contenedor.
La tarea Docker@2 está diseñada para simplificar el proceso de creación, inserción y administración de imágenes de Docker en Azure Pipelines. Esta tarea admite una amplia gama de comandos de Docker, como compilación, inserción, inicio de sesión, cierre de sesión, inicio, detención y ejecución.
En los pasos siguientes se describe cómo crear una canalización YAML que use la tarea Docker@2 para compilar e insertar la imagen.
Vaya al proyecto de Azure DevOps y seleccione Canalizaciones en el menú izquierdo.
Seleccione Nueva canalización para crear una nueva canalización.
Seleccione GitHub o GitHub Enterprise Server como ubicación para el código fuente.
Si aún no lo ha hecho, autorice a Azure Pipelines a conectarse a su cuenta de Servidor de GitHub Enterprise.
Seleccione Conexión al servidor de GitHub Enterprise.
Escriba los detalles de la cuenta y, a continuación, seleccione Comprobar y guardar.
Seleccione el repositorio.
Seleccione la plantilla De canalización de inicio para crear una configuración básica de canalización.
Reemplace el contenido de la clase azure-pipelines.yml por el código siguiente.
En función de si va a implementar una aplicación de Linux o Windows, asegúrese de establecer vmImage en ubuntu-latest o windows-latest. Si usa un agente autohospedado, establezca vmImage en el nombre del grupo que contiene el agente autohospedado con la funcionalidad de Docker. Puede agregar la demands: docker propiedad para asegurarse de que está seleccionado un agente con Docker instalado.
Reemplace <docker connection> por el nombre de la conexión del servicio Docker que creó anteriormente.
Reemplace <target repository name> por el nombre del repositorio en el registro de contenedor donde desea insertar la imagen. Por ejemplo, myregistry.azurecr.io/myimage.
Cuando haya terminado, seleccione Guardar y ejecutar.
Al guardar el archivo azure-pipelines.yml en el repositorio, se le pedirá que agregue un mensaje de confirmación. Escriba un mensaje y, a continuación, seleccione Guardar y ejecutar.
Al usar agentes autohospedados, asegúrese de que Docker está instalado en el host del agente y el motor o demonio de Docker se ejecuta con privilegios elevados.
No se admite la inserción de imágenes de Docker en Azure Container Registry en Azure DevOps Server.
La tarea Docker@2 está diseñada para simplificar el proceso de creación, inserción y administración de imágenes de Docker en Azure Pipelines. Esta tarea admite una amplia gama de comandos de Docker, como compilación, inserción, inicio de sesión, cierre de sesión, inicio, detención y ejecución.
En los pasos siguientes se describe cómo crear una canalización YAML que use la tarea Docker@2 para compilar e insertar la imagen.
Vaya al proyecto de Azure DevOps y seleccione Canalizaciones en el menú izquierdo.
Seleccione Nueva canalización para crear una nueva canalización.
Seleccione GitHub o GitHub Enterprise Server como ubicación para el código fuente.
Si aún no lo ha hecho, autorice a Azure Pipelines a conectarse a su cuenta de Servidor de GitHub Enterprise.
Seleccione Conexión al servidor de GitHub Enterprise.
Escriba los detalles de la cuenta y, a continuación, seleccione Comprobar y guardar.
Seleccione el repositorio.
Seleccione la plantilla De canalización de inicio para crear una configuración básica de canalización.
Reemplace el contenido de la clase azure-pipelines.yml por el código siguiente.
En función de si va a implementar una aplicación de Linux o Windows, asegúrese de establecer vmImage en ubuntu-latest o windows-latest. Si usa un agente autohospedado, establezca vmImage en el nombre del grupo que contiene el agente autohospedado con la funcionalidad de Docker. Puede agregar la demands: docker propiedad para asegurarse de que está seleccionado un agente con Docker instalado.
Reemplace <docker connection> por el nombre de la conexión del servicio Docker que creó anteriormente.
Reemplace <target repository name> por el nombre del repositorio en el registro de contenedor donde desea insertar la imagen. Por ejemplo, <your-project-id>/<your-image-name>.
Cuando haya terminado, seleccione Guardar y ejecutar.
Al guardar el archivo azure-pipelines.yml en el repositorio, se le pedirá que agregue un mensaje de confirmación. Escriba un mensaje y, a continuación, seleccione Guardar y ejecutar.
Al usar agentes autohospedados, asegúrese de que Docker está instalado en el host del agente y el motor o demonio de Docker se ejecuta con privilegios elevados.
Para crear la imagen, Docker debe estar instalado en el host del agente y el motor o demonio de Docker debe ejecutarse con privilegios elevados. Siga estos pasos para crear la canalización mediante el editor de canalizaciones de YAML.
Vaya a la colección y cree un proyecto.
En el proyecto, seleccione Canalizaciones.
Seleccione Crear canalización.
Seleccione Servidor de GitHub Enterprise como ubicación del código fuente.
Si aún no lo ha hecho, autorice a Azure Pipelines a conectarse a su cuenta de Servidor de GitHub Enterprise.
Seleccione Conexión al servidor de GitHub Enterprise.
Escriba los detalles de la cuenta y, a continuación, seleccione Comprobar y guardar.
Seleccione el repositorio.
Para configurar la canalización, seleccione la plantilla Crear una imagen de Docker.
En el editor de canalizaciones de YAML, reemplace el contenido del archivo YAML por el código siguiente. Reemplace el nombre del grupo por el nombre del grupo que contiene el agente autohospedado por la funcionalidad de Docker.
En función de si va a implementar una aplicación de Linux o Windows, asegúrese de establecer vmImage en ubuntu-latest o windows-latest.
Reemplace <target repository name> por el nombre del repositorio en el registro de contenedor donde desea insertar la imagen. Por ejemplo, <your-project-id>/<your-image-name>.
Reemplace <docker connection> por el nombre de la conexión del servicio Docker que creó anteriormente.
En la página Guardar y ejecutar, seleccione Guardar y ejecutar de nuevo.
Puede ver la ejecución de la canalización y ver los registros para ver la imagen de Docker que se compila e inserta en el registro de contenedor.
Uso de System.AccessToken para la autenticación en Docker@2 tarea
Puede autenticarse con un registro de contenedor mediante el System.AccessToken proporcionado por Azure DevOps. Este token permite el acceso seguro a los recursos de la canalización sin exponer credenciales confidenciales.
En el siguiente ejemplo de canalización YAML, la tarea Docker@2 se usa para iniciar sesión en el registro de contenedor e insertar la imagen de Docker. System.AccessToken se establece como una variable de entorno para autenticar los comandos de Docker.
Reemplace por <docker connection> el nombre de conexión del servicio del registro de Docker.
Reemplace <your repository> por el nombre del repositorio de Docker.