我正在使用azure构建和发布管道。我了解,构建管道会产生一个工件,发布管道可以使用该构件,并且可以将部署分为可以部署/重新部署阶段的选项的阶段。
但是,我也注意到发布管道中可用的所有任务在构建管道中也可用。此外,构建管道的文档指出可以用于构建,测试和部署。那么使用发布管道到底有什么好处?
答案 0 :(得分:3)
“管道->版本”下的管道是使用GUI创建的经典部署管道。
新的YAML管道始终位于“管道->管道”下,并允许构建和部署作业:https://docs.microsoft.com/en-us/azure/devops/pipelines/process/deployment-jobs?view=azure-devops。 通过使用部署作业而不是传统发行版,部署将显示在“管道->环境”下。
因此,通过这种方式有意义的是,双方都可以执行相同的任务,因为两者都允许定义部署工作流。 但是,我认为YAML管道不具有与经典发行版相同的功能。
答案 1 :(得分:3)
这是相同的任务,但过程不同。
如今,我想说管道负责持续集成,而发布管道则更多地与持续交付有关。当所有部署功能都到达YAML管道时,情况并非如此。
正如您所说,Azure发布管道可以使用并自动触发YAML或经典管道的结果,并且您可以使用不同的代理。当您使用Agent for Release时,YAML代理或经典管道需要所有工具来编译,测试和汇编代码,还需要部署工具和对目标环境的正确访问权限。
在发布管道中,您可以更轻松地按环境/阶段组织部署,添加可以单独启动的步骤,而无需重新启动整个管道(例如应用程序恢复或切换到生产)。
发布管道的工作流程比YAML或Classic Build管道更直观。
根据我的经验,目前主要区别在于Approvals and Gates功能。
您可以尝试仅在YAML管道上实现整个CI / CD流程,但是由于YAML管道的部署功能很复杂,因此同时使用Azure管道功能将CI和CD的逻辑分开可能要容易得多。仍在开发中。
答案 2 :(得分:2)
用于经典UI格式的构建和发布管道:
通常,我们使用 Build Pipeline (构建管道)来构建/测试我们的项目,并输出经过 tested 的软件二进制文件。
然后,根据需要,我们可以使用 Release Pipeline 将工件从 Build Pipeline 部署到多个阶段。因此,我们只需要运行 Build Pipeline 一次以获取工件(包含软件二进制文件),就可以使用 Release Pipeline 重用工件并将其部署到不同的环境。 (开发,产品...)
当然,我们可以使用构建管道来运行一些部署任务,也可以使用发布管道来运行构建和测试任务。我们可以但不应该(不建议这样做),配置“构建和发布” UI管道可以使我们构建/测试(与CI相关性更高)=>部署(与CD相关性更高)的工作流程更好。
如果您使用的是Multi-stage pipeline,则无需使用Release(UI)管道。您可以在一个xx.yml
文件中定义CI / CD步骤。
答案 3 :(得分:0)
原则上没有。只是通常发布的管道适用于部署物料,而构建管道则适用于构建物料。例如,詹金斯只有建筑。并且您将使用构建版本发布。这实际上取决于您使用的解决方案。章鱼不能真正构建东西,但可以释放东西,并获得了使释放变得更容易的工具。
在ADO中,您可以在发布管道中拥有阶段,因此您可以轻松地进行升级,拥有批准门等。