这是一个什么概念
本质上是一个容器,可以运行很多 Github 事件。例如你可以利用它进行部署和发布。
必须在beta版本的GitHub上才有该特性。通过 sign up for the beta 登录到 beta 版。
一起尝试一下
最简单的 action
workflow "Name of Workflow" {
on = "push"
resolves = ["deploy"]
}
action "deploy" {
needs = "Installation"
uses = "actions/someaction"
args = "run some code here and use a $ENV_VARIABLE_NAME"
secrets = [
"TOKEN",
]
env = {
ENV_VARIABLE_NAME = "myEnvVariable"
}
}
可以看到我们启动了 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