Github-Action-Day9:部属到 Github Packages

这是我的 Github Action Advent Calendar 的第九天的内容,如果您想要了解更多已经发布的 tips 信息,查看此处的 索引

本月至今,我们已经研究了许多场景,这些场景先执行一个构建(build),再运行一些测试(tests)。这些都是优秀的工作流(workflow) — 因为它们确保了对您的项目的 pull request 是高质量的,以及您的主分支的健康。

但是您通常希望进行下一步的操作,并部属您构建好的某些内容。例如,你可能会想要构建一个容器,在每次主分支有新的内容时将其上传到 Github Packages 上。这可以保证您有一个容器,可以运行和验证每一个修改。

若要实现这个目的,我们需要在主分支的 push 操作上设置触发器 (任何 在主分支上的集成操作 ,push触发器都会运行 ,不管这个操作是来自于文字 git push 命令还是一个 pull request 的合并)。

Translate Note:

在主分支上的集成操作:即主分支上仓库中内容的更新,也包括合并 pull request到主分支上

之后我们便可以从 docker 登录到 Github Packages。我们可以简单地使用 Github Action 提供给我们的 GITHUB_TOKEN — 这个 TOKEN 对我们仓库中的包的拥有发布权限。

再然后,我们构建我们的容器,给容器打一个名为包注册商的标签 (在下面的案例中,docker.pkg.github.com 后边跟着我的容器名称:ethomson/myrepo/app) ,并赋予它一个版本号,即Unix时间。

最后,我们需要推送这个容器到 Github Packages

Translate Note:

这个测试需要登录 docker.pkg.github.com , 也可以登录 ghcr.io ,账号和 Github 账户名相同,密码建议使用 GITHUB_TOKEN 。

docker login docker.pkg.github.com --username qianfanguojin --password ${{ secrets.GITHUB_TOKEN }}
docker login ghcr.io --username qianfanguojin --password ${{ secrets.GITHUB_TOKEN }}

密码也可使用 PAT(Personal Access TOKEN)。详细请看:使用容器 Registry - GitHub Docs

现在,我就有一个简单的持续部属系统了,它总是使用容器更新到 Github Packages 中,这个容器中包含我主分支上的最新构建成果。