FIXER cloud.config Tech Blog
Azure FunctionsをAzure DevOpsでCI/CDする《CI編》
2020年07月28日 10時00分更新
こんにちは、最近久々にFunctionsを触ってる石川です。
今回はAzure Functionsをいい感じに開発したくなったので記事を書いています(CIといいつつテストしてない部分は許してください)。
まずは今回組み立てる(恐ろしく雑な)概要図をペタリ。
GitHubにホストしているリポジトリの変更をAzure DevOpsのPipelinesで監視、developブランチに変更があったら自動でAzure Functionsへデプロイを行なうといったものです。単純。
まずはビルドパイプラインの方を設定していきます。
New pipelinesからリポジトリを選択して、Starter pipelineを選択。
こんな感じでテンプレートのymlが表示されるのでガリガリ書いていきます。
今回書くymlで行ないたいことは以下のような感じ。
1. dotnet restore
2. dotnet publish
3. ビルド成果物をzipで固める
4. artifactsに置く
では早速と行きたいところですがパイプラインが動き出す契機の設定をします。
trigger:
- develop
pr: none
triggerで監視するブランチを指定します。pr: none はPR作成時に動き出さないようにする魔法の言葉です。
では早速、dotnetコマンドから捌いていきましょう。
yml編集画面にはアシスタントがありますのでそちらを活用します。
赤枠の部分をクリックすると現れますので使い倒していきます。
先頭にある .NET Core を選択します。
dotnetコマンドがいい感じに使えるのでこれでdotnet publishまで一気に出力させちゃいます。
できたものがこちら。
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
projects: '**/*.csproj'
feedsToUse: 'select'
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: false
arguments: '--no-restore -o ./publish'
zipAfterPublish: false
restore した後にビルドして ./publish に成果物を出力するという処理です。
あとはこれをzipにしてartifactsに置くと完成です。
こちらもアシスタントがあるので使っていきます。
選択するとこんな感じ。
今回は成果物を ./publish に置いてますのでRoot folder or file to archiveに$(System.DefaultWorkingDirectory)/publishを指定します。
そして生成されるymlがこちら。
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)/publish'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: true
Prepend root folder name to archive pathsはチェックを外しておきます。
同じ要領でリリースパイプラインで利用するためにartifactsに置く部分も設定します。
publishで検索すると見つかるのでそれを選択。
各設定値はデフォルトのままでOKです。
生成されるymlはこちら。
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
あとはSave and Runを押して実行しましょう!
最後まで走ればOK!!!
ということでビルドパイプラインが完成しました。次回はリリースパイプラインを作っていきます。
連休明け予定………!
それでは。
石川 順平/FIXER
九州のとある高専卒のFIXER2年目。すき間時間でbotを作ったりAZ系の資格の勉強をしたりしています。まだまだAzure初心者です。趣味はゲームやったりバイクで出かけたりすることです。某MMORPGとか騎空士をしたりもしてます。
[転載元]
Azure FunctionsをAzure DevOpsでCI/CDする – CI編 – #Azureリレー