GitHub Actions_github


GitHub Actions 是 GitHub 的持续集成服务。

通常持续集成是由很多操作组成的,比如抓取代码、执行脚本、登录远程服务器、发布到第三方服务等。GitHub将这些操作称作actions。

如果你需要某个 action,不必自己写复杂的脚本,直接引用他人写好的 action 即可,整个持续集成过程,就变成了一个 actions 的组合。

GitHub 做了一个官方市场,可以搜索到他人提交的 actions:

下面分别从基本概念和发布流程详细说明一下GitHub Actions。

基本概念:

workflow (流程):持续集成一次运行的过程,就是一个 workflow。

job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。

step(步骤):每个 job 由多个 step 构成,一步步完成。

action (动作):每个 step 可以依次执行一个或多个命令(action)。

创建 workflow 文件,在项目的 .github/workflows 目录,创建一个 workflow 文件,这里用的是ci.yml。

name: Node.js CI

on: [push]

jobs:
build:

runs-on: ubuntu-latest

strategy:
matrix:
node-version: [8.x, 10.x, 12.x]

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm run build --if-present
- run: npm test
env:
CI: true

runs-on 指定在哪个操作系统上运行,有三种配置方式:

1、Ubuntu
runs-on: ubuntu-latest
2、Windows
runs-on: windows-latest
3、macOS
runs-on: macos-latest

node-version 指定 node 版本,有三种配置方式,可以指定多个版本都运行,也可以指定在单个版本下运行。

1、使用三个 node 版本,'x'是一个通配符
node-version: [8.x, 10.x, 12.x]
2、可以写具体的版本号
node-version: [8.16.2, 10.17.0]
3、单个版本
node-version: '12.x'

如果不指定node版本,则GitHub使用环境的默认值node版本。

GitHub 托管的操作系统上安装了npm 和 yarn 来处理依赖关系。在构建和测试代码之前,可以使用 npm 和 yarn 在工作流中安装依赖项。

1、使用npm
run: npm install
1、使用yarn
run: run: yarn

安装 package.json 文件中的 dependencies 依赖。

1、使用npm
run: npm ci
1、使用yarn
run: yarn --frozen-lockfile

安装 package-lock.json 或者 npm-shrinkwrap.json 文件中的依赖,这样可以防止 npm install 安装时 lock 文件发生变化。

拉取代码。这里用的是 GitHub 官方的 action: actions/checkout@v2