我正在尝试为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任务进行部署。
答案 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设计器和项目结构请参考屏幕截图。
2。已发布的任务信息:我使用[Deploy Azure App Service]任务,然后选择应用程序类型:Function App。更多信息,请参阅屏幕截图
答案 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
构建它。然后,我将该软件包作为工件发布。