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 }}