什麼是 GitHub Actions?自動化你的開發工作流程

什麼是 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