GitHub Actions 指南
GitHub Actions
使你可以直接在你的GitHub
库中创建自定义的工作流,工作流指的就是自动化的流程,比如构建、测试、打包、发布、部署等等,也就是说你可以直接进行 CI
(持续集成)和 CD
(持续部署)。
基本概念
(1)workflow
: 一个 workflow
工作流就是一个完整的过程,每个workflow
包含一组 jobs
任务。
(2)job : jobs
任务包含一个或多个job
,每个 job
包含一系列的 steps
步骤。
(3)step
: 每个 step
步骤可以执行指令或者使用一个 action
动作。
(4)action
: 每个 action
动作就是一个通用的基本单元。
配置 workflow
workflow
必须存储在你的项目库根路径下的 .github/workflows
目录中,每一个 workflow
对应一个具体的.yml
文件(或者 .yaml
)。
workflow
示例:
name:GreetEveryone
# This workflow is triggered on pushes to the repository.
on: [push]
jobs:
your_job_id:
# Job name is Greeting
name: Greeting
# This job runs on Linux
runs-on: ubuntu-latest
steps:
# This step uses GitHub's hello-world-javascript-action: https://github.com/actions/hello-world-javascript-action
- name: Hello world
uses: actions/hello-world-javascript-action@v1
with:
who-to-greet: 'Mona the Octocat'
id: hello
# This step prints an output (time) from the previous step's action.
- name: Echo the greeting's time
run: echo 'The time was ${
{
steps.hello.outputs.time }}.
说明:
(1)最外层的 name
指定了 workflow
的名称。
(2)on
声明了一旦发生了 push
操作就会触发这个 workflow
。
(3)jobs
定义了任务集,其中可以有一个或多个job
任务,示例中只有一个。
(4)runs-on
声明了运行的环境。
(5)steps
定义需要执行哪些步骤。
(6)每个 step
可以定义自己的 name
和id
,通过 uses
可以声明使用一个具体的 action
,通过run
声明需要执行哪些指令。
(7)${
{}}
可以使用上下文参数。
上述示例可以抽象为:
name: <workflow name>
on: <events that trigger workflows>
jobs:
<job_id>:
name: <job_name>
runs-on: <runner>
steps:
- name: <step_name>
uses: <action>
with:
<parameter_name>: <parameter_value>
id: <step_id>
- name: <step_name>
run: <commands>
on
on
声明了何时触发 workflow
,它可以是:
(1)一个或多个GitHub
事件,比如 ush
了一个 commit
、创建了一个issue
、产生了一次pull`` request
等等,示例:
on:[push,pull_request]
(2)预定的时间,示例(每天零点零分触发):
on:
schedule:
-cron: