LoginSignup
2
3

More than 3 years have passed since last update.

GitHub Actionsで.NET CoreアプリをAzureにデプロイする

Last updated at Posted at 2020-05-02

はじめに

GitHub Actionsで.NET CoreアプリをAzure App Serviceにデプロイするまでを書きます。

ワークフローを作る

[new workflow]から.NET Coreを選択

[set up this workflow]をクリックするとテンプレートが表示される。

name: .NET Core

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 3.1.101
    - name: Install dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --configuration Release --no-restore
    - name: Test
      run: dotnet test --no-restore --verbosity normal

このテンプレートに沿って変更します。

checkout

git submodulesを使ってるリポジトリでv2ではsubmodules: trueがサポートされてなかったので仕方なくv1を利用しました。

+    - uses: actions/checkout@v1
+      with:
+        submodules: true
-    - uses: actions/checkout@v2

submodulesでsshだと取得出来ないのでhttpsに変更。

.gitmodules
[submodule "..."]
 path = repo
+ url = https://github.com/repo.git
- url = git@github.com:repo.git

setup-dotnet

- name: Setup .NET Core
    uses: actions/setup-dotnet@v1
    with:
    dotnet-version: 3.1.100
- name: Install dependencies
    run: dotnet restore
- name: Build
    run: dotnet publish "{path}" --configuration Release -o hoge

コードフォーマッター

.NET Coreではdotnet formatというフォーマッタがある。

dotnet format

- name: Restore Tool
    run: dotnet tool restore
- name: Check code format 
    run: dotnet format --check --dry-run

※マニフェストファイルがないとdotnet toolコマンドが有効にならないので注意。導入はこちらこちらが参考になると思います。

オプション

--check : フォーマットせずチェックする
--dry-run : 失敗したときに0以外の終了コードを返す

webapps-deploy

Azureにデプロイするためのワークフロー。デプロイするための認証情報を取得する必要があるので[発行プロファイルの取得]を押下。githubのSecretにてpublish_profileの名前(名前はなんでもよい)でダウンロードしたファイルを以下で貼り付け。packageはdotnet publishで出力したディレクトリを指定する。

image.png

Secretで登録したkeyをpublish-profileに指定する。

- uses: azure/webapps-deploy@v1
   with:
     publish-profile: ${{ secrets.publish_profile }}
     package: './hoge' 

masterにpushされたら自動デプロイする

push:
    branches: [ master ]

こんな感じでワークフローが実行されると思います。
image.png

AppServiceの設定

[デプロイセンター]からgithubを押下
image.png

github actionsを選択
まだプレビューですorz
image.png

デプロイするリポジトリを入力。ワークフローはさっきつくったので[既存のワークフロー定義を使用して構成する]を選択。新規で作るとサンプルを勝手にコミットされるのでやめましょう(MSはいらないお節介が多い気が..)
image.png
完了したらあとはpushしてワークフロー流したらデプロイ完了。

Azureではkuduというデプロイエンジンが使われていましたがようやくまともなCIがサポートされて使い勝手がよくなりました。

AppSercve on LinuxのB1インスタンスを利用してるのですが、masterにマージされると高確率で失敗する。。リトライすればデプロイ出来るのだが、、

参考

Deploy .NET Core web application using GitHub Actions

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3