クイックスタート: GitHub ワークフローを作成してアプリを発行する
このクイックスタートでは、GitHub ワークフローを作成してソース コードから .NET アプリを発行する方法について説明します。 .NET アプリを GitHub から宛先に自動的に発行することを、継続的デプロイ (CD) と呼びます。 アプリケーションを発行する可能性のある宛先は多数あります。このクイックスタートでは、Azure に発行します。
[前提条件]
- GitHub アカウント。
- .NET ソース コード リポジトリ。
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- ASP.NET Core Web アプリ。
- Azure App Service リソース。
発行プロファイルを追加する
アプリを Azure に発行するには、Azure portal でアプリケーションの App Service インスタンスを開きます。 リソースの [概要] で、 [発行プロファイルの取得] を選択し、* .PublishSetting ファイルをローカルに保存します。
警告
発行プロファイルには、Azure App Service リソースにアクセスするための資格情報などの機密情報が含まれています。 この情報は、常に慎重に扱う必要があります。
GitHub リポジトリで [Settings](設定) に移動し、左側のナビゲーション メニューから [Secrets](シークレット) を選択します。 新しいシークレットを追加するには、 [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-profile
とpackage
を使用してアプリがデプロイされます。publish-profile
は、AZURE_PUBLISH_PROFILE
リポジトリ シークレットから割り当てられます。
- 最新バージョンの Ubuntu 上で実行する
ワークフロー状態バッジを作成する
GitHub リポジトリでは、通常、リポジトリ ディレクトリのルートに README.md ファイルを含めます。 同様に、さまざまなワークフローの最新の状態を報告することもお勧めします。 すべてのワークフローでは、README.md ファイル内で視覚に訴える状態バッジを生成できます。 ワークフロー状態バッジを追加するには、次の手順に従います。
GitHub リポジトリで、 [アクション] ナビゲーション オプションを選択します。
すべてのリポジトリ ワークフローが左側に表示されます。目的のワークフローと省略記号 ( [...] ) ボタンを選択します。
- 省略記号 ( [...] ) ボタンをクリックすると、選択したワークフローのメニュー オプションが展開されます。
[Create status badge](状態バッジの作成) メニュー オプションを選択します。
[Copy status badge Markdown](状態バッジ Markdown のコピー) ボタンを選択します。
Markdown を README.md ファイルに貼り付け、ファイルを保存して、変更をコミットしてプッシュします。
詳細については、「ワークフロー状態バッジを追加する」を参照してください。
発行ワークフロー ステータス バッジの例
成功 | Failing | 状態なし |
---|---|---|
関連項目
次のステップ
.NET