定义应从源代码管理将哪个项目部署到 Azure Functions 应用程序
Defining which project should be deployed to an Azure Functions app from source control
我们在 c# net core 中有一组 Azure Function Apps。每个 App 都包含少量的 Azure Functions。所有功能应用程序都驻留在一个 git 存储库中。
我们希望我们的一些环境能够从源自动部署(例如 bitBucket 或 gitHub)。
我们如何配置项目,以便 Azure 知道源中的哪个项目与创建的 Function App 相关?
我已经围绕这个问题搜索了好几天,但没有看到 "it just works" 之外的任何结果,所以只能假设我们遗漏了一些基本的东西。
我建议使用 Azure DevOps(以前称为 VSTS)部署到 Azure,您使用 YAML 定义一个构建管道,它可以从您的每个函数应用程序发布一个工件。然后,工件会被发布管道拾取并部署到 Azure。
它的基本构建块是,首先在每个项目的构建管道中使用一些像这样的 YAML:
...
steps:
# a script task that let's you use any CLI available on the DevOps build agent, also uses a variable for the build config
- script: dotnet build MyFirstProjectWithinSolution\MyFirstProject.csproj --configuration $(buildConfiguration)
displayName: 'dotnet build MyFirstProject'
# other steps removed, e.g. run and publish tests
- script: dotnet publish MyFirstProjectWithinSolution\MyFirstProject.csproj --configuration $(buildConfiguration) --output MyFirstArtifact
displayName: 'dotnet publish MyFirstProject'
# a DevOps named task called CopyFiles (which is version 2 = @2), DevOps supplies lots of standard tasks you can make use of
- task: CopyFiles@2
inputs:
contents: 'MyFirstProjectWithinSolution\MyFirstArtifact\**'
targetFolder: '$(Build.ArtifactStagingDirectory)'
# now publish the artifact which makes it available to the release pipeline, doing so into a sub folder allows multiple artifacts to be dealt with
- task: PublishBuildArtifacts@1
displayName: 'publish MyFirstArtifact artifact'
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)\MyFirstProjectWithinSolution\MyFirstArtifact'
artifactName: MyFirstArtifact
# now repeat the above for every project you need to deploy, each in their own artifact sub-folder
接下来创建一个版本,它以最简单的形式获取工件并进行一个或多个部署,这是一个部署两个函数应用程序项目的简单版本:
在部署阶段(上方右侧),您可以定义发布过程,同样以最简单的形式,您可以直接部署到生产或槽中,尽管在功能槽退出预览之前您可以还启动另一个功能应用程序并在那里部署和测试。
此屏幕截图显示了一个简单的部署,它使用来自 Azure DevOps 的标准 Azure Function App 部署:
在您的部署阶段,您可以定义部署哪个工件,并且在 运行 首次构建管道后,您将看到它创建的所有可用工件。
以上的全部或部分可以通过推送分支(或其他触发器,例如按计划)自动执行。如果您希望在发布前或发布阶段之间进行手动干预,也可以添加通知和 "gates"。
还有其他方法可以解决这个问题,例如使用多个构建管道,它基本上是完全灵活的,但以上是您可以用来一次部署一个或多个功能应用程序的元素。
我们在 c# net core 中有一组 Azure Function Apps。每个 App 都包含少量的 Azure Functions。所有功能应用程序都驻留在一个 git 存储库中。
我们希望我们的一些环境能够从源自动部署(例如 bitBucket 或 gitHub)。
我们如何配置项目,以便 Azure 知道源中的哪个项目与创建的 Function App 相关?
我已经围绕这个问题搜索了好几天,但没有看到 "it just works" 之外的任何结果,所以只能假设我们遗漏了一些基本的东西。
我建议使用 Azure DevOps(以前称为 VSTS)部署到 Azure,您使用 YAML 定义一个构建管道,它可以从您的每个函数应用程序发布一个工件。然后,工件会被发布管道拾取并部署到 Azure。
它的基本构建块是,首先在每个项目的构建管道中使用一些像这样的 YAML:
...
steps:
# a script task that let's you use any CLI available on the DevOps build agent, also uses a variable for the build config
- script: dotnet build MyFirstProjectWithinSolution\MyFirstProject.csproj --configuration $(buildConfiguration)
displayName: 'dotnet build MyFirstProject'
# other steps removed, e.g. run and publish tests
- script: dotnet publish MyFirstProjectWithinSolution\MyFirstProject.csproj --configuration $(buildConfiguration) --output MyFirstArtifact
displayName: 'dotnet publish MyFirstProject'
# a DevOps named task called CopyFiles (which is version 2 = @2), DevOps supplies lots of standard tasks you can make use of
- task: CopyFiles@2
inputs:
contents: 'MyFirstProjectWithinSolution\MyFirstArtifact\**'
targetFolder: '$(Build.ArtifactStagingDirectory)'
# now publish the artifact which makes it available to the release pipeline, doing so into a sub folder allows multiple artifacts to be dealt with
- task: PublishBuildArtifacts@1
displayName: 'publish MyFirstArtifact artifact'
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)\MyFirstProjectWithinSolution\MyFirstArtifact'
artifactName: MyFirstArtifact
# now repeat the above for every project you need to deploy, each in their own artifact sub-folder
接下来创建一个版本,它以最简单的形式获取工件并进行一个或多个部署,这是一个部署两个函数应用程序项目的简单版本:
在部署阶段(上方右侧),您可以定义发布过程,同样以最简单的形式,您可以直接部署到生产或槽中,尽管在功能槽退出预览之前您可以还启动另一个功能应用程序并在那里部署和测试。
此屏幕截图显示了一个简单的部署,它使用来自 Azure DevOps 的标准 Azure Function App 部署:
在您的部署阶段,您可以定义部署哪个工件,并且在 运行 首次构建管道后,您将看到它创建的所有可用工件。
以上的全部或部分可以通过推送分支(或其他触发器,例如按计划)自动执行。如果您希望在发布前或发布阶段之间进行手动干预,也可以添加通知和 "gates"。
还有其他方法可以解决这个问题,例如使用多个构建管道,它基本上是完全灵活的,但以上是您可以用来一次部署一个或多个功能应用程序的元素。