かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Azure Functions v2 のプロジェクトを Run-From-Zip 用に固める Azure DevOps 用のビルドの YAML

はじめて YAML でビルド定義したけど簡単でびっくりしました。これは XAML より記述少なくていいわ…。

pool:
  vmImage: 'VS2017-Win2016'

variables:
  solution: '**/*.sln'
  projects: '**/*.csproj'
  testProjects: '**/*Tests.csproj'
  buildConfiguration: 'release'
  mainProject: 'path to function app csproj file(ex: Hoge/Hoge.csproj))'

steps:
- task: DotNetCoreCLI@2
  inputs:
    command: 'restore'
    projects: '$(projects)'

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'

- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '$(testProjects)'
    arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'

- script: dotnet publish --output $(Build.BinariesDirectory) --configuration $(buildConfiguration) $(mainProject)

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: $(Build.BinariesDirectory)
    includeRootFolder: false
    archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip

- task: PublishBuildArtifacts@1

こうするとビルドID.zipというファイルが出来るので、あとは Release のパイプラインで Deploy Azure App Service の v4 系(まだプレビュー)から Run-From-Zip に対応してるっぽいので、それでさくっとデプロイ出来ます。

割といい感じっぽい。