Github Action快速扫盲
# 序言
Github Action是Github自2018年10月推出的一款服务,主要用于CI/CD
CI / CD (Continuous Integration / Continuous Delivery or Deployment)
持续集成 & 持续交付/持续部署
# 可以做些什么
- 自动部署你的项目到Github Pages
- 编译OpenWRT固件
- 代码质量检查
- ...
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 }}."
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)
使用方法在发布页描述的十分清楚,大致分为以下几个步鄹
- 在你的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/
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
是你构建之后生成的文件目录。根据自己本地的情况相应配置即可。
Github token的生成和仓库secrets的添加
Token的生成:点击你的头像 > Settings > Developer settings > Personal access tokens > Generate new token. 权限至少要勾选repo
secrets的添加:Github的仓库下 > Settings > Secrets, 创建ACCESS_TOKEN, 值就填写你刚才创建的token,确定。推送你的本地仓库到Github,触发Push事件,脚本会自动开始。在仓库的Action页面下即可查看具体过程的情况。
# 最后
自此,相信你已经对Github Action有了一个基本的了解。现在,你已经可以开始尝试通过Marketplace (opens new window)搜索你感兴趣的Action并使用,或者参考官方文档 (opens new window)自行编写一个Action了。