什麼是 GitHub Actions?自動化你的開發工作流程
什麼是 GitHub Actions?自動化你的開發工作流程¶
GitHub Actions 是一個由 GitHub 提供的強大 持續整合 (CI) 和 持續交付 (CD) 平台。它讓開發者能夠直接在 GitHub 儲存庫中,輕鬆地自動化軟體開發的各個環節。
工作流程的觸發方式¶
你的 GitHub Actions 工作流程可以透過多種方式自動觸發,讓你的開發流程更加順暢:
- 程式碼提交 (Push):當有新程式碼推送到特定分支時。
- 建立拉取請求 (Pull Request):當有人建立或更新拉取請求時,常用於自動執行測試。
- 建立新議題 (Issue):當儲存庫中建立新議題時,可用於自動分配標籤或通知。
- 排程運行 (Schedule):設定在特定時間(例如每天午夜)自動執行任務。
- 手動觸發 (Workflow Dispatch):允許你手動從 GitHub 介面啟動工作流程。
所有這些自動化流程都透過簡潔的 YAML 檔案 來管理,這些檔案定義了每個步驟和條件。
執行環境:虛擬機 (VM) 與 Docker 容器¶
GitHub Actions 的靈活性體現在它能夠在不同的環境中執行你的任務:
GitHub 託管的虛擬機 (VM):
- 免維護:GitHub 會負責虛擬機的維護、更新和擴展,你無需操心基礎設施。
- 多系統支援:你可以選擇在 Linux (Ubuntu)、macOS 或 Windows 系統上運行你的任務,只需透過 runs-on: 關鍵字指定,例如 runs-on: ubuntu-latest。
-
預裝工具:這些虛擬機通常預裝了 Node.js、Python、Java、.NET、Git、Docker 等常見開發工具,讓你快速上手。
Docker 容器: -
你也可以將整個任務或其中的特定步驟在 Docker 容器中運行,確保環境的一致性和隔離性。
運行費用與免費額度¶
雖然 GitHub Actions 提供了強大的服務,但其運行時間(分鐘數)和儲存空間會產生費用。不過,GitHub 也提供了慷慨的免費額度:
公共儲存庫 (Public Repositories):
- 對於所有公共儲存庫,使用 GitHub 託管的標準執行器 是完全免費且沒有分鐘數限制的。
-
但如果需要更強大的運算資源(例如使用較大型的執行器),則可能需要付費。
私人儲存庫 (Private Repositories): -
根據你的 GitHub 帳戶方案,每月會提供一定的免費執行分鐘數和儲存空間。超出額度後,才會開始計費。
- 免費方案:每月 2,000 分鐘執行時間和 500 MB 儲存空間。
- 專業版/團隊版:提供更高的免費額度。
- 分鐘數倍率:不同作業系統的執行時間會以不同倍率計算:
Linux 執行器:1 倍
Windows 執行器:2 倍
macOS 執行器:10 倍
這表示使用 Windows 或 macOS 執行器會更快消耗你的免費分鐘數。
自託管執行器 (Self-hosted Runners):
- 如果你擁有自己的伺服器或機器,並將其設定為自託管執行器,那麼這些機器的運行分鐘數是完全免費的。你只需承擔你自己的硬體和基礎設施成本。這對於有特殊需求或需要大量運行的專案來說,是個經濟實惠的選擇。
如何查看你的用量?¶
你可以隨時前往你的 GitHub 帳戶設定中的「Billing and Plans」(帳單與方案)頁面,在那裡你可以清楚地看到 GitHub Actions 和儲存空間的當前使用情況,以及剩餘的免費額度。
- 點選你的github 頭像(右上角)
- 點選Setting
- 在左邊找到Billing and Licensing (Link)
- Overview
- Metered usage: 這邊是你使用的狀態以及使用的花費,但別緊張先前提到每個人都有免費額度
- 往下滑找到Action usage,可以看到扣除(in discount) 之後的才是真實收費(billable usage),也就是不需要付費
架設你的Github action¶
GitHub Actions 透過 YAML 檔案來定義和管理你的自動化工作流程。要讓 GitHub 執行你的自動化任務,你需要將這個 YAML 檔案放置在專案儲存庫的特定位置。
YAML 檔案的位置¶
你的工作流程 YAML 檔案必須放在專案根目錄下的 .github/workflows/ 資料夾內。例如,如果你的專案名稱是 my-awesome-project,那麼你的 YAML 檔案路徑會是:
my-awesome-project/├── .github/│ └── workflows/│ └── your-workflow-name.yml # 你的 YAML 檔案會放在這裡└── (其他專案檔案)
工作流程 YAML 檔案範例解析¶
以下是一個簡化的 YAML 檔案範例,它展示了 GitHub Actions 工作流程的核心組成部分:
name: Automated Content Generation and Site Build # 工作流程的名稱# 定義觸發工作流程的時機on: push: branches: [main] # 當有新的程式碼推送到 'main' 分支時觸發 workflow_dispatch: # 允許你手動從 GitHub 介面觸發此工作流程 schedule: - cron: '0 0 * * *' # 設定排程,例如每天 UTC 時間午夜自動運行# 定義工作流程的權限permissions: contents: write # 授予工作流程寫入儲存庫內容的權限# 定義一個或多個任務 (Jobs)jobs: build-and-deploy: # 這是任務的唯一識別名稱 runs-on: ubuntu-latest # 指定任務將在哪種虛擬機上運行 (這裡選擇最新的 Ubuntu) steps: # 任務中的一系列執行步驟 - name: Checkout source code # 步驟名稱:檢出儲存庫程式碼 uses: actions/checkout@v4 # 使用 GitHub 官方提供的動作來獲取程式碼 - name: Set up Python environment # 步驟名稱:設定 Python 環境 uses: actions/setup-python@v5 # 使用官方動作來設定 Python with: python-version: '3.11' # 指定要使用的 Python 版本 - name: Install Python dependencies # 步驟名稱:安裝 Python 專案所需的套件 run: | pip install Pillow PyYAML bs4 requests # 執行命令安裝依賴 - name: Run content generation script # 步驟名稱:執行你的主要程式 run: | python generate_content.py # 執行生成內容的 Python 腳本 # 這裡可以加入更多命令來驗證生成內容
手動運行action¶
- 在repo中找到Action
- 選擇你的action
- Run workflow
- Run後 等待片刻就可以看到新的workflow開始,就可以檢查是否執行成功
透過 GitHub Actions 的託管服務,你可以將許多需要重複檢查的流程自動化,從而簡化你的開發工作,讓生活更輕鬆!
Comments
Loading comments…
Leave a Comment