注:本文已发布超过一年,请注意您所使用工具的相关版本是否适用
本文将主要讲述如何创建一个自定义的 Github Actions, 并且使用 Github Actions 完成 CI/CD 的操作
故事的起因就是,github 的私有仓库免费了, 打算将 blog 仓库切换为私有仓库,这样可以同时将笔记和博客放在一块,利用 hugo 的 draft 功能,将不想发布的文章设置 true 即可。
修改之后由于之前使用 Travis CI 自动构建博客的静态页面,而 Travis CI 对于私有仓库只能试用 100 次,正好之前获得了 Github Actions 的测试资格,但是一直都还没有使用过,本次记录一下 Github Actions 的使用过程
actions 可以用来作为 CI/CD 使用,但是它不只是 CI/CD,因为它其实是一组 docker 容器所组成的 Workflow,Workflow 的触发条件,公共仓库目前仅支持 push,私有仓库则支持 check_run、create、delete、issue comment, commit comment, pull request 等许多事件, 通过这些事件,可以完成除了 CI/CD 之外的许多自动化操作,例如接收到 issue comment 之后使用 telegram bot 发送通知等等
如果你有权限的话,在你的仓库下应该可以看到一个 Actions 的菜单

如下图所示

如下图所示,workflow 只有两个可选的修改项,分别是 Name 以及触发条件,触发条件公共仓库目前仅支持 push,私有仓库则支持 check_run、create、delete、issue comment, commit comment, pull request 等许多事件。完整的触发条件可以查看 Events supported in workflow files

如下图所示
{user}/{repo}/{path}@{ref} 直接使用公开的仓库,仓库里必须包含 dockerfile, path 为可选项,没有 path 默认为根路径,e.g actions/heroku@master, actions/aws/ec2@v2.0.1./path/to/dir当前仓库的相对路径docker://{host}/{image}:{tag} docker 镜像地址,host 为可选项,不填 host 默认从 dockerhub 拉取,e.g docker://mohuishou/hugo:0.53, docker://gcr.io/cloud-builders/gradle
Action 其实就是 Docker 镜像,按照 Docker 镜像的写法即可,需要关注以下几点
github actions 会读取 dockerfile 的 label 在 Workflow GUI 上做一些展示
1 | |
默认的环境变量,以及如何读取
所有的默认值可以参考这里 Environment variables
常用的主要有
| Environment variable | Description |
|---|---|
GITHUB_ACTOR | 用户的名字 |
GITHUB_REPOSITORY | 用户和仓库的地址 例如 mohuishou/hugo-action |
GITHUB_WORKSPACE | github 的工作区, 默认值为 /github/workspace |
GITHUB_TOKEN | workflow 的 github token 可以用来 clone 拉取数据,但是没有 push 的权限 |
读取环境变量时需要注意,环境变量是在容器运行时注入的,所以在 dockerfile 里面没有办法直接使用
https://github.com/mohuishou/hugo-action
youname.github.io创建文件 .github/main.workflow
1 | |
| Key | Value | Must |
|---|---|---|
| TOKEN | 你的 github token,需要有 push 权限,保存在密码变量中 | yes |
| 你的邮箱 |
注:本文已发布超过一年,请注意您所使用工具的相关版本是否适用
本文将主要讲述如何创建一个自定义的 Github Actions, 并且使用 Github Actions 完成 CI/CD 的操作
故事的起因就是,github 的私有仓库免费了, 打算将 blog 仓库切换为私有仓库,这样可以同时将笔记和博客放在一块,利用 hugo 的 draft 功能,将不想发布的文章设置 true 即可。
修改之后由于之前使用 Travis CI 自动构建博客的静态页面,而 Travis CI 对于私有仓库只能试用 100 次,正好之前获得了 Github Actions 的测试资格,但是一直都还没有使用过,本次记录一下 Github Actions 的使用过程
actions 可以用来作为 CI/CD 使用,但是它不只是 CI/CD,因为它其实是一组 docker 容器所组成的 Workflow,Workflow 的触发条件,公共仓库目前仅支持 push,私有仓库则支持 check_run、create、delete、issue comment, commit comment, pull request 等许多事件, 通过这些事件,可以完成除了 CI/CD 之外的许多自动化操作,例如接收到 issue comment 之后使用 telegram bot 发送通知等等
如果你有权限的话,在你的仓库下应该可以看到一个 Actions 的菜单

如下图所示

如下图所示,workflow 只有两个可选的修改项,分别是 Name 以及触发条件,触发条件公共仓库目前仅支持 push,私有仓库则支持 check_run、create、delete、issue comment, commit comment, pull request 等许多事件。完整的触发条件可以查看 Events supported in workflow files

如下图所示
{user}/{repo}/{path}@{ref} 直接使用公开的仓库,仓库里必须包含 dockerfile, path 为可选项,没有 path 默认为根路径,e.g actions/heroku@master, actions/aws/ec2@v2.0.1./path/to/dir当前仓库的相对路径docker://{host}/{image}:{tag} docker 镜像地址,host 为可选项,不填 host 默认从 dockerhub 拉取,e.g docker://mohuishou/hugo:0.53, docker://gcr.io/cloud-builders/gradle
Action 其实就是 Docker 镜像,按照 Docker 镜像的写法即可,需要关注以下几点
github actions 会读取 dockerfile 的 label 在 Workflow GUI 上做一些展示
1 | |
默认的环境变量,以及如何读取
所有的默认值可以参考这里 Environment variables
常用的主要有
| Environment variable | Description |
|---|---|
GITHUB_ACTOR | 用户的名字 |
GITHUB_REPOSITORY | 用户和仓库的地址 例如 mohuishou/hugo-action |
GITHUB_WORKSPACE | github 的工作区, 默认值为 /github/workspace |
GITHUB_TOKEN | workflow 的 github token 可以用来 clone 拉取数据,但是没有 push 的权限 |
读取环境变量时需要注意,环境变量是在容器运行时注入的,所以在 dockerfile 里面没有办法直接使用
https://github.com/mohuishou/hugo-action
youname.github.io创建文件 .github/main.workflow
1 | |
| Key | Value | Must |
|---|---|---|
| TOKEN | 你的 github token,需要有 push 权限,保存在密码变量中 | yes |
| 你的邮箱 |