はじめに
ソースコードはGitHubに保存、アプリの公開はApp Serviceを利用している状況で、それぞれを手動で行っています。これをGitHubにソースコードをプッシュしたら自動でApp Serviceに反映されるようになったら手数が減って楽になりますね。
図にすると以下のような感じです。
このような自動化はGitHub Actionsを使うと実現できます。
今回はその設定方法を調べてみました。
手順
設定する方法は2つあります。
- Azure App Serviceのポータル上での設定
- GitHubのリポジトリでの設定
今回は2番目の方法についての記事となります。
それでは手順を見ていきましょう。
1. Azure App Serviceでの準備
まずは対象のApp Serviceから発行プロファイルをダウンロードしておきます。
発行プロファイルの取得
をクリックすると拡張子が「PublishSettings」であるファイルがダウンロードされます。このファイルをメモ帳やVisual Studio Codeなどで開くと、デプロイするための情報が記載されています。この文字列は後ほど利用します。
2. GitHubでの準備
2-1. シークレットの作成
まずはリポジトリにアクセスして「Setting」タブをクリックします。
左側メニューから「Secrets」→「Actions」と選んでいき、「New repository secret」を選択します。
Name
は任意の名前、Value
は先ほどApp Serviceからダウンロードした発行プロファイルの中身を貼り付けてAdd secret
を選択します。
これでGitHub Actionsから設定したシークレットの値を取得できるようになります。
2-2. GitHub Actionsの設定ファイルの作成
次にActions
タブをクリックします。
Deploymentの部分にDeploy a .NET Core app to an Azure Web App
のConfigure
をクリックします。
画面遷移するとApp Serviceへのデプロイ用の設定ファイルのテンプレートが表示されます。
これは編集可能なので、自分の環境や設定に合った内容に修正します。
今回は以下の通り3か所変更しました。
name: Build and deploy ASP.Net Core app to an Azure Web App env: # 変更1 AZURE_WEBAPP_NAME: [Azure Web Appの名前] AZURE_WEBAPP_PACKAGE_PATH: '.' # 変更2 .NET 6を利用する場合 DOTNET_VERSION: '6.x' on: push: branches: - "develop" workflow_dispatch: permissions: contents: read jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up .NET Core uses: actions/setup-dotnet@v2 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Set up dependency caching for faster builds uses: actions/cache@v3 with: path: ~/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} restore-keys: | ${{ runner.os }}-nuget- - name: Build with dotnet run: dotnet build --configuration Release - name: dotnet publish run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp - name: Upload artifact for deployment job uses: actions/upload-artifact@v3 with: name: .net-app path: ${{env.DOTNET_ROOT}}/myapp deploy: permissions: contents: none runs-on: ubuntu-latest needs: build environment: name: 'Development' url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} steps: - name: Download artifact from build job uses: actions/download-artifact@v3 with: name: .net-app - name: Deploy to Azure Web App id: deploy-to-webapp uses: azure/webapps-deploy@v2 with: app-name: ${{ env.AZURE_WEBAPP_NAME }} # 変更3 publish-profile: ${{ secrets.[2-1で作成したシークレットの名前] }} package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
最後に画面右上のStart Commit
→Commit new file
を押すと設定ファイルのリポジトリへの追加がコミットされます。
以上で設定は完了です。
今回の場合、develop
ブランチにコードをプッシュするたびにApp Serviceに自動でデプロイされます。