Github Actions入门级教程

706 阅读3分钟

术语(看看就好)

GitHub Actions 有一些自己的术语。

(1)workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。(一个workflow对应一个.github/workflows/*.yml文件)

(2)job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。(在workflow文件里写jobs字段)

(3)step(步骤):每个 job 由多个 step 构成,一步步完成。(在job里写step字段)

(4)action (动作):每个 step 可以依次执行一个或多个命令(action)。(step下面的字段)

workflow文件

GitHub Actions 的配置文件叫做 workflow 文件,存放在代码仓库的.github/workflows目录。

workflow 文件采用 YAML 格式,文件名可以任意取,但是后缀名统一为.yml,比如foo.yml。一个库可以有多个 workflow 文件。GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行该文件。

workflow 文件的配置字段非常多,详见官方文档。

目标一:使用Github Actions打印日志😪

在项目根目录下创建一个.github/workflows/suibian.yml文件,文件内容如下:

# 每个workflow文件的说明
name: learn-github-actions
# 在push代码后触发jobs工作流
on: [push]
# 工作流(工作流中的所有job组合在一起形成了这个workflow文件)
jobs:
  # 一个工作的id(key)
  check-bats-version:
    # 运行的环境
    runs-on: ubuntu-latest
    # 一个工作分为很多步骤(下面的每个步骤都是一个单独的操作或则脚本)
    steps:
      # 将你的仓库迁出到运行器上操作,每当你的工作将对仓库的代码操作时,都应该使用 checkout 操作。
      - name: Checkout
        uses: actions/checkout@v3
      # 安装node,可以指定版本
      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: '14'
      # 安装依赖项(bats就是一个npm包)
      - name: Install
        run: npm install -g bats
      # 查看bats包版本
      - name: Show version
        run: bats -v

然后提交到github上,在Actions一栏里面可以看到。标红的部分分别与上面yml文件中的字段对应。

image.png

点开check-bar-version工作,查看步骤。如果能看到安装包的版本,说明就成功了!

image.png

目标二:每次push代码到github时,自动构建部署github-pages😀

要实现自动构建github-pages,其实就是使用了github的一个开源库。actions-gh-pages

github.com/peaceiris/a…

里面也推荐了官方的自动构建部署github-pages服务。

在使用它之前需要先创建一个github token

然后新建一个.github/workflows/buil_docs.yml文件。这里使用的是nodejs项目,每次push到master分支都打包vitepress文档。

name: GitHub Actions Build and Deploy Demo

# 当 master 分支 push 代码的时候触发 workflow
on:
  push:
    branches:
      - master

jobs:
  # job-id:
  build-and-deploy:
    name: 构建并部署
    runs-on: ubuntu-latest
    steps:
      # 获取源码
      - name: Checkout
        uses: actions/checkout@v3

      # 安装 node
      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: '16.x'
          # 缓存依赖项
          cache: 'npm'

      # 安装依赖项
      - name: Install
        run: npm i

      # 打打包文档
      - name: Build docs
        run: npm run docs:build

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.MY_COURSE_TOKEN }}
          publish_dir: docs/.vitepress/dist

不是特别难,但是需要动手去操作下!

目标三:实现自动提交代码,让github commit一片绿 😅

每小时的1到6分钟制动提交一次。每次提交间隔不能小于5分钟。

name: ci

on:
  push:
    branches:
      - master
  schedule:
    # 分钟,小时,日,月,星期
    - cron: "1,6 * * * *"

jobs:
  autogreen:
    runs-on: ubuntu-latest
    steps:
      - name: Clone repository
        uses: actions/checkout@v2
      - name: Auto green
        run: |
          git config --local user.email "lukecheng233@163.com"
          git config --local user.name "lukecheng"
          git remote set-url origin https://${{ github.actor }}:${{ secrets.MY_COURSE_TOKEN }}@github.com/${{ github.repository }}
          git pull --rebase
          git commit --allow-empty -m "a commit a day keeps your girlfriend away"
          git push

目标四:实现自动签到掘金领矿石😂

专业版才有这个功能

可能对你有用的参考链接