在Azure DevOps Release中增加审批和检查

news/2024/7/3 10:02:34/文章来源:https://www.cnblogs.com/MrChuJiu/p/18279154

在Azure DevOps Release中增加审批和检查

在Azure DevOps中,发布管道(Release Pipelines)是自动化部署过程中不可或缺的一部分。通过在发布流程中增加审批和检查,我们可以确保部署的安全性和合规性,同时提供更细粒度的控制。本文将介绍如何在Azure DevOps的发布过程中增加审批和检查,并提供YAML脚本代码示例。

理解审批和检查

在Azure DevOps中,审批(Approvals)和检查(Checks)是两种机制,用于在自动化部署流程中增加手动干预和自动化验证。

审批允许团队成员在部署到特定环境前手动确认或拒绝部署。
检查则可以是自动的,用于验证是否满足特定条件,如时间窗口、代码质量、依赖项等。

增加审批

在Azure DevOps的发布管道中增加审批,可以通过图形界面操作,也可以通过YAML脚本来定义。以下是使用YAML定义审批的示例:

# azure-pipelines.ymltrigger: nonestages:
- stage: DeploydisplayName: 'Deployment with Approval'jobs:- job: DeployJobdisplayName: 'Deploy to Production'pool:vmImage: 'ubuntu-latest'steps:- checkout: none- task: ManualIntervention@8displayName: 'Awaiting Manual Approval'

增加检查

检查可以在环境级别配置,也可以通过YAML脚本来定义。以下是使用YAML定义检查的示例:

# azure-pipelines.ymlresources:environments:- name: 'Production'resourceType: 'virtualMachine'checks:- approval:timeout: '24h' # Timeout periodinstructions: 'Please review and approve this deployment'stages:
- stage: DeploydisplayName: 'Deployment Stage'jobs:- job: DeployJobdisplayName: 'Deploy to Production'environment: 'Production'steps:- checkout: none- script: echo 'Deployment script execution...'displayName: 'Execute Deployment Script'

调用Azure函数/REST API检查

除了内置的检查,Azure DevOps还支持调用外部Azure函数或REST API进行更复杂的检查。以下是定义调用Azure函数检查的示例:

# azure-pipelines.ymlsteps:
- task: AzureFunction@1displayName: 'Invoke Azure Function Check'inputs:azureSubscription: 'Your_Azure_Subscription'Function: 'Your_Azure_Function_Name'# Other input parameters

完整YAML

# azure-pipelines.ymltrigger: none # 禁用自动触发,示例中仅手动触发resources:environments:- name: 'Production'resourceType: 'virtualMachine'# 定义环境级别的审批检查审批:timeout: '1h' # 设置审批的超时时间为1小时instructions: 'Please review and approve the deployment to Production.'stages:
- stage: BuilddisplayName: 'Build Stage'jobs:- job: BuildJobdisplayName: 'Build Application'pool:vmImage: 'windows-latest'steps:- script: echo 'Building the application...'displayName: 'Build Script'- stage: DeploydisplayName: 'Deployment Stage'dependsOn: Build # 此部署阶段依赖于构建阶段jobs:- deployment: DeployToProddisplayName: 'Deploy to Production'environment: 'Production'strategy:runOnce:deploy:steps:- checkout: none # 不需要源代码# 手动审批步骤- task: ManualIntervention@8displayName: 'Manual Approval for Production Deployment'inputs:instructions: 'Approve to deploy to Production environment.'# 调用Azure函数检查步骤- task: AzureFunction@1displayName: 'Invoke Azure Function for Pre-Deployment Check'inputs:azureSubscription: 'Your_Azure_Subscription' # 你的Azure订阅Function: 'Your_Azure_Function_For_Check' # 你的Azure函数,用于执行部署前检查functionParameters: '-CodeVersion $(Build.BuildNumber)' # 传递参数给Azure函数# 部署脚本步骤- script: echo 'Deploying to Production...'displayName: 'Deployment Script'# 发布后的操作,例如通知- task: AzureFunction@1displayName: 'Post-Deployment Notification'inputs:azureSubscription: 'Your_Azure_Subscription'Function: 'Your_Azure_Function_For_Notification' # 你的Azure函数,用于发布后通知functionParameters: '-DD'

结合使用审批和检查

在实际部署中,审批和检查往往结合使用,以确保部署流程既符合自动化需求,又满足手动干预和验证的要求。通过YAML脚本,我们可以灵活地定义这些流程,实现复杂的部署策略。

总结

通过在Azure DevOps的发布管道中增加审批和检查,我们能够实现更安全、更可控的部署流程。YAML脚本的使用提供了一种灵活、声明式的方法来定义这些流程。结合Azure DevOps的强大功能,我们可以构建出满足各种业务需求的CI/CD流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/736125.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】自动驾驶光流任务 DeFlow: Decoder of Scene Flow Network in Autonomous Driving

再一次轮到讲自己的paper!耶,宣传一下自己的工作,顺便完成中文博客的解读 方便大家讨论。Title PictureReference and pictures paper: https://arxiv.org/abs/2401.16122 code: https://github.com/KTH-RPL/DeFlow b站视频: https://www.bilibili.com/video/BV1GH4y1w7LQ1.…

利用SonarCloud和Azure DevOps提升代码质量

利用SonarCloud和Azure DevOps提升代码质量 在软件开发过程中,代码质量是至关重要的。为了确保代码的清洁和安全性,我们可以使用SonarCloud——一个基于云的代码质量与安全服务。SonarCloud不仅对开源项目免费,还为私有项目提供了14天的免费试用。本文将指导您如何将SonarCl…

免费申请一张SSL证书-包含100个域名-挑战!!

挑战一下,申请一张包含100个域名的证书 首先,我们访问来此加密网站,进入登录页面,输入我的账号密码。登录后,咱们就可以开始申请证书,首先说一下,咱账号是SVIP哦,只有SVIP才可以申请包含100个域名的证书。为了方便验证,咱么先添加一下域名接口,这样可以自动配置验证信…

.net6+ 在单文件应用程序中获取程序集位置

一般来说,获取执行程序集的位置,您可以调用: var executableDirectory = System.Reflection.Assembly.GetExecutingAssembly().Location;如果发布为单个文件, 会提示如下警告 warning IL3000: System.Reflection.Assembly.Location always returns an empty string for assemb…

(set+拓扑排序) CF1572A Book

题意:思路: 每本书之间很明显存在拓扑关系,由此想到拓扑排序。使用set对图进行拓扑排序,将阅读次数小的放在前面,若阅读次数相同则按照阅读章节编号排序。假设第 x 章在第 y 章理解之后就能理解,若 x 大于 y 则本次阅读就可以理解 x 章,否则需要下一次才能理解第 x 章。 …

【github报错解决】Failed to connect to github.com port 443: Couldnt connect to server

今天使用github push时候报错的 解决办法: 1、查看本机代理 路径:设置->网络和Internet->代理->地址:端口 2、用git cmd修改配置,port就用刚刚代理端口值git config --global http.proxy http://127.0.0.1:[port] git config --global https.proxy http://127.0.0…

LVGL组件

LVGL组件的使用 目录LVGL组件的使用1 . 父和子对象2. 部件的基本属性及设置3. 图解:还有其他样式可以设置2. 组件分类 1 . 父和子对象2. 部件的基本属性及设置 /******** 设置打小 ********/ /******** 注意:设置部件位置时,坐标原点在父对象的左上角 ********/ lv_…

Maven 笔记

开发工具:Maven相关内容笔记# Maven简介 Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)) 这玩意儿是使用Java开发的,所以采用的就是Java的思想:面向对象 POM (Project Object Model):项目对象模型Maven的作用:项目构建:提供标准的、…

202406月度小结

这个学期比上个学期有意思得多了。但是为什么我只写了6月小结,没有写3月4月5月小结呢?因为那时候还没有想到用博客写这种小结形式的随笔啦…… 横向对比,这四个月都挺有意思的。但是由于我太容易忘记事情了……我的记忆是有限的,先把6月发生的趣事赶紧记录下来比较好。 昨天…

大模型技术方向Task1笔记

赛题概要 一、赛事背景 在当今数字化时代,企业积累了丰富的对话数据,这些数据不仅是客户与企业之间交流的记录,更是隐藏着宝贵信息的宝库。在这个背景下,群聊对话分角色要素提取成为了企业营销和服务的一项重要策略。 群聊对话分角色要素提取的理念是基于企业对话数据的深度…

[LeetCode] 122. Best Time to Buy and Sell Stock II

medium是你的谎言. class Solution:def maxProfit(self, prices: List[int]) -> int:#1if len(prices) == 1:return 0#elsemax_profit = 0min_price = prices[0]for i, element in enumerate(prices):#find a min_price if element <= min_price:min_price = elementelse…

【esp32 学习笔记】esp-idf学会调用组件管理——以button

简单不看版——esp-idf组件管理步骤 在ESP-IDF 组件管理器网页(https://components.espressif.com/)搜索我们需要的组件,比如【button】,然后 点开相应的组件,比如 espressif/button 组件。 【关键步骤】复制相关组件界面上配置组件的命令 ,形如:idf.py add-dependency &…

idea创建javaweb项目

1.新建project项目 2.添加依赖<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>6.0.10</version> </dependency>…

Linguistics-English-Would, Should, and Could: How to Use Them Correctly

https://7esl.com/would-should-could/ Key Takeaways“Would” is used for hypotheticals and future possibilities that may not occur. “Should” implies advice, expectation, or probability. “Could” expresses past ability or present possibility.Home Knowled…

[LeetCode] 121. Best Time to Buy and Sell Stock

想清楚了确实算是简单题. class Solution:def maxProfit(self, prices: List[int]) -> int:#1if len(prices) == 1:return 0#elsemax_profit = 0min_price = prices[0]for i, element in enumerate(prices):if element <= min_price:min_price = elementelif element - m…

Druid数据库加密实现

Druid数据库连接池中的密码加密功能提供了以下几个主要好处: 增强安全性:最显著的好处是提高了数据库系统的安全性。明文存储数据库密码容易造成安全隐患,一旦配置文件泄露,数据库可能遭受未授权访问。通过加密数据库密码,即使配置文件落入未经授权的人员手中,他们也无法…

17-移动端适配

移动端适配01 单位的分类02 相对单位相对的对象 2.1 em 永远都是相对于自身的font-size <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, …

maven下载安装配置

Maven 是一款为 Java 项目管理构建、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。 Maven的两大核心作用: 1.依赖管理: Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有…

回溯

理论基础 什么是回溯法回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏着回溯 (opens new window)。 回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中,回溯函数也就是递…

day02 go的数据类型和运算符

day02 go的数据类型和运算符 前言动态语言类型 自动开辟数据空间,自动识别数据类型 python 静态语言类型 开辟内存空间,定义数据类型 c,java,gogo 语言中的数据类型 /*- go 基本数据类型:- 布尔类型- 数值类型- 整型 :- 有符号:int,int8,int16,int32,int64.- 无符号:ui…