之前,我们学习了如何为 Docker 项目设置 GitHub Actions 工作流,如何通过设置具有构建缓存的构建器来优化工作流。现在让我们看看如何进一步改进它。我们可以通过添加标记版本对所有提交到 master 的行为不同的功能来做到这一点。这意味着,只推送特定版本,而不是每次提交更新 Docker Hub 上的最新版本。
您可以考虑使用这种方法将提交转到本地注册表,然后在夜间测试中使用。通过这样做,您可以始终测试最新版本,同时保留标记版本以发布到 Docker Hub。
这包括两个步骤:
修改 GitHub 工作流以仅将带有特定标签的提交推送到 Docker Hub
设置 GitHub 操作文件以将最新提交作为图像存储在 GitHub 注册表中
首先,让我们修改现有的 GitHub 工作流程,仅在有特定标签时才推送到 Hub。例如:
on:
push:
tags:
– \”v*.*.*\”
这确保了主 CI 仅在我们使用V.n.n.n.Let\’s test this标记我们的提交时才会触发。例如,运行以下命令:
git tag -a v1.0.2
git push origin v1.0.2
现在,转到 GitHub 并检查您的操作
现在,让我们设置第二个 GitHub 操作文件,将我们最新的提交作为图像存储在 GitHub 注册表中。您可能希望这样做:
1.运行您的夜间测试或重复测试,或
2.与同事分享正在进行的工作镜像。
让我们克隆我们之前的 GitHub 操作,并为所有推送添加回我们之前的逻辑。这意味着我们有两个工作流文件,我们之前的一个和我们现在将处理的新的。接下来,将您的 Docker Hub 登录名更改为 GitHub 容器注册表登录名:
请记住更改图像的标记方式。以下示例将“最新”作为唯一标记。但是,如果您愿意,您可以为此添加任何逻辑:
tags: ghcr.io/${{ github.repository_owner }}/simplewhale:latest
现在,我们将有两种不同的流程:一种用于我们对 master 的更改,另一种用于我们的拉取请求。接下来,我们需要修改我们之前的内容,以确保我们将 PR 推送到 GitHub 注册表而不是 Docker Hub。