Github Actions简介
简介
GitHub Actions
可帮助开发人员在软件开发生命周期内自动化任务。 GitHub Actions 是事件驱动的,这意味着可以在发生指定事件后运行一系列命令。例如,每当有人为仓库新建pr
时,可以自动运行测试脚本。
该图演示了如何使用 GitHub Actions 自动运行软件测试脚本。事件自动触发包job
含的workflow
。然后,job
将使用step
来控制action
的执行顺序。这些action
即是自动化测试软件的命令。
Github Actions 的组件
以下是可协同运行job
的多个GitHub Actions
组件的列表。可以看到这些组件之间如何交互
workflow
workflow
您添加到代码仓库中的自动化过程。其由一个或多个job
组成,可以由事件调度或触发。该workflow
可用于在 GitHub 上构建,测试,打包,发布或部署项目。
Events
event
是触发workflow
的特定活动。例如,当有人将commit
推送到仓库或创建issue
或pr
时,Github 会产生envent
。还可以使用 repository dispatch webhook
在发生外部事件时触发workflow
。有关可用于触发workflow
的evrnt
的完整列表,查看Events that trigger workflows
。
Jobs
job
是在同一runner
上执行的一组step
。默认情况下,具有多个job
的workflow
程将并行运行这些job
。还可以配置workflow
以按顺序运行job
。例如,一个workflow
可以有两个顺序执行的job
来构建和测试代码,其中测试job
取决于构建job
的状态。如果构建job
失败,则测试job
将不会运行。
Steps
step
是可以在job
中运行命令的单个任务。step
可以是操作或shell
命令。job
中的每个step
都在同一runner
上执行,从而使该job
中的操作可以彼此共享数据。
Actions
action
是独立的命令,组合成step
以构建job
, action
是工作流中最小的可移植构建块。可以创建自己的action
,也可以使用 GitHub 社区创建的action
。要在工作流中使用action
,必须将其包括在一个step
中。
Runners
runner
是已安装GitHub Actions runner 应用程序
的服务器。可以使用 GitHub 托管的runner
,也可以使用自己的runner
。runner
监听可用的job
,一次运行一个job
,并将进度,日志和结果反馈给 GitHub。对于由 GitHub 托管的runner
,workflow
中的每个job
都在全新的虚拟环境中运行。
GitHub 托管的runner
基于 Ubuntu Linux,Microsoft Windows 和 macOS。有关 GitHub 托管的runner
的信息,请参阅"Virtual environments for GitHub-hosted runners
"。如果需要其他的 OS 或特定的硬件配置,则可以托管自己的runner
。有关自托管runner
的信息,请参阅"Hosting your own runners
"。
创建样例 workflow
GitHub Actions 使用YAML
语法定义event
,job
和step
。这些 YAML 文件存储在代码存储库中的.github / workflows
目录中。
可以在仓库中创建示例的workflow
,该workflow
在每次推送代码时自动触发一系列命令。在此workflow
中,GitHub Actions 使用了actions market
的checkout
和setup-node
action
,然后安装软件依赖项,并运行bat -v
。
-
首先在项目中创建
.github/workflow
目录 -
在其中,创建一个
learn-github-actions.yml
文件,内容如下:1 2 3 4 5 6 7 8 9 10
name: learn-github-actions on: [push] jobs: check-bats-version: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 - run: npm install -g bats - run: bats -v
-
commit
这些修改并且push
代码到仓库
现在,新的GitHub Actions
工作流文件已安装在代码仓库中,并且每次有人将更改推送到仓库时,它将自动运行。有关作业的执行历史记录的详细信息,请参阅"Viewing the workflow’s activity
"。
要更详细了解workflow
文件,参阅Understanding the workflow file
。
自动构建 Hugo 博客
配置密钥
首先生成一对新的密钥
|
|
在对应的 gihtub 仓库设置中的Deploy keys
,将刚才生成的密钥对中的公钥添加进去;然后在设置中的Secrets
里面新建一个Secret
,名为DEPLOY_KEY
,将刚才生成的密钥对中的私钥添加进去.
配置workflow
在项目根目录下新建.github/workflow/gh-pages.yaml
,内容为
|
|
不过部署 Hexo 博客的话,目前 Vercel 更简单,在国内访问也更快.