Github Action快速扫盲

4/25/2021 Github

# 序言

Github Action是Github自2018年10月推出的一款服务,主要用于CI/CD

CI / CD (Continuous Integration / Continuous Delivery or Deployment)

持续集成 & 持续交付/持续部署

# 可以做些什么

  1. 自动部署你的项目到Github Pages
  2. 编译OpenWRT固件
  3. 代码质量检查
  4. ...

Github Action的玩法非常多,在官方的Marketplace (opens new window)中,你可以搜索到大量别人已经写好的Action,参考对应文档即可轻松实现一些强大的功能。当然,如果你想自定义也是没有问题的,前提是你足够了解它。

# 一些概念

在Github Action中,通常由一个yaml配置文件对应一个工作流。这个yaml文件的命名可以随意,但是必须放在/.github/workflows/目录下。

在这个yaml文件下,你需要进行大量的配置。

下面通过一个简单的例子来详细介绍一下

github-actions-demo.yml

# 展示的名称 默认为文件名
name: GitHub Actions Demo 
# 触发的条件,详细参考:https://docs.github.com/en/actions/reference/events-that-trigger-workflows
on: [push]
# 工作
jobs: 
   # 自定义的工作
  Explore-GitHub-Actions:
    # 运行环境,详细参考:https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners
    runs-on: ubuntu-latest
    #步骤
    steps: 
      - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
      - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
      - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
      - name: Check out repository code
        uses: actions/checkout@v2
      - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
      - run: echo "🖥️ The workflow is now ready to test your code on the runner."
      - name: List files in the repository
        run: |
          ls ${{ github.workspace }}
      - run: echo "🍏 This job's status is ${{ job.status }}."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

以上是一个较为简单的模板。具体会因需求的增加导致参数也会增加,例如env,通常是一些个人的配置参数。或者secrets,一般是用来获取Github的Access Token之类的加密参数。总之,大部分配置都是类似结构。

# 一个栗子

因为本博客就是利用了Github Action完成的持续部署。所以这里简单说明一下该Action的使用方式。

首先在市场搜索VuePress,发现了一个star数最高的VuePress Deploy (opens new window)

使用方法在发布页描述的十分清楚,大致分为以下几个步鄹

  1. 在你的VuePress项目的根目录新建.github/workflows目录,并在其中新建一个vuepress-deploy.yml文件,复制以下内容。
name: Build and Deploy
on: [push]
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@master

    - name: vuepress-deploy
      uses: jenkey2011/vuepress-deploy@master
      env:
        ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
        TARGET_REPO: username/repo
        TARGET_BRANCH: master
        BUILD_SCRIPT: yarn && yarn build
        BUILD_DIR: blog/.vuepress/dist/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

其中TARGET_REPO是Github的用户名及你想存放VuePress的仓库,TARGET_BRANCH是你想要推送仓库的分支,BUILD_SCRIPT是你的构建脚本,BUILD_DIR是你构建之后生成的文件目录。根据自己本地的情况相应配置即可。

  1. Github token的生成和仓库secrets的添加

    Token的生成:点击你的头像 > Settings > Developer settings > Personal access tokens > Generate new token. 权限至少要勾选repo
    secrets的添加:Github的仓库下 > Settings > Secrets, 创建ACCESS_TOKEN, 值就填写你刚才创建的token,确定。

  2. 推送你的本地仓库到Github,触发Push事件,脚本会自动开始。在仓库的Action页面下即可查看具体过程的情况。

# 最后

自此,相信你已经对Github Action有了一个基本的了解。现在,你已经可以开始尝试通过Marketplace (opens new window)搜索你感兴趣的Action并使用,或者参考官方文档 (opens new window)自行编写一个Action了。