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

Automatizar tus construcciones con GitHub Actions

Requisitos previos

Completa todas las secciones anteriores de esta guía, comenzando con Contenedorizar una aplicación Python. Debes tener una cuenta de GitHub y una cuenta verificada de Docker para completar esta sección.

Si aún no has creado un repositorio de GitHub para tu proyecto, es el momento de hacerlo. Después de crear el repositorio, no olvides agregar un origen remoto y asegurarte de que puedes confirmar y subir tu código a GitHub.

  1. En el repositorio de GitHub de tu proyecto, abre Settings (Configuración) y ve a Secrets and variables > Actions.

  2. En la pestaña Variables, crea una nueva Repository variable llamada DOCKER_USERNAME con tu Docker ID como valor.

  3. Crea un nuevo Token de Acceso Personal (PAT) para Docker Hub. Puedes nombrar este token como docker-tutorial. Asegúrate de que los permisos de acceso incluyan Read and Write (Lectura y Escritura).

  4. Agrega el PAT como un Repository secret en tu repositorio de GitHub, con el nombre DOCKERHUB_TOKEN.

Descripción general

GitHub Actions es una herramienta de automatización de CI/CD (Integración Continua y Despliegue Continuo) integrada en GitHub. Te permite definir flujos de trabajo (workflows) personalizados para construir, probar y desplegar tu código cuando ocurren eventos específicos (por ejemplo, subir código, crear una solicitud de extracción o pull request, etc.). Un flujo de trabajo es un script de automatización basado en YAML que define una secuencia de pasos a ejecutar cuando se activa. Los flujos de trabajo se almacenan en el directorio .github/workflows/ de un repositorio.

En esta sección, aprenderás cómo configurar y usar GitHub Actions para construir tu imagen de Docker, así como para subirla a Docker Hub. Completarás los siguientes pasos:

  1. Definir el flujo de trabajo de GitHub Actions.
  2. Ejecutar el flujo de trabajo.

1. Definir el flujo de trabajo de GitHub Actions

Puedes crear un flujo de trabajo de GitHub Actions creando un archivo YAML en el directorio .github/workflows/ de tu repositorio. Para hacer esto, usa tu editor de texto favorito o la interfaz web de GitHub. Los siguientes pasos muestran cómo crear un archivo de flujo de trabajo utilizando la interfaz web de GitHub.

Si prefieres usar la interfaz web de GitHub, sigue estos pasos:

  1. Ve a tu repositorio en GitHub y selecciona la pestaña Actions.

  2. Selecciona set up a workflow yourself (configurar un flujo de trabajo por ti mismo).

    Esto te llevará a una página para crear un nuevo archivo de flujo de trabajo de GitHub Actions en tu repositorio. Por defecto, el archivo se crea bajo .github/workflows/main.yml. Cambiemos su nombre a build.yml.

Si prefieres usar tu editor de texto, crea un nuevo archivo llamado build.yml en el directorio .github/workflows/ de tu repositorio.

Agrega el siguiente contenido al archivo:

name: Build and push Docker image

on:
  push:
    branches:
      - main

jobs:
  lint-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      
      - name: Configurar Python
        uses: actions/setup-python@v6
        with:
          python-version: '3.14'

      - name: Instalar dependencias
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

      - name: Ejecutar hooks de pre-commit
        run: pre-commit run --all-files

      - name: Ejecutar pyright
        run: pyright

  build_and_push:
    runs-on: ubuntu-latest
    steps:
      - name: Iniciar sesión en Docker Hub
        uses: docker/login-action@v4
        with:
          username: ${{ vars.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Configurar Docker Buildx
        uses: docker/setup-buildx-action@v4

      - name: Construir y subir
        uses: docker/build-push-action@v7
        with:
          push: true
          tags: ${{ vars.DOCKER_USERNAME }}/${{ github.event.repository.name }}:latest

Cada flujo de trabajo de GitHub Actions incluye uno o varios trabajos (jobs). Cada trabajo consta de pasos (steps). Cada paso puede ejecutar un conjunto de comandos o usar acciones ya existentes. La acción anterior tiene tres pasos principales de construcción:

  1. Iniciar sesión en Docker Hub: La acción inicia sesión en Docker Hub utilizando el Docker ID y el Token de Acceso Personal (PAT) que creaste anteriormente.

  2. Configurar Docker Buildx: La acción configura Docker Buildx, un complemento de CLI que amplía las capacidades de la CLI de Docker.

  3. Construir y subir: La acción construye y sube la imagen de Docker a Docker Hub. El parámetro tags especifica el nombre y la etiqueta de la imagen. En este ejemplo se utiliza la etiqueta latest.

2. Ejecutar el flujo de trabajo

Confirma los cambios y súbelos a la rama main. Este flujo de trabajo se ejecuta cada vez que subes cambios a la rama main. Puedes encontrar más información sobre los activadores de flujo de trabajo en la documentación de GitHub.

Ve a la pestaña Actions de tu repositorio de GitHub. Mostrará el flujo de trabajo. Al seleccionar el flujo de trabajo se muestra el desglose de todos los pasos.

Cuando el flujo de trabajo se complete, ve a tus repositorios en Docker Hub. Si ves el nuevo repositorio en esa lista, significa que el flujo de trabajo de GitHub Actions subió correctamente la imagen a Docker Hub.

Resumen

En esta sección, aprendiste cómo configurar un flujo de trabajo de GitHub Actions para tu aplicación Python que incluye:

  • Ejecución de hooks de pre-commit para linting y formateo
  • Comprobación de tipo estático con Pyright
  • Construcción y subida de imágenes de Docker

Información relacionada:

Pasos siguientes

En la siguiente sección, aprenderás cómo puedes desarrollar localmente usando Kubernetes.