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

Añadir anotaciones de imagen con GitHub Actions

Las anotaciones te permiten especificar metadatos arbitrarios para los componentes de una imagen OCI, como manifiestos, índices y descriptores.

Para añadir anotaciones al compilar imágenes con GitHub Actions, utiliza la acción metadata-action para crear automáticamente anotaciones que cumplan con la especificación OCI. La acción de metadatos crea una salida annotations a la que puedes hacer referencia, tanto con build-push-action como con bake-action.

name: ci

on:
  push:

env:
  IMAGE_NAME: user/app

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

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

      - name: Extraer metadatos
        id: meta
        uses: docker/metadata-action@v6
        with:
          images: ${{ env.IMAGE_NAME }}

      - name: Compilar y enviar
        uses: docker/build-push-action@v7
        with:
          tags: ${{ steps.meta.outputs.tags }}
          annotations: ${{ steps.meta.outputs.annotations }}
          push: true
name: ci

on:
  push:

env:
  IMAGE_NAME: user/app

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

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

      - name: Extraer metadatos
        id: meta
        uses: docker/metadata-action@v6
        with:
          images: ${{ env.IMAGE_NAME }}

      - name: Compilar
        uses: docker/bake-action@v7
        with:
          files: |
            ./docker-bake.hcl
            cwd://${{ steps.meta.outputs.bake-file-tags }}
            cwd://${{ steps.meta.outputs.bake-file-annotations }}
          push: true

Configurar el nivel de anotación

De forma predeterminada, las anotaciones se colocan en los manifiestos de la imagen. Para configurar el nivel de anotación, establece la variable de entorno DOCKER_METADATA_ANNOTATIONS_LEVELS en el paso de la acción metadata-action con una lista separada por comas de todos los niveles que deseas anotar. Por ejemplo, establecer DOCKER_METADATA_ANNOTATIONS_LEVELS en index genera anotaciones en el índice de la imagen en lugar de en los manifiestos.

El siguiente ejemplo crea anotaciones tanto en el índice de la imagen como en los manifiestos.

name: ci

on:
  push:

env:
  IMAGE_NAME: user/app

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

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

      - name: Extraer metadatos
        id: meta
        uses: docker/metadata-action@v6
        with:
          images: ${{ env.IMAGE_NAME }}
        env:
          DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index

      - name: Compilar y enviar
        uses: docker/build-push-action@v7
        with:
          tags: ${{ steps.meta.outputs.tags }}
          annotations: ${{ steps.meta.outputs.annotations }}
          push: true
Note

La compilación debe producir los componentes que deseas anotar. Por ejemplo, para anotar un índice de imagen, la compilación debe producir un índice. Si la compilación produce solo un manifiesto y especificas index o index-descriptor, la compilación fallará.