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 10name: 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 更简单,在国内访问也更快.
OneStep