如何使用CI管道部署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.

大多数时候,当我部署一个函数时,我都是通过发布概要文件来完成的。但是,我不知道如何通过CI/CD部署它

当我尝试通过Azure上的部署中心进行此操作时,它不起作用。您可以进入部署中心->Github->Azure管道->选择存储库/分支->部署。我认为这是因为我的存储库文件夹设置不是它所期望的。 我的设置如下

-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文件不完整。非常感谢!