GitHub Actions 是 GitHub 提供的持續集成和持續交付(CI/CD)平臺,允許開發者自動化軟件工作流程(如構建、測試、部署)。以下是詳細介紹:
一、核心概念
-
Workflow(工作流程)
持續集成的一次完整運行過程,由 YAML 文件定義,存儲在倉庫的.github/workflows
目錄中。每個文件對應一個獨立的工作流。 -
Job(任務)
一個 Workflow 包含多個 Job,每個 Job 在獨立的運行器(虛擬機/容器)中執行。Job 默認并行執行,但可通過needs
定義依賴順序。 -
Step(步驟)
每個 Job 由多個 Step 組成,按順序執行。每個 Step 可以是 Shell 命令或預定義的 Action。 -
Action(動作)
可復用的腳本單元,可直接引用他人共享的 Action(如actions/checkout@v3
)。GitHub 官方維護了豐富的 Action 庫 GitHub Marketplace。
二、配置文件結構
name: CI Workflow # 工作流名稱
on: [push] # 觸發事件(如 push、pull_request、定時任務 schedule)
jobs:build:runs-on: ubuntu-latest # 運行環境(Ubuntu、Windows、macOS)steps:- name: Checkout codeuses: actions/checkout@v4 # 使用預定義 Action 拉取代碼- name: Install dependenciesrun: npm install # 執行 Shell 命令- name: Run testsrun: npm test
三、核心功能
-
事件觸發
- 代碼推送(
push
)、拉取請求(pull_request
)、定時任務(schedule
)等均可觸發工作流。 - 示例:每天 8 點自動運行
on:schedule:- cron: '0 0 * * *' # UTC 時間,對應北京時間 8 點
- 代碼推送(
-
多環境支持
支持運行在 GitHub 托管的虛擬機(如ubuntu-latest
)或自托管運行器,并可指定容器環境 。 -
密鑰管理與安全
使用secrets
存儲敏感信息(如 API Key),避免硬編碼在配置文件中。例如部署時引用密鑰:env:API_KEY: ${{ secrets.DEPLOY_KEY }}
-
自動化部署
常見場景:自動構建靜態站點并發布到 GitHub Pages ,或部署到云服務(AWS、Azure)。
四、典型使用場景
-
持續集成(CI)
自動運行測試、代碼風格檢查,確保代碼質量。 -
持續部署(CD)
代碼合并到主分支后,自動部署到生產環境。 -
定時任務
如每日數據備份、爬蟲任務 。 -
跨平臺構建
同時編譯 Windows、Linux、macOS 版本的程序。
五、優勢
- 高度集成:與 GitHub 倉庫無縫協作,無需額外配置。
- 靈活復用:通過共享 Action 減少重復代碼 。
- 低成本:公開倉庫免費使用 GitHub 托管的運行器 。
六、快速入門示例
- 在倉庫中創建
.github/workflows/demo.yml
。 - 寫入以下內容(當代碼推送到
main
分支時輸出 “Hello World”):
name: Demo
on:push:branches: [main]
jobs:greet:runs-on: ubuntu-lateststeps:- run: echo "Hello GitHub Actions!"
參考資料
- GitHub Actions 入門教程(阮一峰)
- 使用 GitHub Actions 自動部署 Hugo
- GitHub 官方快速入門指南
- 部署到云服務案例