我正在使用 GitHub Actions 使用build-push-action构建 docker 映像。我想在将图像推送到 docker 注册表之前向其添加标签:
latest我有一些类似的事情:
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
push: true
tags:
- user/image:latest
Run Code Online (Sandbox Code Playgroud)
总是添加更多标签很容易,但我只想在有 git 标签的情况下添加它。有没有办法做到这一点?
Kev*_*don 19
有一个docker/metadata-action可以做到这一点。确保设置推送标签触发器以及您可能需要的任何其他触发器。操作文档有更多关于它适用于每种事件触发器类型的标签的详细信息。另请参阅https://docs.github.com/en/actions/publishing-packages/publishing-docker-images了解有关 Docker 映像发布的一般主题的更多信息。
name: Tag Docker Image with Git
on:
push:
tags: [ v* ]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Log into the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata for the Docker image
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push the Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
Run Code Online (Sandbox Code Playgroud)
我找到了使用专用操作的解决方案。我在单独的步骤中创建标签,然后添加它。CI 配置的相关部分如下所示:
- name: Docker meta
id: docker_meta
uses: crazy-max/ghaction-docker-meta@v1
with:
images: l7r7/sample
tag-custom: latest
tag-semver: |
{{raw}}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
push: false
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
Run Code Online (Sandbox Code Playgroud)
准确地说,这并不完全是我所要求的,因为它也会添加一个包含分支名称的标签。但这对我来说没关系。我可以忍受这一点。
可以在此处找到完整的工作示例。
| 归档时间: |
|
| 查看次数: |
31501 次 |
| 最近记录: |