次の方法で共有


GitHub Actions と .NET

この概要では、.NET アプリケーション開発 GitHub Actions どのような役割を果たすかについて説明します。 GitHub Actions を使用すると、ソース コード リポジトリで継続的インテグレーション (CI) と継続的デリバリー (CD) を自動化できます。 さらに、GitHub Actions では、より高度なシナリオが公開されます。コード レビュー、ブランチ管理、問題トリアージを使用して自動化のためのフックを提供します。 GitHub の .NET ソース コードを使用すると、GitHub Actions をさまざまな方法で利用できます。

GitHub のアクション

GitHub Actions は、次のようなスタンドアロン コマンドを表します。

  • アクション/チェックアウト - このアクションは、ワークフローがアクセスできるように、$GITHUB_WORKSPACEのリポジトリをチェックアウトします。
  • actions/setup-dotnet - このアクションは、アクションで使用する .NET CLI 環境を設定します。
  • dotnet/versionsweeper - このアクションにより、サポート対象外のターゲット バージョンの .NET リポジトリがスイープされます。

これらのコマンドは単一のアクションに限定されますが、ワークフロー構成を通じて強力です。 ワークフローコンポジションでは、ワークフローをトリガーする イベント を定義します。 ワークフローが実行されると、さまざまなジョブの実行が指示されます。 各ジョブは任意の数のステップが定義されます。 手順 GitHub Actions に委任するか、またはコマンドライン スクリプトを呼び出します。

詳細については、「GitHub Actionsの概要」を参照してください。 ワークフロー ファイルは、アプリケーションをビルド、テスト、発行するためのさまざまな手順を表すコンポジションと考えてください。 .NET CLI コマンドの多くを使用できます。そのほとんどは、GitHub アクションのコンテキストで使用できます。

カスタム GitHub Actions

Marketplaceで使用できる GitHub Actions は多数ありますが、独自に作成することもできます。 .NET アプリケーションを実行する GitHub Actions を作成できます。 詳細については、「チュートリアル: .NET を使用して GitHub アクションを作成する」を参照してください。

ワークフロー ファイル

GitHub Actions はワークフロー ファイルを通じて利用されます。 ワークフロー ファイルはリポジトリの .github/workflows ディレクトリに配置する必要があり、YAML (*.yml または *.yaml) である必要があります。 ワークフロー ファイルは、ワークフローコンポジションを定義します。 ワークフローは、1 つ以上のジョブで構成される構成可能な自動化プロセスです。 詳細については、「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 の詳細については、次のリソースを検討してください。