次の方法で共有


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

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

[前提条件]

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

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

Azure Portal、App Service リソース: 発行プロファイルを取得

Warnung

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

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

GitHub / Settings / Secret: 新しいリポジトリ シークレットを追加する

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

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

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

Important

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

ワークフロー ファイルは、通常、 jobs.<job_id>/steps[*]を介して 1 つ以上の GitHub アクションの構成を定義します。 詳細については、「 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は名前を定義し、"発行" はワークフローの状態バッジに表示されます。

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

    on:
      push:
        branches: [ production ]
    
    • push ブランチでproductionが発生したときにトリガーされます。
  • 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'値が割り当てられます。 環境変数は後で参照され、dotnet-version GitHub アクションのactions/setup-dotnet@v3を指定します。
  • 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 アクションは、DOTNET_VERSION環境変数から指定されたバージョンで .NET SDK を設定するために使用されます。
    • dotnet restore コマンドが呼び出されます。
    • dotnet build コマンドが呼び出されます。
    • dotnet publish コマンドが呼び出されます。
    • dotnet test コマンドが呼び出されます。
    • azure/webapps-deploy@v2 GitHub アクションは、指定されたpublish-profilepackageを使用してアプリをデプロイします。
      • publish-profileは、AZURE_PUBLISH_PROFILE リポジトリ シークレットから割り当てられます。

ワークフローステータスバッジを作成する

GitHub リポジトリの一般的な命名法では、リポジトリ ディレクトリのルートに README.md ファイルがあります。 同様に、さまざまなワークフローの最新の状態を報告することをお勧めします。 すべてのワークフローでステータス バッジを生成できます。これは、 README.md ファイル内で視覚的に魅力的です。 ワークフローステータスバッジを追加するには:

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

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

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

    GitHub: 状態バッジを作成する

  4. 「ステータスバッジのマークダウンをコピー」ボタンを選択します

    GitHub: 状態バッジ Markdown のコピー

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

詳細については、「 ワークフローステータスバッジの追加」を参照してください。

発行ワークフローの状態を示すバッジの例

パッシング 失敗 状態なし
GitHub: パッシング バッジを発行する GitHub: 発行に失敗したバッジ GitHub: 状態なしバッジを発行する

こちらも参照ください

次のステップ