GitHub Actions 简介

GitHub 的持续集成服务(2018年10月推出);

持续集成(Continuous integration,简称CI)

Travis CI

行为、操作 即 actions,一个独立脚本,可以存入远程代码仓库

actions仓库 | actions仓库

awesome-actions仓库


action 引用方式

  1. userName/repoName 就表示 github.com/userName/repoName

workflow (工作流程)

持续集成一次运行的过程; GitHub Actions 的配置文件; 一个代码仓库可以有多个配置文件

存放在代码仓库的 .github/workflows 目录; workflow 文件采用 YAML 格式; 代码仓库自动运行这些配置文件

workflow 文件的配置字段


workflow 文件的配置字段

name: workflow 的名称 —> name: GitHub Actions Demo

on: 触发 workflow 的条件,通常是某些事件(代码库事件, 外部事件触发[, …]) —> on: [push, pull_request] | on: push

on:
  push:
    branches:    
      - master

jobs: 每一项任务的job_id

jobs:
# 每一项任务的job_id ~ my_first_job
  my_first_job:
  # name字段是任务的说明 ~ My first job
    name: My first job
  my_second_job:
    name: My second job

needs: 指定当前任务的依赖关系

jobs:
# 每一项任务的job_id ~ my_first_job
  my_first_job:
  # name字段是任务的说明 ~ My first job
    name: My first job
  my_second_job:
    name: My second job
    # 指定当前任务的依赖关系 needs: my_first_job | needs: [my_first_job, needs: my_second_job]
    needs: my_first_job

runs-on: 指定运行所需要的虚拟机环境, 它是必填字段 runs-on: ubuntu-18.04

# 虚拟机环境
ubuntu-latest,ubuntu-18.04或ubuntu-16.04
windows-latest,windows-2019或windows-2016
macOS-latest或macOS-10.14

steps: 指定每个 Job 的运行步骤,可以包含一个或多个步骤

name: Greeting from Mona
on: push

jobs:
  my-job:
    name: My Job
    runs-on: ubuntu-latest
    steps:
    # 步骤名称 name
    - name: Print a greeting
    # 环境变量 env
      env:
        MY_VAR: Hi there! My name is
        FIRST_NAME: yk-ddm
        # 运行的命令或者 action
      run: |
        echo $MY_VAR $FIRST_NAME.

job (任务)

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

github actions 配置文件的主体


step(步骤)

每个 job 由多个 step 构成,一步步完成


action (动作)

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