🤔
App service にASP.NET Core Applicationのデプロイ
Main Goal
Githubactionを用いてASP.NET Coreのアプリケーションをデプロイする.
初めてgithubactionを0から使うのでちょっと無駄に詰まったことがあるから個人メモ
このリポジトリのアプリをApp serviceにデプロイする.
完成品のpiplelineはこれ
name: Deploy main on push
on:
push:
branches:
- main
env:
AZURE_WEBAPP_NAME: NotionCMSBlogService
AZURE_WEBAPP_PACKAGE_PATH: '.'
DOTNET_VERSION: '6.0.x'
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 'Checkout GitHub Action'
uses: actions/checkout@v2
- name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
#Run dotnet build and publish: -r linux-x64
- name: dotnet build and publish
run: |
cd Api
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release -o '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v2
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.DEV_AZURE_PUBLISH_PROFILE }}
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/Api/myapp'
詰まって点が2つ
- ビルドが失敗する.
- デプロイはできるものの、エンドポイントにアクセスすると、
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
のエラーが出る.
-
の解消
まずビルドが失敗するのは、現在のリポジトリは
Api
README.md
のディレクトリ構造になっていて、このままだと.slnファイルが見つけられずエラーとなる。
ので、これはとりあえずApiディレクトリに移動してから実行すれば問題ない。
(workflowを動かす) -
の解消
デプロイ後のapp serviceでは
app serviceにコンソールからアクセスするとわかるように
home/site/wwwroot/
配下にプロジェクトが置かれる。
ASP.NET Coreのビルド後のアプリケーションにアクセスするにはこのwwwroot/ディレクトリ直下にweb.configファイルが存在する必要がある。
もともと無駄なビルド前のプロジェクトも一緒にデプロイしていてweb.configがwwwroot/ディレクトリ直下に設置されていなかったのが問題だったっぽい。
ので
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.DEV_AZURE_PUBLISH_PROFILE }}
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/Api/myapp'
デプロイするパッケージのpathをちゃんとビルド後のファイルのみにしてデプロイすればうまく動作した.
Discussion