使用 GitHub Actions 新增映象註釋
目錄
註釋允許您為 OCI 映象元件(如清單、索引和描述符)指定任意元資料。
要在使用 GitHub Actions 構建映象時添加註釋,請使用 metadata-action 自動建立符合 OCI 標準的註釋。元資料操作會建立一個 annotations
輸出,您可以使用 build-push-action 和 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
配置註釋級別
預設情況下,註釋放置在映象清單上。要配置註釋級別,請在 metadata-action
步驟上將 DOCKER_METADATA_ANNOTATIONS_LEVELS
環境變數設定為您要註釋的所有級別的逗號分隔列表。例如,將 DOCKER_METADATA_ANNOTATIONS_LEVELS
設定為 index
會導致註釋放置在映象索引上而不是清單上。
以下示例在映象索引和清單上都建立了註釋。
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
注意構建必須生成您要註釋的元件。例如,要註釋映象索引,構建必須生成一個索引。如果構建只生成一個清單,並且您指定了
index
或index-descriptor
,則構建將失敗。