如何使用CI管道部署Azure功能?
大多数时候,当我部署一个函数时,我都是通过发布概要文件来完成的。但是,我不知道如何通过CI/CD部署它 当我尝试通过Azure上的部署中心进行此操作时,它不起作用。您可以进入部署中心->Github->Azure管道->选择存储库/分支->部署。我认为这是因为我的存储库文件夹设置不是它所期望的。 我的设置如下如何使用CI管道部署Azure功能?,azure,azure-functions,azure-pipelines,Azure,Azure Functions,Azure Pipelines,大多数时候,当我部署一个函数时,我都是通过发布概要文件来完成的。但是,我不知道如何通过CI/CD部署它 当我尝试通过Azure上的部署中心进行此操作时,它不起作用。您可以进入部署中心->Github->Azure管道->选择存储库/分支->部署。我认为这是因为我的存储库文件夹设置不是它所期望的。 我的设置如下 -Repo folder --Project1 --Project1Function ---Function1.cs ---Project1Function.csproj ---host.
-Repo folder
--Project1
--Project1Function
---Function1.cs
---Project1Function.csproj
---host.json
--.gitignore
--Project1.sln
我认为问题在于Azure希望包含host.json文件的Project1Function文件夹实际位于存储库的根文件夹中。问题是Project1Function引用Project1,基本上只是将Project1中的代码作为函数调用,这就是为什么回购协议是这样构造的。因此,给定这种结构,如何通过管道将其与CI一起部署?我真的找不到一个好的资源来描述如何做到这一点,所以一个指向教程/答案的链接也可以。我想这就是您正在寻找的资源 这表明这里的问题是文件夹结构 在同一个解决方案中不能有两个单独的项目,例如一个用于功能应用程序(具有所需的文件夹结构),另一个用于其他应用程序并在其他项目中引用功能应用程序项目
这可能有助于获得功能应用程序项目中所需的结构。Azure功能可以用Azure WebApp部署的类似方式进行部署。遵循正常的构建和部署过程
pool:
name: Azure Pipelines
demands:
- msbuild
- visualstudio
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.4.1'
inputs:
versionSpec: 4.4.1
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: '$(Parameters.solution)'
vstsFeed: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
- task: VSBuild@1
displayName: 'Build solution'
inputs:
solution: '$(Parameters.solution)'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
clean: true
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
publishWebProjects: false
projects: |
XXXXXX/XXXXXXXXXXX.csproj
arguments: '-o $(Build.ArtifactStagingDirectory)/XXXXXXXXX -c Release'
zipAfterPublish: false
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/XXXXXXXXXX'
ArtifactName: '$(Parameters.ArtifactName)'
condition: succeededOrFailed()
steps:
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy Azure App Service'
inputs:
azureSubscription: 'Subscription Name'
WebAppName: XXXXXX
VirtualApplication: /
packageForLinux: '$(System.DefaultWorkingDirectory)/_Pipelinename/drop/XXXXXX.zip'
你做了什么研究?你试了什么?什么不起作用?怎么没用?这正是我要找的。最后我稍微改变了一下我的文件夹结构,但仍然不起作用。我一直在寻找管道应该如何部署的细节。我对如何部署的所有搜索都会导致一些常规信息或管道任务/yaml文件不完整。非常感谢!