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

Gestionar etiquetas (tags) y etiquetas descriptivas (labels) con GitHub Actions


Si deseas una gestión "automática" de etiquetas (tags) y de la Especificación de formato de imagen OCI (OCI Image Format Specification) para las etiquetas descriptivas (labels), puedes hacerlo en un paso de configuración dedicado. El siguiente flujo de trabajo utilizará la acción Docker Metadata Action para manejar las etiquetas y etiquetas descriptivas basadas en eventos de GitHub Actions y metadatos de Git:

name: ci

on:
  schedule:
    - cron: "0 10 * * *"
  push:
    branches:
      - "**"
    tags:
      - "v*.*.*"
  pull_request:

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Docker meta
        id: meta
        uses: docker/metadata-action@v6
        with:
          # lista de imágenes de Docker a utilizar como nombre base para las etiquetas
          images: |
            name/app
            ghcr.io/username/app
          # generar etiquetas de Docker basadas en los siguientes eventos/atributos
          tags: |
            type=schedule
            type=ref,event=branch
            type=ref,event=pr
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=semver,pattern={{major}}
            type=sha

      - name: Iniciar sesión en Docker Hub
        if: github.event_name != 'pull_request'
        uses: docker/login-action@v4
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Iniciar sesión en GHCR
        if: github.event_name != 'pull_request'
        uses: docker/login-action@v4
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Configurar QEMU
        uses: docker/setup-qemu-action@v4

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

      - name: Compilar y enviar
        uses: docker/build-push-action@v7
        with:
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}