Azure devops 将yaml构建和经典发布管道迁移到多阶段yaml
我正在考虑将我的旧CI/CD管道迁移到一个多阶段、基于环境的YAML文件中,这些管道是用于构建的新YAML管道和基于“经典”UI的发布管道的混合体,但我很难找到与我们目前正在做的工作相一致的文档/示例 通常有三种环境:Azure devops 将yaml构建和经典发布管道迁移到多阶段yaml,azure-devops,yaml,azure-pipelines-release-pipeline,build-pipeline,Azure Devops,Yaml,Azure Pipelines Release Pipeline,Build Pipeline,我正在考虑将我的旧CI/CD管道迁移到一个多阶段、基于环境的YAML文件中,这些管道是用于构建的新YAML管道和基于“经典”UI的发布管道的混合体,但我很难找到与我们目前正在做的工作相一致的文档/示例 通常有三种环境:Test、UAT和Production 它们都是基于AKS的,目前创建docker容器的构建将作为其输出的一部分存储一个DeployService.yml文件,发布管道使用该文件更新每个环境(通过修改图像标记和一些环境变量)在运行kubectl apply-f DeployServ
Test
、UAT
和Production
它们都是基于AKS的,目前创建docker容器的构建将作为其输出的一部分存储一个DeployService.yml
文件,发布管道使用该文件更新每个环境(通过修改图像标记和一些环境变量)在运行kubectl apply-f DeployService.yml
之前
目前,我有几个项目遵循这种模式:
╔══════════════════════════╦══════════════════╦══════════════╦══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ Name ║ Purpose ║ Type ║ Description ║
╠══════════════════════════╬══════════════════╬══════════════╬══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ {project-name}.ci.yml ║ CI build ║ YAML-based ║ Triggered on pull-requests. Builds, run tests, etc. The only output is test results and success/ failure in Azure DevOps. ║
║ {project-name}.cd.yml ║ CD build ║ YAML-based ║ Builds the output upon successful PR into master. This is more often than not a docker container. ║
║ {project-name} - Release ║ Release Pipeline ║ 'Classic' UI ║ Release pipeline, triggered by {project-name}.cd.yml success and deploys into the Test environment. From there it's promotion to UAT and Production. ║
╚══════════════════════════╩══════════════════╩══════════════╩══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════╦══════════════════╦══════════════╦══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ 名称║ 目的║ 类型║ 描述║
╠══════════════════════════╬══════════════════╬══════════════╬══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ {project name}.ci.yml║ CI构建║ 基于YAML的║ 在拉取请求时触发。构建、运行测试等。唯一的输出是Azure DevOps中的测试结果和成功/失败。║
║ {project name}.cd.yml║ 光盘制作║ 基于YAML的║ 将成功的PR输出构建到master中。这通常是docker容器。║
║ {项目名称}-发布║ 泄放管线║ '经典用户界面║ 发布管道,由{project name}.cd.yml success触发,并部署到测试环境中。从那时起,它将推广到UAT和生产。║
╚══════════════════════════╩══════════════════╩══════════════╩══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
我想使用一个文件将它们全部移动到更新的多阶段YAML构建和发布管道
目前,我已经使用新的管道模板创建了一个新的yaml文件,然后复制和粘贴了我现有的CD版本
目前,新版本可以:
- 执行创建并推送docker容器的生成
- 触发推入
环境的释放测试
manifests
文件夹,其中包含一个deployment.yml
和一个service.yml
。它还创建了一个连接到我们的Test
AKS集群的环境
所以我的问题是:
deployment.yml
需要包含特定于环境的变量(想想ASPNETCORE\u environment
),我如何为每个发布环境提供这些额外的特定于环境的变量1,为deployment.yml提供其他特定于环境的变量 在构建过程中,可以使用管道中的任务替换yaml文件中的变量。如果未安装Magic Chunks扩展,则需要将其安装到您的组织中。请查看此任务的详细信息。您还可以检查示例 2、您可以创建与经典UI相同的促销风格 您可以定义,以根据运行前一个阶段的状态来控制该阶段的运行。例如下面的例子
stages:
- stage: A
# stage B runs if A fails
- stage: B
condition: failed()
# stage C runs if B succeeds
- stage: C
dependsOn:
- A
- B
condition: succeeded('B')
您还可以为阶段添加批准和检查。请核对文件
然而,Yaml管道还不支持手动触发阶段。这一功能已在路线图上。请查收
3、我建议您将CI构建保留在单独的文件中。如果它位于同一个yaml文件中,则以下所有CD都将生成一个