⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Add image annotations with GitHub Actions

Table des matières

Les annotations vous permettent de spécifier des métadonnées arbitraires pour les composants d'image OCI, tels que les manifestes, index et descripteurs.

Pour ajouter des annotations lors de la construction d'images avec GitHub Actions, utilisez la metadata-action pour créer automatiquement des annotations conformes à OCI. L'action metadata crée une sortie annotations que vous pouvez référencer, à la fois avec build-push-action et bake-action.

name: ci

on:
  push:

env:
  IMAGE_NAME: user/app

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ${{ env.IMAGE_NAME }}

      - name: Build and push
        uses: docker/build-push-action@v6
        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: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ${{ env.IMAGE_NAME }}

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

Configurer le niveau d'annotation

Par défaut, les annotations sont placées sur les manifestes d'image. Pour configurer le niveau d'annotation, définissez la variable d'environnement DOCKER_METADATA_ANNOTATIONS_LEVELS sur l'étape metadata-action à une liste séparée par des virgules de tous les niveaux que vous voulez annoter. Par exemple, définir DOCKER_METADATA_ANNOTATIONS_LEVELS à index résulte en des annotations sur l'index d'image au lieu des manifestes.

L'exemple suivant crée des annotations à la fois sur l'index d'image et les manifestes.

name: ci

on:
  push:

env:
  IMAGE_NAME: user/app

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

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

      - name: Build and push
        uses: docker/build-push-action@v6
        with:
          tags: ${{ steps.meta.outputs.tags }}
          annotations: ${{ steps.meta.outputs.annotations }}
          push: true
Note

La construction doit produire les composants que vous voulez annoter. Par exemple, pour annoter un index d'image, la construction doit produire un index. Si la construction produit seulement un manifeste et que vous spécifiez index ou index-descriptor, la construction échoue.