Compartir comentarios
Las respuestas se generan en base a la documentación.

Migrate from Autobuilds

Warning

Docker Hub Automated Builds is a deprecated feature. It will be fully retired on April 1, 2027.

Esta guía explica cómo migrar tu configuración de Docker Hub Autobuilds a flujos de trabajo de integración continua (CI), enfocándose en GitHub Actions y Bitbucket Pipelines, ya que son los servicios de CI integrados para los dos servicios de control de versiones compatibles a través de Autobuilds.

Paso 1: Crear tokens de acceso

Para otorgar a tus flujos de trabajo de CI la capacidad de descargar y subir imágenes a Docker Hub, primero debes crear tokens de acceso:

  • Para un repositorio personal: Crea un token de acceso personal con permisos de Read & Write.

  • Para un repositorio de organización: Crea un token de acceso de organización con los siguientes permisos:

    • Read public repositories
    • Image Pull en cualquier repositorio privado del que la compilación necesite descargar imágenes
    • Image Push en el repositorio al que se subirá la imagen compilada

Se puede usar el mismo token para todos los flujos de trabajo de CI bajo el espacio de nombres de la cuenta, siempre que tenga los permisos adecuados para todos los repositorios relevantes de Docker Hub.

Guarda el token de forma segura en un gestor de contraseñas o en el gestor de secretos de tu plataforma de CI/CD. Nunca confirmes (commit) tokens en los repositorios de código fuente.

Paso 2: Extraer tu configuración de Autobuilds

Para cada repositorio de Docker Hub configurado actualmente para usar Autobuilds, necesitas extraer su configuración para ajustar tus flujos de trabajo de CI y duplicar la funcionalidad existente. La única forma de extraer la configuración es a través de la interfaz web de Docker Hub.

  1. Inicia sesión en Docker Hub.

  2. Navega a tu repositorio yendo a My Hub > Tu espacio de nombres > Repositories > Tu repositorio.

  3. Ve a la pestaña Builds y selecciona Configure automated builds.

    Si no hay una configuración de compilación existente, entonces este repositorio no está configurado para Autobuilds.

  4. Toma nota de los siguientes detalles de configuración:

    • Source Repository: El repositorio de GitHub o Bitbucket. La organización es el espacio de nombres y el repositorio es el nombre del repositorio. Aquí es donde debes agregar tu flujo de trabajo.

    • Autotest: Si Autotest está habilitado para Pull Requests (ya sea solo interno o interno y externo), se necesitarán pasos adicionales en tu flujo de trabajo para ejecutar el paso de Autotest.

    • Repository Links: No es compatible y se puede ignorar. Si se requieren builds en cadena, consulta la documentación de tu servicio de CI sobre cómo encadenar builds.

    • Build Rules: Especifica los activadores, etiquetas y rutas de tus builds. Ignora cualquier entrada donde Autobuild esté desactivado.

    • Build Environment Variables: Variables definidas por el usuario que se insertan como variables de entorno en tu compilación. Debes agregarlas a tu flujo de trabajo. Si las variables de entorno contienen secretos, agrégalos al gestor de secretos de tu servicio de CI. Luego, actualiza tu Dockerfile o tus scripts de compilación para hacer referencia a estos secretos utilizando la sintaxis de tu plataforma de CI. Consulta la documentación de tu servicio de CI sobre cómo manejar secretos.

Ejemplo de configuración

La siguiente imagen muestra un ejemplo de configuración de Autobuilds.

Example Autobuilds configuration

Basándote en el ejemplo ilustrado, tomarías nota de los siguientes elementos para esta configuración de Autobuilds:

  • Repositorio de código fuente: Repositorio de GitHub docker/docker-rust-hello
  • Autotest: Deshabilitado
  • Regla de compilación 1: Compila y sube la imagen con la etiqueta latest cuando se detecta un nuevo commit en la rama main. El Dockerfile está en ./Dockerfile y el contexto de compilación es la raíz del código clonado.
  • Regla de compilación 2: Compila y sube la imagen con la etiqueta v{\1} cuando se detecta un nuevo commit en una etiqueta que coincide con la expresión regular ^v([0-9.]+)$. El Dockerfile está en ./Dockerfile y el contexto de compilación es la raíz del código clonado.
  • Variable de entorno: Clave ENV_KEY con valor ENV_VALUE

Paso 3: Migrar a tu plataforma de CI/CD

Selecciona la pestaña que coincida con la plataforma de alojamiento de tu repositorio de código fuente.

Si tu repositorio de código fuente está alojado en GitHub, consulta el repositorio de ejemplo de Docker Autobuilds.

Todos los archivos, excepto los que están bajo el directorio .github/workflows, son solo para fines ilustrativos.

El archivo readme del repositorio detalla cómo migrar de Autobuilds a GitHub Actions utilizando uno de los dos flujos de trabajo proporcionados:

  • El flujo de trabajo simple-build compila y sube una imagen de Docker a tu repositorio de Docker Hub.
  • El flujo de trabajo full-autobuilds contiene todos los pasos que se usan comúnmente en una ejecución de Autobuilds, incluyendo la compilación, el etiquetado, la ejecución de pruebas con Docker Compose y la ejecución de archivos hook opcionales en bash.

Pasos para migrar

  1. Sigue las instrucciones del readme del repositorio de ejemplo para configurar un flujo de trabajo de GitHub Actions para CI en tu repositorio de GitHub.

  2. Los flujos de trabajo contienen comentarios sobre lo que hace cada paso y dónde se deben realizar cambios. Los cambios importantes que debes realizar incluyen:

    • Establecer la variable de entorno DOCKER_REPOSITORY_NAME con el nombre completo de tu repositorio de Docker Hub
    • Establecer tu política de etiquetado de imágenes
    • Establecer los activadores del flujo de trabajo

    Se proporcionan enlaces a la documentación pertinente en el readme y en los comentarios del flujo de trabajo.

  3. Una vez completada la migración a GitHub Actions, elimina la configuración de compilación de tu repositorio de Docker Hub:

    1. Navega a la pestaña Builds del repositorio.

    2. Selecciona Configure automated builds.

    3. Selecciona Delete Build Configuration.

Si tu repositorio de código fuente está alojado en Bitbucket, consulta el repositorio de ejemplo de Docker Autobuilds para Bitbucket.

Todos los archivos, excepto el archivo bitbucket-pipelines.yml, son solo para fines ilustrativos.

El archivo readme del repositorio detalla cómo migrar de Autobuilds a Bitbucket Pipelines utilizando el archivo de configuración bitbucket-pipelines.yml de ejemplo proporcionado.

El ejemplo de pipeline contiene tres pipelines independientes:

  • branches/main: Muestra cómo compilar, probar y subir una imagen cuando hay cambios en una rama específica
  • tags/*: Muestra cómo compilar, probar y subir una imagen al enviar etiquetas (tags), incluyendo el etiquetado de la imagen con el mismo nombre que la etiqueta de Git
  • pull-requests/*: Muestra cómo compilar y probar, pero no subir, una imagen desde un pull request

Pasos para migrar

  1. Sigue las instrucciones del readme del repositorio de ejemplo para configurar un Bitbucket Pipeline en tu repositorio de Bitbucket.

  2. Los comentarios en la configuración del pipeline explican qué hace cada parte y dónde se deben realizar cambios. Los cambios importantes que debes realizar incluyen:

    • Establecer la variable de entorno DOCKER_REPOSITORY_NAME con el nombre completo de tu repositorio de Docker Hub
    • Establecer tu política de etiquetado de imágenes (consulta dónde se establece la variable DOCKER_TAG en cada pipeline)
    • Establecer los activadores del pipeline para ramas, etiquetas o pull requests

    Se proporcionan enlaces a la documentación pertinente en el readme y en los comentarios del flujo de trabajo.

  3. Una vez completada la migración a Bitbucket Pipelines, elimina la configuración de compilación de tu repositorio de Docker Hub:

    1. Navega a la pestaña Builds del repositorio.

    2. Selecciona Configure automated builds.

    3. Selecciona Delete Build Configuration.