GitHub Actions と .NET
この概要では、.NET アプリケーション開発 GitHub Actions
GitHub のアクション
GitHub Actions は、次のようなスタンドアロン コマンドを表します。
- アクション/チェックアウト - このアクションは、ワークフローがアクセスできるように、
$GITHUB_WORKSPACE
のリポジトリをチェックアウトします。 - actions/setup-dotnet - このアクションは、アクションで使用する .NET CLI 環境を設定します。
- dotnet/versionsweeper - このアクションにより、サポート対象外のターゲット バージョンの .NET リポジトリがスイープされます。
これらのコマンドは単一のアクションに限定されますが、ワークフロー構成を通じて強力です。 ワークフローコンポジションでは、ワークフローをトリガーする イベント を定義します。 ワークフローが実行されると、さまざまなジョブの実行が指示されます。 各ジョブは任意の数のステップが定義されます。 手順 GitHub Actions に委任するか、またはコマンドライン スクリプトを呼び出します。
詳細については、「GitHub Actionsの概要」を参照してください。 ワークフロー ファイルは、アプリケーションをビルド、テスト、発行するためのさまざまな手順を表すコンポジションと考えてください。
カスタム GitHub Actions
Marketplaceで使用できる GitHub Actions は多数ありますが、独自に作成することもできます。 .NET アプリケーションを実行する GitHub Actions を作成できます。 詳細については、「チュートリアル: .NET を使用して GitHub アクションを作成する」を参照してください。
ワークフロー ファイル
GitHub Actions はワークフロー ファイルを通じて利用されます。 ワークフロー ファイルはリポジトリの
ワークフロー ファイルの例
チュートリアル および クイックスタートとして提供される .NET ワークフロー ファイルの例は多数あります。 ワークフロー ファイル名の良い例をいくつか次に示します。
ワークフローのファイル名
説明
ソース コードをコンパイル (またはビルド) します。 ソース コードがコンパイルされない場合、これは失敗します。
リポジトリ内で単体テストを実行します。 テストを実行するには、最初にソース コードをコンパイルする必要があります。これは実際にはビルド ワークフローとテスト ワークフローの両方です (build-validation.yml ワークフローよりも優先されます)。 単体テストに失敗すると、ワークフローが失敗します。
ソースコードをパッケージ化し、宛先に公開します。
セキュリティの脆弱性とコーディング エラーについてコードを分析します。 検出された脆弱性によってエラーが発生する可能性があります。
暗号化されたシークレット
ワークフロー ファイル
${{ 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 イベントの例
次の例は、ワークフローの 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 はこれを検知し、ワークフローを手動で実行する理由をユーザーに求めるように、UI が動的に変更されます。 steps
は、ユーザーから提供された理由を出力します。
詳細については、「ワークフローをトリガーする
.NET CLI (コマンド ライン インターフェース)
.NET コマンド ライン インターフェイス (CLI) は、.NET アプリケーションを開発、ビルド、実行、発行するためのクロスプラットフォーム ツールチェーンです。 .NET CLI は、ワークフロー ファイル内の個々の steps
の一部として run
に使用されます。 一般的なコマンドは次のとおりです。
詳細については、「.NET CLI の概要 を参照してください。
関連項目
.NET を使用した GitHub Actions の詳細については、次のリソースを検討してください。
クイック スタート:
チュートリアル:
- チュートリアル: .NET を使用して GitHub アクションを作成する
.NET