Uso de Azure Pipelines para compilar e insertar imágenes de contenedor en registros
Servicios de Azure DevOps
Este artículo le guía en la creación de una canalización para crear y subir una imagen de Docker a un Azure Container Registry o a Docker Hub.
Requisitos previos
Producto | Requisitos |
---|---|
Azure DevOps | - Un proyecto de Azure DevOps. - Permisos: - Para conceder acceso a todas las canalizaciones del proyecto: debe ser miembro del grupo de Administradores de Proyectos . - Para crear conexiones de servicio: debe tener el rol de Administrador o Creador para conexiones de servicio. - Si usa un agente autoalojado, asegúrese de que Docker está instalado y de que el motor de Docker se ejecuta con privilegios elevados. Los agentes hospedados por Microsoft tienen Docker preinstalado. |
GitHub | - Una cuenta de GitHub . : un repositorio de GitHub con un Dockerfile. Utilice el repositorio de ejemplo si no tiene su propio proyecto. - Una conexión de servicio de GitHub para autorizar Azure Pipelines. |
Azure | - Una suscripción de Azure. - Una instancia de Azure Container Registry. |
Producto | Requisitos |
---|---|
Azure DevOps | - Un proyecto de Azure DevOps . - Permisos: - Para conceder acceso a todas las canalizaciones del proyecto: debe ser miembro del grupo Administradores de proyectos. - Para crear conexiones de servicio: debe tener el rol de Administrador o Creador para conexiones de servicio. - Si usa un agente autohospedado, asegúrese de que Docker está instalado y que el motor Docker esté en funcionamiento con privilegios elevados. Los agentes hospedados por Microsoft tienen Docker preinstalado. |
GitHub | - Una cuenta de GitHub . : un repositorio de GitHub con un Dockerfile. Use el repositorio de ejemplo si no tiene su propio proyecto. - Una conexión de servicio de GitHub para autorizar Azure Pipelines. |
Docker Hub | - Una cuenta de Docker Hub . - Un repositorio de imágenes Docker Hub. |
Creación de una conexión de servicio del registro 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. Para obtener más información, consulte Conexiones de servicio del Registro de Docker.
En el proyecto de Azure DevOps, seleccione Configuración del proyecto>Conexiones de servicio.
Seleccione nueva conexión de servicio y Docker Registry.
Seleccione de Docker Hub y escriba la siguiente información:
Campo Descripción ID de Docker Escriba el identificador de Docker. Contraseña de Docker Escriba la contraseña de Docker. nombre de conexión del servicio Escriba un nombre para la conexión de servicio. Conceder permiso de acceso a todas las canalizaciones Seleccione esta opción para conceder acceso a todas las canalizaciones. Seleccione Verifique y guarde.
Crear una canalización para construir y enviar una imagen de Docker
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.
Siga estos pasos para crear una canalización YAML que use la tarea Docker@2 para compilar e insertar la imagen.
En la organización de Azure DevOps, seleccione Canalizaciones y Nueva canalización.
Seleccione gitHub como ubicación del código fuente y seleccione el repositorio.
- Si se le redirige a GitHub para iniciar sesión, escriba las credenciales de GitHub.
- Si se le redirige a GitHub para instalar la aplicación de Azure Pipelines, seleccione Aprobar e instalar.
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 azure-pipelines.yml por el código siguiente:
trigger: - main pool: vmImage: 'ubuntu-latest' variables: repositoryName: '<target repository name>' steps: - task: Docker@2 inputs: containerRegistry: '<docker registry service connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
Edite el archivo YAML de canalización de la siguiente manera:
- Reemplace
<target repository name>
por el nombre del repositorio en el registro de contenedor donde desea insertar la imagen. - Sustituya
<docker registry service connection>
por el nombre de la conexión del servicio de registro de Docker que creó antes.
- Reemplace
Cuando haya terminado, seleccione Guardar y ejecutar>Guardar y ejecutar.
Seleccione Trabajo para ver los registros y comprobar que la canalización se ejecutó correctamente.
Vaya al proyecto de Azure DevOps y seleccione Pipelines en el menú de la izquierda.
Seleccione Nueva canalización.
Seleccione gitHub como ubicación del código fuente y seleccione el repositorio.
- Si se le redirige a GitHub para iniciar sesión, escriba las credenciales de GitHub.
- Si se le redirige a GitHub para instalar la aplicación de Azure Pipelines, seleccione Aprobar e instalar.
Seleccione la plantilla de Docker - Compilación e inserción de una imagen en Azure Container Registry .
Seleccione la suscripción de Azure y Continuar.
Seleccione su Registro de contenedores y, a continuación, seleccione Validar y configurar.
Canalización DE YAML de ejemplo:
# Docker # Build and push an image to Azure Container Registry # https://docs.microsoft.com/azure/devops/pipelines/languages/docker trigger: - main resources: - repo: self variables: # Container registry service connection established during pipeline creation dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de' imageRepository: 'usernamepipelinesjavascriptdocker' containerRegistry: 'repoistoryname.azurecr.io' dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile' tag: '$(Build.BuildId)' # Agent VM image name vmImageName: 'ubuntu-latest' stages: - stage: Build displayName: Build and push stage jobs: - job: Build displayName: Build pool: vmImage: $(vmImageName) steps: - task: Docker@2 displayName: Build and push an image to container registry inputs: command: buildAndPush repository: $(imageRepository) dockerfile: $(dockerfilePath) containerRegistry: $(dockerRegistryServiceConnection) tags: | $(tag)
Seleccione Guardar y ejecutar y Guardar y volver a ejecutar.
Seleccione Job para ver los logs y comprobar que el pipeline se ejecutó correctamente.
La plantilla de Docker crea la conexión de servicio a Azure Container Registry y usa la tarea Docker@2 para compilar e insertar la imagen de Docker en el registro.
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.
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.