繁体   English   中英

坚持基于 Linux 消费的 Azure 函数的 CI/CD 部署

[英]Stuck with CI/CD deploy of Linux Consumption based Azure Function

我制作了一个 Azure 函数(Python),托管在 Linux 消费计划中。 App Engine 位于开发资源组中。 我现在希望能够将它(以及后续更改)部署到 staging 和 prod 资源组。 有关执行此操作的许多不同方法的文档让我感到困惑,尤其是大多数部署方法(部署槽...)在 Linux Consumption 计划中不可用,而我对 Premium 计划没有用处。 我想设置一个版本控制,但我无法将我的 Azure 函数链接到 Azure DevOps 存储库(部署中心已禁用,灰色)。

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

提前致谢

首先,您需要确保您有权访问有问题的订阅,以及资源组和函数应用。

Azure 开发运营

建造
在 DevOps 上,对于包含存储库的项目,转到 Pipelines > Pipelines(以红色突出显示)。
在右上角,您应该能够看到并单击“新建管道”。 我将在这个答案中做一个“Azure Repos Git (YAML)”管道,所以你不妨一起去。 如果您有任何其他特定偏好,那么只需确保相应地更改需要更改的内容。 我们的目标基本上只是从我们的构建过程中发布一个工件,然后由“发布管道”使用。

继续前进,对于构建管道,选择“Azure Repos Git (YAML)”将提示您选择项目中的哪个存储库,它将 1) 包含我们将要创建的 YAML 文件,以及 2) 拥有源代码可用于管道。 无需赘述,也可以将所有 yaml-pipeline 文件放入其自己的存储库中,然后(通过资源)包含包含源代码的存储库。

下一步是“配置您的管道”。 实际上有一个“Python Function App to Linux on Azure”模板可用。 但是,它也包含部署阶段,我通常总是将所有与部署相关的内容放入我的“发布管道”中。 不过,就目前而言,我选择了“入门管道”。
实际上会弹出一个在线编辑器。 在编辑器的顶部,您将看到存储库的名称和“azure-pipelines.yml”。 单击“azure-pipelines.yml”以重命名管道以及 yaml 文件的名称,该文件最终将位于存储库的根目录中。
我已经提供了上述模板的一个版本,归结为必要的内容,可在此处获得 只需删除“启动管道”中已有的任何内容,然后将 pastebin 的内容复制粘贴到管道中。

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

构建管道概述

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

添加新的发布管道

它会立即提示您选择您想要的工作类型。 只需单击“空作业”即可开始。
首先选择要消耗的神器。 单击左侧的“添加工件”框。 从下拉列表中找到您刚刚创建的管道。 您可以配置要使用的版本(如果您有某些偏好),并为工件指定一个别名,以便在整个发布管道中使用。
接下来是设置您的阶段。 您需要 3 个阶段:一个开发阶段,一个分期阶段,最后一个生产阶段。 目前你应该有一个“第一阶段”。 如果您将鼠标悬停在舞台上方,您可以在框下方看到一个“+”号。 单击它以添加阶段。 再次选择空作业。 对新创建的舞台框重复此操作(悬停,单击 +,添加空作业)。
你现在应该有这样的东西:

分期

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

发展阶段

Azure 函数任务

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

分期和批准
我们一直在等待什么,我想。 从带有阶段概述的图片中,您可以看到每个阶段在框的每一侧都有 2 个附加的“按钮”。 当有闪电和用户图标(左),只有一个用户图标时。 左边是“前阶段动作”,右边是“后阶段动作”。 在您的场景中,您可能希望为“第 2 阶段”/“分期”和“第 3 阶段”/“生产”配置“前阶段操作”。 在这两种情况下,我都会添加“预部署批准”,如下所示:

部署前批准

您可以添加特定人员或整个组。 它将要求有人然后转到发布管道概述,然后在部署之前批准下一阶段(或者更确切地说,该阶段在批准之前不会开始)。

呼,那太长了……我希望这能消除您的一些困惑,并且对您有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM