クイックスタート: GitHub ワークフローを作成してアプリを発行する

このクイックスタートでは、GitHub ワークフローを作成してソース コードから .NET アプリを発行する方法について説明します。 .NET アプリを GitHub から宛先に自動的に発行することを、継続的デプロイ (CD) と呼びます。 アプリケーションを発行する可能性のある宛先は多数あります。このクイックスタートでは、Azure に発行します。

[前提条件]

発行プロファイルを追加する

アプリを Azure に発行するには、Azure portal でアプリケーションの App Service インスタンスを開きます。 リソースの [概要] で、 [発行プロファイルの取得] を選択し、* .PublishSetting ファイルをローカルに保存します。

Azure Portal, App Service resource: Get publish profile

警告

発行プロファイルには、Azure App Service リソースにアクセスするための資格情報などの機密情報が含まれています。 この情報は、常に慎重に扱う必要があります。

GitHub リポジトリで [Settings](設定) に移動し、左側のナビゲーション メニューから [Secrets](シークレット) を選択します。 新しいシークレットを追加するには、 [New repository secret](新しいリポジトリのシークレット) を選択します。

GitHub / Settings / Secret: Add new repository secret

[Name](名前) に「AZURE_PUBLISH_PROFILE」と入力し、発行プロファイルの XML コンテンツを [Value](値) テキスト領域に貼り付けます。 [Add secret](シークレットの追加) を選択します。 詳細については、「暗号化されたシークレット」を参照してください。

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

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

重要

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

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

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

name: publish

on:
  push:
    branches: [ production ]

env:
  AZURE_WEBAPP_NAME: DotNetWeb
  AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  publish:

    runs-on: ubuntu-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: |
        cd DotNet.WebApp
        dotnet build --configuration Release --no-restore
        dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
    - name: Test
      run: |
        cd DotNet.WebApp.Tests
        dotnet test --no-restore --verbosity normal
      
    - uses: azure/webapps-deploy@v2
      name: Deploy
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
        package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'

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

  • name: publish で名前を定義します。"publish" がワークフロー ステータス バッジに表示されます。

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

    on:
      push:
        branches: [ production ]
    
    • production ブランチで push が発生するとトリガーされます。
  • env ノードにより名前付き環境変数 (env var) が定義されます。

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

    jobs:
      publish:
    
        runs-on: ubuntu-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: |
            cd DotNet.WebApp
            dotnet build --configuration Release --no-restore
            dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
        - name: Test
          run: |
            cd DotNet.WebApp.Tests
            dotnet test --no-restore --verbosity normal
          
        - uses: azure/webapps-deploy@v2
          name: Deploy
          with:
            app-name: ${{ env.AZURE_WEBAPP_NAME }}
            publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
            package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
    
    • 最新バージョンの Ubuntu 上で実行する publish という名前のジョブが 1 つあります。
    • actions/setup-dotnet@v3 GitHub Action は、DOTNET_VERSION 環境変数から指定したバージョンで .NET SDK を設定するために使用されます。
    • dotnet restore コマンドが呼び出されます。
    • dotnet build コマンドが呼び出されます。
    • dotnet publish コマンドが呼び出されます。
    • dotnet test コマンドが呼び出されます。
    • azure/webapps-deploy@v2 GitHub Action により、指定した publish-profilepackage を使用してアプリがデプロイされます。
      • publish-profile は、AZURE_PUBLISH_PROFILE リポジトリ シークレットから割り当てられます。

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

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: publish passing badge GitHub: publish failing badge GitHub: publish no-status badge

関連項目

次のステップ