Add image annotations with GitHub Actions
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
NoteLa 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
ouindex-descriptor
, la construction échoue.