GitHub Actions 入門指南

可可西里發表於2024-01-17

前言

GitHub Actions 可以構建一組自動化的工作流程,並提供了拉取請求、合併分支等事件來觸發他們。一般成熟的開源專案會在每個版本釋出時提供 releases ,它就是透過 Actions 來自動釋出的。本文就以自動釋出 releases 這個例子來認識 Actions。

建立 workflow

workflow 被稱為工作流,每個工作流以一個 yaml 檔案表達。在倉庫中建立 .github/workflows/release.yaml 檔案,如果需要多個工作流,則建立多個 yaml 檔案即可。

release.yaml:

# 定義工作流的名稱
name: teach-study Release

# 定義一個 push 事件:當推送帶有 "v*" 的標籤時觸發
on:
  push:
    tags:
      - "v*"

# 定義時區
env:
  TZ: Asia/Shanghai

這樣我們就定義好了一個事件,接下來我們來定義 jobs,來建立自動上傳 release 的邏輯:

...

jobs:
  create_release:
    name: Create Release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Create Release
        id: create_release
        uses: softprops/action-gh-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          name: Demo ${{ github.ref_name }}
          draft: false
          prerelease: false

這個 jobs 包含了兩個操作。什麼是操作呢?可以理解為執行一組命令來完成某些事情,操作既可以自定義,也可以使用 GitHub 社群中分享的。在 job 中使用 uses 指定,搭配上 with 關鍵詞用於給操作傳遞引數。

第一個使用了 actions/checkout@v4 操作,它可以幫助我們將倉庫中的原始碼複製到工作流中來,這個操作是 GitHub Action 內建的操作之一。第二個使用了 softprops/action-gh-release@v1 的操作建立了一個 release 並自動上傳到 GitHub 中, ${{ secrets.GITHUB_TOKEN }} 用於自動令牌身份驗證with 傳遞了四個引數,其中 tag_namename 的值傳遞了 Actions 的上下文softprops/action-gh-release@v1 還有其他可選的引數,可以點此檢視。

驗證

把 release.yaml 推送到倉庫中,並且設定好 GITHUB_TOKEN 的讀寫許可權:

 

GitHub Actions 入門指南

然後推送一個 v1.0.0 的標籤:

git tag v1.0.0
git push origin --tags

檢視最終效果:

GitHub Actions 入門指南

GitHub Actions 入門指南