这是一个什么概念

本质上是一个容器,可以运行很多 Github 事件。例如你可以利用它进行部署和发布。

必须在beta版本的GitHub上才有该特性。通过 sign up for the beta 登录到 beta 版。

image.png

一起尝试一下

最简单的 action

  1. workflow "Name of Workflow" {
  2. on = "push"
  3. resolves = ["deploy"]
  4. }
  5. action "deploy" {
  6. needs = "Installation"
  7. uses = "actions/someaction"
  8. args = "run some code here and use a $ENV_VARIABLE_NAME"
  9. secrets = [
  10. "TOKEN",
  11. ]
  12. env = {
  13. ENV_VARIABLE_NAME = "myEnvVariable"
  14. }
  15. }

可以看到我们启动了 workflow,并且明确它会在 on push(on = "push") 时运行。还有很多其他的可用的选项
resolves = ["deploy"] 是一个 action 数组,它会串联随后的工作流(action),不用指定顺序,只是一个完全列表。

接下来看下 action 的部分。
needs:表示执行该action之前必须先完成 Installation 的 action。
uses:uses = "actions/someaction",这个是预定义 action(完全清单)。当然你也可以用其他的仓库,甚至是托管在 Docker 站点的文件(例如:uses = "docker://alpine/git:latest"),也可以指向内部的目录(例如:uses = "./.github/azdeploy")。
secrets :这些非常重要,因为这是你将如何使用密码,保护数据,而无需直接提交他们到仓库。如果你正在使用需要令牌来部署的东西,你可能会在这里使用 secret 来传递它。
env:可以设置环境变量。

项目中的实践

首先了解几个开源库。

actions-toolkit

https://github.com/JasonEtco/actions-toolkit
image.png

git-changelog-parser

image.png

github-actions-workman

image.png