前言
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 包含了兩個操作。什麼是操作呢?可以理解為執行一組命令來完成某些事情,操作既可以
自定義,也可以使用
中分享的。在 job 中使用
uses
指定,搭配上
with
關鍵詞用於給操作傳遞引數。
第一個使用了
actions/checkout@v4
操作,它可以幫助我們將倉庫中的原始碼複製到工作流中來,這個操作是 GitHub Action 內建的操作之一。第二個使用了
softprops/action-gh-release@v1
的操作建立了一個 release 並自動上傳到 GitHub 中,
${{ secrets.GITHUB_TOKEN }}
用於
自動令牌身份驗證,
with
傳遞了四個引數,其中
tag_name
和
name
的值傳遞了 Actions 的
,
softprops/action-gh-release@v1
還有其他可選的引數,可以
檢視。
驗證
把 release.yaml 推送到倉庫中,並且設定好 GITHUB_TOKEN 的讀寫許可權:
然後推送一個 v1.0.0 的標籤:
git tag v1.0.0 git push origin --tags
檢視最終效果: