GitHub Actions CI/CD 工作流實戰

2023-08-30 12:02:40

1. 什麼是 GitHub Actions 與 workflow ?

GitHub Actions 是 GitHub 提供的一種持續整合(CI)和持續部署(CD)的工具,用於自動化軟體開發過程中的各種任務和工作流。GitHub Action Workflow 是一組定義在儲存庫中的自動化任務,可以根據不同的事件(例如程式碼推播、拉取請求、問題建立等)觸發執行。

每個 GitHub Action Workflow 都是由一個或多個步驟(Steps)組成,每個步驟可以包含一個或多個命令、指令碼或操作。這些步驟可以按順序執行,也可以並行執行,以便自動化構建、測試、部署等任務。

一些常見的用途包括:

  1. 自動測試和構建: 在程式碼推播到儲存庫時自動執行測試,確保程式碼的質量和穩定性。
  2. 自動部署: 當程式碼合併到主分支時,自動將應用程式部署到生產環境。
  3. 釋出通知: 在新問題建立或拉取請求時,自動傳送通知到團隊成員。
  4. 自動化檔案生成: 在程式碼變更時,自動生成更新的檔案。
  5. 版本釋出: 在釋出新版本時,自動執行一系列步驟,如建立標籤、生成釋出檔案等。
  6. 程式碼質量檢查: 自動執行程式碼風格檢查、靜態分析等工具,以確保程式碼符合規範。
  7. 容器構建: 自動構建 Docker 映象並將其推播到容器登入檔。
  8. 多環境支援: 根據不同分支或標籤,自動執行適合的工作流程,以支援不同的開發、測試和生產環境。

GitHub Action Workflow 使用 YAML 檔案來定義,該檔案位於儲存庫中的 .github/workflows 目錄下。這些定義可以根據專案的需求進行設定和自定義。

2. 程式碼實戰

2.1 以MSVS工程(C++工程)為例

# 定義構建流程
name: Build Process

# 當程式碼被推播到儲存庫時觸發工作流
on: push

jobs:
  # 定義構建作業
  build:
    # 在 Windows 環境中執行
    runs-on: windows-latest

    steps:
      # 步驟:檢出程式碼
      - name: Checkout code
        uses: actions/checkout@v3

      # 步驟:設定 MSBuild
      - name: Setup MSBuild
        uses: microsoft/[email protected]

      # 步驟:構建 VS 專案
      - name: Build VS Project
        run: |
          # 執行生成 DLL 的命令
          msbuild project.sln /p:Configuration=Release /p:Platform=x64

      # 步驟:上傳 ZIP 構件
      - name: Upload ZIP Artifact
        uses: actions/upload-artifact@v3
        with:
          name: project
          # 壓縮包過期時間
          retention-days: 90
          # 壓縮包路徑,需要根據自己專案設定進行相對應的設定
          path: |
            release

2.2 以Maven專案(Java專案)為例

# 定義構建流程
name: Build Process

# 當程式碼被推播到儲存庫時觸發工作流
on: push

jobs:
  # 定義構建作業
  build:
    # 在 Ubuntu 環境中執行
    runs-on: ubuntu-latest

    steps:
      # 步驟:檢出程式碼
      - name: Checkout code
        uses: actions/checkout@v3

      # 步驟:設定 Java 環境為 JDK 8,並使用 Corretto 發行版,快取 Maven
      - name: Setup Java
        uses: actions/setup-java@v3
        with:
          java-version: '8'
          distribution: 'corretto'
          cache: 'maven'

      # 步驟:構建 Maven 專案
      - name: Build Maven Project
        run: |
          # 執行打包 Maven 專案的命令
          mvn -DskipTests package

      # 步驟:上傳 ZIP 構件
      - name: Upload ZIP Artifact
        uses: actions/upload-artifact@v3
        with:
          name: project
          retention-days: 90
          path: |
            target/*

3. 如何找到GitHub Actions

3.1 找到你的GitHub倉庫

3.2 提交你的workflow檔案

在專案根路徑建立/.github/workflows資料夾,並在這個路徑下放置你的yaml構建指令碼

3.3 等待GitHub Actions構建完成

4. Actions MarketPlace

如果你對於一些不會寫的構建過程,你可以到Actions MarketPlace找到對應的構建指令碼並直接使用。

https://github.com/marketplace?type=actions

附錄

官方中文GitHub Actions檔案

https://docs.github.com/zh/actions