共用方式為


GitHub Actions 和 .NET

在此概觀中,您將瞭解 GitHub Actions 在 .NET 應用程式開發中扮演的角色。 GitHub Actions 可讓您的原始程式碼存放庫自動化持續整合 (CI) 和持續傳遞 (CD)。 除此之外,GitHub Actions 還提供更進階的方案,為程式碼檢閱、分支管理以及問題分類提供自動化鉤子。 在 GitHub 中使用 .NET 原始程式碼,您可以透過許多方式運用 GitHub Actions。

GitHub Actions

GitHub Actions 代表獨立命令,例如:

  • actions/checkout - 此操作會在 $GITHUB_WORKSPACE位置簽出您的存放庫,讓您的工作流程可以存取它。
  • actions/setup-dotnet - 此動作會設定 .NET CLI 環境以用於動作。
  • dotnet/versionsweeper - 此操作會掃描 .NET 存放庫,檢查 .NET 不再支援的目標版本。

雖然這些命令與單一動作隔離,但是透過 工作流程組合來強大。 在工作流程組合中,您定義事件,即觸發工作流程的事件。 工作流程執行之後,會 指示執行各種 作業。 每個作業都會定義任意數目的步驟 步驟 委派給 GitHub Actions,或者呼叫命令列腳本。

如需詳細資訊,請參閱 GitHub Actions 簡介。 將工作流程檔案視為組合,代表建置、測試及/或發佈應用程式的各種步驟。 有許多 .NET CLI 命令 可供使用,其中大部分可以在 GitHub Action 的上下文中使用。

自訂 GitHub Actions

雖然 Marketplace中提供大量的 GitHub Actions,但您可能想要自行撰寫。 您可以建立執行 .NET 應用程式的 GitHub Actions。 如需詳細資訊,請參閱 教學課程:使用 .NET 建立 GitHub 動作

工作流程檔案

GitHub Actions 是透過工作流程檔案來運作的。 工作流程檔案必須位於存放庫的 .github/workflows 目錄中,而且必須是 YAML (*.yml*.yaml)。 工作流程檔案會定義 工作流程組合。 工作流程是由一或多個作業所組成的可設定自動化程式。 如需詳細資訊,請參閱 gitHub Actions工作流程語法。

範例工作流程檔案

提供許多 .NET 工作流程檔案範例,教學課程快速入門。 以下是數個很好的工作流程檔名範例:

工作流程檔名

描述

編譯原始程式碼(或建置)。 如果原始程式碼未編譯,這將會失敗。

執行存放庫中的單元測試。 若要執行測試,必須先編譯原始程式碼,這確實是建置和測試工作流程(它會取代 build-validation.yml 工作流程)。 失敗的單元測試會導致工作流程失敗。

封裝並且將原始程式碼發佈至目標位置。

分析您的程式代碼是否有安全性弱點和編碼錯誤。 任何探索到的弱點都可能導致失敗。

加密的秘密

若要在工作流程檔案中使用 加密的秘密,您可以使用來自 secrets 上下文物件的 工作流程表達式語法 來引用秘密。

${{ secrets.MY_SECRET_VALUE }} # The MY_SECRET_VALUE must exist in the repository as a secret

秘密值永遠不會列印在記錄中。 取而代之的是,他們的名稱會帶有星號印出,這些星號代表其值。 例如,當每個步驟在作業內執行時,其使用的所有值都會輸出至動作記錄檔。 秘密值會顯示如下:

MY_SECRET_VALUE: ***

重要

secrets 內容提供一個適用於存放庫、分支和操作範圍的 GitHub 驗證令牌。 由 GitHub 提供,不需要任何使用者介入:

${{ secrets.GITHUB_TOKEN }}

如需詳細資訊,請參閱在工作流程中使用加密密碼

事件

工作流程是由許多不同類型的事件觸發。 除了最常見的 Webhook 事件之外,還有排程的事件和手動事件。

範例網絡掛鈎事件

下列範例示範如何指定工作流程的 Webhook 事件觸發程式:

name: code coverage

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main, staging

jobs:
  coverage:

    runs-on: ubuntu-latest

    # steps omitted for brevity

在上述工作流程中,pushpull_request 事件將會觸發工作流程執行。

範例排程事件

下列範例示範如何為工作流程指定排程的 cron 作業事件觸發器:

name: scan
on:
  schedule:
  - cron: '0 0 1 * *'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    # steps omitted for brevity

在上述工作流程中,schedule 事件會指定 '0 0 1 * *'cron,這會觸發工作流程在每個月的第一天執行。 定期執行工作流程適用於需要長時間運行的流程,或進行那些不需頻繁關注的操作。

手動事件範例

下列範例示範如何為工作流程指定手動事件觸發:

name: build
on:
  workflow_dispatch:
    inputs:
      reason:
        description: 'The reason for running the workflow'
        required: true
        default: 'Manual run'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: 'Print manual run reason'
        if: ${{ github.event_name == 'workflow_dispatch' }}
        run: |
          echo 'Reason: ${{ github.event.inputs.reason }}'

    # additional steps omitted for brevity

在上述工作流程中,workflow_dispatch 事件需要輸入 reason。 GitHub 偵測到此情況後,其使用者介面會自動變更,提示使用者提供手動執行工作流程的原因。 steps 會列印使用者所提供的原因。

如需詳細資訊,請參閱 觸發工作流程的事件

.NET CLI

.NET 命令行介面 (CLI) 是一個跨平臺的工具鏈,用於開發、建置、執行及發佈 .NET 應用程式。 .NET CLI 用於在工作流程檔案中的個別過程中執行 run 作為 steps 的一部分。 一般命令包括:

如需詳細資訊,請參閱 .NET CLI 概觀

另請參閱

如需深入瞭解使用 .NET 的 GitHub Actions,請考慮下列資源: