GitHub Actions 参考
核心概念
Workflow
工作流,根据特定的事件(Event)触发一整套工作流程,比如一次推送到 master 分支的事件触发包括拉代码,装依赖,构建,测试,等等一系列任务(Job)的流程。
Job
任务,在一个工作流(Workflow)中,运行在特定运行环境(Runner)中的一个任务,比如在 Windows 上运行构建任务。不同任务可以并行执行,也可以指定依赖关系。
Step
步骤,一个任务(Job)可以拆分成多个步骤(Step),一个步骤可以跑一行或多行命令,也可以进行一套操作(Action)
Action
操作,为了完成具体某件事而进行的一套操作,比如创建一个 Release,上传一些文件。操作是可以自定义的,可以是 Node.js 脚本,也可以是 Docker 容器,非常灵活。
Runner
运行环境,GitHub 官方提供了 Windows / Linux / macOS 三种运行环境,也可以创建自定义的运行环境。
Event
事件,比如一次推送触发 push 事件,创建 Release 触发 releases create 事件。
示例
在仓库根目录创建 .github/workflows/main.yml
工作流描述文件,文件名可以随便起,一个 yml 就是一个工作流。
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| name: Build
on: push: branches: - master
jobs: build: name: Build runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [windows-latest, ubuntu-latest, macos-latest]
steps: - uses: actions/checkout@v2
- name: Windows build if: ${{ matrix.os == 'windows-latest' }} shell: cmd run: | mkdir .\out echo win32>.\out\win32.txt
- name: Linux build if: ${{ matrix.os == 'ubuntu-latest' }} shell: bash run: | mkdir -p ./out echo "linux" > ./out/linux.txt
- name: macOS build if: ${{ matrix.os == 'macos-latest' }} shell: bash run: | mkdir -p ./out echo "darwin" > ./out/darwin.txt - name: Create release if: ${{ startsWith(github.event.ref, 'refs/tags') }} uses: toyobayashi/upload-release-assets@v3.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.event.after }} release_name: ${{ github.event.after }} draft: true prerelease: false assets: | ./out/*.txt ./dist/main.js ./not/exists
|
官方中文文档
https://help.github.com/cn/actions