Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9749

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

$
0
0

はじめに

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

ワークフローを作る

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

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

name:.NET Coreon:push:branches:[master]pull_request:branches:[master]jobs:build:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v2-name:Setup .NET Coreuses:actions/setup-dotnet@v1with:dotnet-version:3.1.101-name:Install dependenciesrun:dotnet restore-name:Buildrun:dotnet build --configuration Release --no-restore-name:Testrun: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 Coreuses:actions/setup-dotnet@v1with:dotnet-version:3.1.100-name:Install dependenciesrun:dotnet restore-name:Buildrun:dotnet publish "{path}" --configuration Release -o hoge

コードフォーマッター

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

dotnet format

-name:Restore Toolrun:dotnet tool restore-name:Check code formatrun: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@v1with: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


Viewing all articles
Browse latest Browse all 9749

Trending Articles