坚持使用基于Linux消费的Azure功能的CI/CD部署

坚持使用基于Linux消费的Azure功能的CI/CD部署,azure,azure-devops,azure-functions,azure-keyvault,Azure,Azure Devops,Azure Functions,Azure Keyvault,我制作了一个Azure函数(Python),以Linux消费计划托管。应用程序引擎位于开发资源组中。现在,我希望能够将它(以及随后的更改)部署到staging和prod ressource组。关于许多不同方法的文档让我感到困惑,尤其是大多数部署方法(部署槽…)都不适用于Linux消费计划,我也不使用高级部署方法。我曾想过设置版本控制,但我无法将Azure功能链接到Azure DevOps repo(部署中心已禁用,灰色) 你会怎么做?理想情况下使用Azure DevOps 提前感谢首先,您需要确

我制作了一个Azure函数(Python),以Linux消费计划托管。应用程序引擎位于开发资源组中。现在,我希望能够将它(以及随后的更改)部署到staging和prod ressource组。关于许多不同方法的文档让我感到困惑,尤其是大多数部署方法(部署槽…)都不适用于Linux消费计划,我也不使用高级部署方法。我曾想过设置版本控制,但我无法将Azure功能链接到Azure DevOps repo(部署中心已禁用,灰色)

你会怎么做?理想情况下使用Azure DevOps


提前感谢

首先,您需要确保您可以使用资源组和功能应用程序访问相关订阅

构建
在DevOps上,对于包含存储库的项目,转到管道>管道(以红色突出显示)。
在右上角,您应该能够看到并单击“新建管道”。在这个答案中,我将执行一个“Azure回购Git(YAML)”管道,所以您最好也这样做。如果您有任何其他特定的首选项,那么请确保您相应地更改了需要更改的内容。我们的目标基本上只是从构建过程中发布一个工件,它将被“发布管道”消耗

继续,对于构建管道,选择“Azure Repos Git(YAML)”将提示您选择项目中的哪个存储库,该存储库将1)包含我们将要创建的YAML文件,2)具有管道可用的源代码。无需太多细节,也可以将所有yaml管道文件放入自己的存储库中,然后(通过参考资料)包含包含源代码的存储库

下一步是“配置管道”。实际上有一个“Azure上Linux的Python函数应用程序”模板可用。然而,它也包含部署阶段,我通常总是将所有与部署相关的内容放在我的“发布管道”中。不过现在,我选择了“启动管道”。
实际上会弹出一个在线编辑器。在editro的顶部,您将看到存储库的名称和“azurepipelines.yml”。单击“azure pipelines.yml”以重命名管道以及yaml文件的名称,该文件将最终位于存储库的根目录中。
我已经建立了上述模板的一个版本,归结为必要的内容,并且它是可用的。只需删除“启动程序管道”中已经存在的内容,然后将pastebin的内容复制粘贴到管道中

保存管道时,您可能希望首先将其放入另一个分支,而不是主分支(它将提示您输入),然后创建PR。在管道工作时接受PR(您可以使用新创建的分支运行管道)。当构建管道在没有错误的情况下成功运行时,如果导航到成功运行的概述(以红色突出显示),您应该能够看到发布的工件。您可以单击并检查内容,以检查它们是否符合预期

发布
转到“发布”(以绿色突出显示,第一张图片)。从这里,您应该能够看到并单击“+新建”按钮

它会立即提示您选择所需的工作类型。只需单击“空作业”即可开始。
首先选择要消费的神器。单击左侧的“添加工件”框。从下拉列表中查找刚刚创建的管道。您可以配置要使用的版本(如果您有某些首选项),并为工件提供一个可在整个发布管道中使用的别名。
下一步是设置阶段。您需要3个阶段:开发阶段、登台阶段和最后一个生产阶段。目前,你应该有一个“阶段1”。如果您将鼠标悬停在舞台上方,您可以在方框下方看到一个“+”符号。单击它以添加一个阶段。再次选择空作业。对新创建的阶段框重复此操作(悬停,单击+,添加空作业)。
您现在应该有如下内容:

让我们从配置阶段1开始。单击阶段(框本身),并将其命名为“开发”或您喜欢的内容。然后单击“1作业,0任务”-链接。单击“代理作业”框,并根据您的需要配置代理作业(确保代理下载您的工件,可以在“工件下载”中进行配置)。
接下来,在刚才配置的代理作业上单击“+”符号。在提示中,使用搜索栏查找“Azure函数”。注意,有3个作业称为此。你想要一个叫做“Azure函数”的函数。单击并配置新创建的作业。这里应该是直截了当的。选择linux上的函数应用程序,并从列表中找到您的“开发”函数应用程序。默认情况下,“包或文件夹”应该类似于
$(System.DefaultWorkingDirectory)/***.zip,并且应该足够了,除非您对构建管道的工件进行了一些自定义。
你应该有这样的东西:

从“任务”-下拉列表(带有红色警告圈)中,您可以移动到“阶段2”(当然,您会将其重命名为“阶段1”为“开发”)。由于您没有使用插槽,不幸的是,在两个不同的资源组中的两个功能应用程序之间不可能进行交换-至少据我所知不是这样。因此,您必须重复从“开发”阶段开始的整个过程,在该阶段,您使用工件部署到staging资源组中的函数应用程序。这同样适用于您的最后一个阶段“第3阶段”,即部署到生产资源组中的功能应用程序

筹备和批准
我想我们一直在等什么。从图片上看