构建并发布Azure函数以包含function.json文件

时间:2019-01-21 06:51:24

标签: azure azure-devops azure-functions azure-pipelines

我正在尝试为1.x版Azure功能配置CI / CD管道。 Azure功能由Azure Service Bus触发,并且这些配置(主题和订阅)在function.json文件中。我们很少安装此Azure函数,并且希望在构建/发布期间需要在Azure DevOps中以某种方式更改function.json文件。

这是一项“传统工作”,因此我们在Azure DevOps中没有以前的CI / CD管道。早先已经从Visual Studio手动部署了它。现在,我已经为Azure DevOps配置了生成和发布配置,但是它们没有按我预期的那样工作:文件没有像以前那样部署。

工作版本的部署如下:

wwwroot
 | - bin
 | | - dlls
 | | - de, es, fr, etc. folders
 | - MyFunction
 | | - function.json
 | - appsettings.json
 | - host.json
 | - packages.config
 | - Web.config

现在,我尝试从Azure DevOps进行部署的方式如下:

 wwwroot
 | - dlls
 | - host.json
 | - de, es, fr, etc. folders

只有“ bin文件夹”,缺少function.json文件。

我应该如何在Azure DevOps中构建/部署Azure函数,以像以前那样使用function.json文件和bin文件夹进行部署?我已经在构建管道中尝试了几种不同的dotnet构建和dotnet发布命令。在发布管道中,我使用了Azure App Service Deploy任务进行部署。

2 个答案:

答案 0 :(得分:1)

  

我应该如何在Azure DevOps中构建/部署Azure函数以像以前那样使用function.json文件和bin文件夹进行部署?

我可以使用Azure Devops CI / CD正确部署Azure功能,以下是详细步骤:

1。构建任务yaml文件如下:

queue:
  name: Hosted VS2017
  demands: 
  - msbuild
  - visualstudio

steps:
- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.3.0'


- task: NuGetCommand@2
  displayName: 'NuGet restore'


- task: VSBuild@1
  displayName: 'Build solution **\*.sln'


- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    SourceFolder: 'FunctionApp2\bin\debug\net461'

    TargetFolder: '$(build.artifactstagingdirectory)'


- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'

UI设计器和项目结构请参考屏幕截图。

enter image description here

2。已发布的任务信息:我使用[Deploy Azure App Service]任务,然后选择应用程序类型:Function App。更多信息,请参阅屏幕截图

enter image description here

答案 1 :(得分:0)

偶然地我自己解决了这个问题。我使用以下参数运行Visual Studio Build任务:

/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:SkipInvalidConfigurations=true
/p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)/package/"
/p:DeployIisAppPath="Default Web Site"
/p:OutputPath="$(build.artifactstagingdirectory)/out/"

DesktopBuildPackageLocation按照我想要的$(Build.ArtifactStagingDirectory)/package/WantedOutputPackage.zip构建它。然后,我将该软件包作为工件发布。