次の方法で共有


クイックスタート: ビルド検証の GitHub ワークフローを作成する

このクイックスタートでは、GitHub で .NET ソース コードのコンパイルを検証する GitHub ワークフローを作成する方法について学習します。 .NET コードのコンパイルは、コードの更新プログラムの品質を確保するために実行できる最も基本的な検証手順の 1 つです。 コードがコンパイル (またはビルド) されない場合、これは簡単な抑止力であり、コードの修正が必要かどうかの明確なサインになります。

前提条件

ワークフロー ファイルを作成する

GitHub リポジトリで、 .github/workflows ディレクトリに新しい YAML ファイルを追加します。 ワークフローの目的を明確に示す、わかりやすいファイル名を選択します。 詳細については、「ワークフロー ファイル」を参照してください。

重要

GitHub では、ワークフロー構成ファイルを .github/workflows ディレクトリ内に配置する必要があります。

ワークフロー ファイルにより、通常、jobs.<job_id>/steps[*] を介して 1 つ以上の GitHub Action の構成が定義されます。 詳細については、「GitHub Actions のワークフロー構文」を参照してください。

build-validation.yml という名前の新しいファイルを作成し、次の YML の内容をコピーして貼り付けます。

name: build

on:
  push:
  pull_request:
    branches: [ main ]
    paths:
    - '**.cs'
    - '**.csproj'

env:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  build:

    name: build-${{matrix.os}}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: Install dependencies
      run: dotnet restore
      
    - name: Build
      run: dotnet build --configuration Release --no-restore

上記のワークフロー構成:

  • name: build で名前が定義され、"ビルド" がワークフローの状態バッジに表示されます。

    name: build
    
  • on ノードは、ワークフローをトリガーするイベントを示します。

    on:
      push:
      pull_request:
        branches: [ main ]
        paths:
        - '**.cs'
        - '**.csproj'
    
    • .cs または .csproj ファイル拡張子で終わるいずれかのファイルが変更されている main ブランチで push または pull_request が発生するとトリガーされます。
  • env ノードにより名前付き環境変数 (env var) が定義されます。

    env:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • 環境変数 DOTNET_VERSION に値 '6.0.401' が割り当てられます。 この環境変数は、actions/setup-dotnet@v3 GitHub Action の dotnet-version を指定するために後で参照します。
  • jobs ノードにより、ワークフローの手順が構築されます。

    jobs:
      build:
    
        name: build-${{matrix.os}}
        runs-on: ${{ matrix.os }}
        strategy:
          matrix:
            os: [ubuntu-latest, windows-latest, macOS-latest]
    
        steps:
        - uses: actions/checkout@v3
        - name: Setup .NET Core
          uses: actions/setup-dotnet@v3
          with:
            dotnet-version: ${{ env.DOTNET_VERSION }}
    
        - name: Install dependencies
          run: dotnet restore
          
        - name: Build
          run: dotnet build --configuration Release --no-restore
    
    • build-<os> という名前の 1 つのジョブがあります。ここで、<os>strategy/matrix のオペレーティング システム名です。 nameruns-on の要素は、matrix/os の各値に対して動的です。 これは、Ubuntu、Windows、macOS の最新バージョンで実行されます。

    • actions/setup-dotnet@v3 GitHub Action は、DOTNET_VERSION 環境変数から指定したバージョンで .NET SDK を設定するために必要です。

    • (省略可能).NET ワークロードによっては、追加の手順が必要になる場合があります。 この例では省略していますが、アプリをビルドするために追加のツールのインストールが必要になる場合があります。

      • たとえば、ASP.NET Core Blazor WebAssembly アプリケーションを Ahead-of-Time (AoT) コンパイルを使用してビルドする場合は、復元、ビルド、または発行の各操作を実行する前に、対応するワークロードをインストールします。
      - name: Install WASM Tools Workload
        run: dotnet workload install wasm-tools
      

      .NET ワークロードの詳細については、dotnet workload install を参照してください。

    • dotnet restore コマンドが呼び出されます。

    • dotnet build コマンドが呼び出されます。

この場合、ワークフロー ファイルは、アプリケーションをビルドするためのさまざまな手順を表すコンポジションと考えてください。 多くの .NET CLI コマンドが用意されており、そのほとんどが GitHub Action のコンテキストで使用できます。

ワークフロー状態バッジを作成する

GitHub リポジトリでは、通常、リポジトリ ディレクトリのルートに README.md ファイルを含めます。 同様に、さまざまなワークフローの最新の状態を報告することもお勧めします。 すべてのワークフローでは、README.md ファイル内で視覚に訴える状態バッジを生成できます。 ワークフロー状態バッジを追加するには、次の手順に従います。

  1. GitHub リポジトリで、 [アクション] ナビゲーション オプションを選択します。

  2. すべてのリポジトリ ワークフローが左側に表示されます。目的のワークフローと省略記号 ( [...] ) ボタンを選択します。

    • 省略記号 ( [...] ) ボタンをクリックすると、選択したワークフローのメニュー オプションが展開されます。
  3. [Create status badge](状態バッジの作成) メニュー オプションを選択します。

    GitHub: Create status badge

  4. [Copy status badge Markdown](状態バッジ Markdown のコピー) ボタンを選択します。

    GitHub: Copy status badge Markdown

  5. Markdown を README.md ファイルに貼り付け、ファイルを保存して、変更をコミットしてプッシュします。

詳細については、「ワークフロー状態バッジを追加する」を参照してください。

ビルド ワークフローの状態バッジの例

成功 Failing 状態なし
GitHub: build passing badge GitHub: build failing badge GitHub: build no-status badge

関連項目

次のステップ