GitHub Actions 持續(xù)集成

GitHub Actions 是 GitHub 的持續(xù)集成服務(wù)。
通常持續(xù)集成是由很多操作組成的,比如抓取代碼、執(zhí)行腳本、登錄遠(yuǎn)程服務(wù)器、發(fā)布到第三方服務(wù)等。GitHub將這些操作稱作actions。

如果你需要某個(gè) action,不必自己寫復(fù)雜的腳本,直接引用他人寫好的 action 即可,整個(gè)持續(xù)集成過(guò)程,就變成了一個(gè) actions 的組合。
GitHub 做了一個(gè)官方市場(chǎng),可以搜索到他人提交的 actions:
下面分別從基本概念和發(fā)布流程詳細(xì)說(shuō)明一下GitHub Actions。
基本概念:
workflow (流程):持續(xù)集成一次運(yùn)行的過(guò)程,就是一個(gè) workflow。
job (任務(wù)):一個(gè) workflow 由一個(gè)或多個(gè) jobs 構(gòu)成,含義是一次持續(xù)集成的運(yùn)行,可以完成多個(gè)任務(wù)。
step(步驟):每個(gè) job 由多個(gè) step 構(gòu)成,一步步完成。
action (動(dòng)作):每個(gè) step 可以依次執(zhí)行一個(gè)或多個(gè)命令(action)。
創(chuàng)建 workflow 文件,在項(xiàng)目的 .github/workflows 目錄,創(chuàng)建一個(gè) workflow 文件,這里用的是ci.yml。
name: Node.js CIon: [push]jobs:build:runs-on: ubuntu-lateststrategy: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@v1with:node-version: ${{ matrix.node-version }}- run: npm install- run: npm run build --if-present- run: npm testenv:CI: true
runs-on 指定在哪個(gè)操作系統(tǒng)上運(yùn)行,有三種配置方式:
1、Ubunturuns-on: ubuntu-latest2、Windowsruns-on: windows-latest3、macOSruns-on: macos-latest
node-version 指定 node 版本,有三種配置方式,可以指定多個(gè)版本都運(yùn)行,也可以指定在單個(gè)版本下運(yùn)行。
1、使用三個(gè) node 版本,'x'是一個(gè)通配符node-version: [8.x, 10.x, 12.x]2、可以寫具體的版本號(hào)node-version: [8.16.2, 10.17.0]3、單個(gè)版本node-version: '12.x'
如果不指定node版本,則GitHub使用環(huán)境的默認(rèn)值node版本。
GitHub 托管的操作系統(tǒng)上安裝了npm 和 yarn 來(lái)處理依賴關(guān)系。在構(gòu)建和測(cè)試代碼之前,可以使用 npm 和 yarn 在工作流中安裝依賴項(xiàng)。
1、使用npmrun: npm install1、使用yarnrun: run: yarn
安裝 package.json 文件中的 dependencies 依賴。
1、使用npmrun: npm ci1、使用yarnrun: yarn --frozen-lockfile
安裝 package-lock.json 或者 npm-shrinkwrap.json 文件中的依賴,這樣可以防止 npm install 安裝時(shí) lock 文件發(fā)生變化。
拉取代碼。這里用的是 GitHub 官方的 action: actions/checkout@v2
