Github Action学习

公司的CI就是抄Github Action语法的,学一下不亏。

术语

  1. workflow: 工作流程,持续集成一次运行的过程,就是一个 workflow。
  2. job: 任务,一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。多个任务之间并行执行。
  3. step: 步骤,每个 job 由多个 step 构成,一步步完成。
  4. action: 动作,每个 step 可以依次执行一个或多个动作(action)。

文件格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
name: Git
on: # 这里表示什么时候触发此CI
push: # 这里表示在push到下面分支时,发起
branches:
- master
- dev
jobs:
build: # 任务build
runs-on: ubuntu-latest # 指定使用哪个镜像
strategy: # 指定运行本任务时的环境变量
matrix:
node-version: [12.x]
steps: # 本任务分成几个步骤
- uses: actions/checkout@v1 # 这是checkout,可以把本仓库的代码拉到当前目录

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1 # 这里是使用 nodejs 环境配置插件,会自动安装nodejs,并且使用前面的环境变量控制版本
with:
node-version: ${{ matrix.node-version }}

- name: Configuration environment
env: # 声明用到哪些环境变量,配置在仓库的settings里面
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
run: | # run 是执行 bash 命令,多个命令首行用管道符然后回车,然后一行一个命令就好了
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "git"
git config --global user.email "git@git.com"
- name: Install dependencies
run: |
npm i -g hexo-cli
npm i
- name: Deploy hexo
run: |
hexo clean && hexo generate && hexo deploy