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 簡介。 將工作流程檔案視為組合,代表建置、測試及/或發佈應用程式的各種步驟。 有許多 .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
在上述工作流程中,push
和 pull_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,請考慮下列資源:
快速入門(s):
教學課程(s):
- 教學課程:使用 .NET 建立 GitHub Action