云服务器内容精选
-
脚本说明 每个组件都需要在pipeline中的envionment获取组件参数,用于判断参数化构建时是否选中,执行下面脚本: _{component_name}="${sh(script:' echo $Model_Name| grep -w -o "{component_name}" || echo "error" ', returnStdout: true).trim()}" 表1 参数说明 参数名称 描述 Model_Name 配置构建参数中的Name。 {component_name} 配置构建参数中的Choose Source for Value中的value里面填写的组件名称之一。 每个组件都需要配置一个stage,用于组件的升级任务,如果是串行执行的,则按照先后顺序放置stage的位置,如果是并行执行的任务就放置在stage('Build parallel jobs')中的parallel中。 stage脚本: stage('Build {component_name}') { when { environment name: '_{component_name}', value: '{component_name}' } steps { sh ''' echo "start to build {component_name}" ''' script{ def componentBuild=build(job: '{component_jenkins_task}') //打印执行任务的结果 println componentBuild.getResult() } } } 表2 参数说明 参数 描述 {component_name} 配置构建参数中的Choose Source for Value中的value里面填写的组件名称之一。 {component_jenkins_task} jenkins中创建的用于组件升级的任务名称,例如:用于componentA组件升级的任务名称如图6所示。 图6 组件升级任务名称
-
流水线脚本 流水线脚本支持componentA、componentB、componentC和componentD,4个组件中的一个或多个同时升级,并且按照依赖顺序先升级componentA,再并行升级componentB和componentC,最后升级componentD。如果构建时没有勾选到的组件会跳过,不执行升级。 pipeline { agent any environment{ //构建时选择的组件以‘,’隔开的格式存在变量Model_Name里 //判断变量Model_Name里的可选组件是否存在,如果存在,把组件名赋值给对应变量,如果不存在,把字符串"error"赋值给对应变量。 //用于判断后续组件是否需要构建 _componentA="${sh(script:' echo $Model_Name| grep -w -o "componentA" || echo "error" ', returnStdout: true).trim()}" _componentB="${sh(script:' echo $Model_Name| grep -w -o "componentB" || echo "error" ', returnStdout: true).trim()}" _componentC="${sh(script:' echo $Model_Name| grep -w -o "componentC" || echo "error" ', returnStdout: true).trim()}" _componentD="${sh(script:' echo $Model_Name| grep -w -o "componentD" || echo "error" ', returnStdout: true).trim()}" } stages { stage('Build componentA') { //when条件判断当环境变量"_componentA" = "componentA"时,表示构建时选择了该组件,执行此stage,否则跳过此stage when { environment name: '_componentA', value: 'componentA' } steps { sh ''' echo "start to build componentA" ''' script{ //build(job: 'componentA') 表示执行componentA任务,这个任务是jenkins中创建的任务名称,用于componentA组件升级的任务 def componentBuild=build(job: 'componentA') //打印执行任务的结果 println componentBuild.getResult() } } } stage('Build parallel jobs') { //failFast true 表示parallel并行的stage中只要有一个失败,其他并行任务也会中止 //不加failFast true,parallel中失败的stage不会影响其他并行的stage执行,直到所有的并行任务执行完成 //failFast true //按需添加 //parallel 表示里面的stage是并行执行的,只要其中有一个stage执行失败,则"Build parallel jobs"这个stage是失败的,它后续的stage不会执行 parallel { stage('Build componentB') { when { environment name: '_componentB', value: 'componentB' } steps { sh ''' echo "start to build componentB" ''' script{ def componentBuild=build(job: 'componentB') println componentBuild.getResult() } } } stage('Build componentC') { when { environment name: '_componentC', value: 'componentC' } steps { sh ''' echo "start to build componentC" ''' script{ def componentBuild=build(job: 'componentC') println componentBuild.getResult() } } } } } stage('Build componentD') { when { environment name: '_componentD', value: 'componentD' } steps { sh ''' echo "start to build componentD" ''' script{ def componentBuild=build(job: 'componentD') println componentBuild.getResult() } } } } }
-
使用流水线升级多个组件 选择流水线,单击“参数化构建”。 图7 参数化构建 选择要升级的组件,可以选择一个或多个同时升级,本示例选择全部组件同时升级,单击“开始构建”。 图8 选择组件 可在构建历史中查看流水线任务执行结果。 图9 查看执行结果 流水线日志如下所示,可以看出先升级componentA,再并行升级componentB和componentC,最后升级componentD。 Started by user admin Running in Durability level: MAX_SURVIVABILITY [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /root/.jenkins/workspace/pipeline-arrange [Pipeline] { [Pipeline] sh + echo componentA,componentB,componentC,componentD + grep -w -o componentA [Pipeline] sh + echo componentA,componentB,componentC,componentD + grep -w -o componentD [Pipeline] sh + echo componentA,componentB,componentC,componentD + grep -w -o componentB [Pipeline] sh + echo componentA,componentB,componentC,componentD + grep -w -o componentC [Pipeline] withEnv [Pipeline] { [Pipeline] stage [Pipeline] { (Build componentA) [Pipeline] sh + echo 'start to build componentA' start to build componentA [Pipeline] script [Pipeline] { [Pipeline] build Scheduling project: componentA Starting building: componentA #13 [Pipeline] echo SUC CES S [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Build parallel jobs) [Pipeline] parallel [Pipeline] { (Branch: Build componentB) [Pipeline] { (Branch: Build componentC) [Pipeline] stage [Pipeline] { (Build componentB) [Pipeline] stage [Pipeline] { (Build componentC) [Pipeline] sh [Pipeline] sh + echo 'start to build componentB' start to build componentB [Pipeline] script + echo 'start to build componentC' start to build componentC [Pipeline] { [Pipeline] script [Pipeline] { [Pipeline] build Scheduling project: componentB [Pipeline] build Scheduling project: componentC Starting building: componentB #12 Starting building: componentC #12 [Pipeline] echo SUCCESS [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] echo SUCCESS [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // parallel [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Build componentD) [Pipeline] sh + echo 'start to build componentD' start to build componentD [Pipeline] script [Pipeline] { [Pipeline] build Scheduling project: componentD Starting building: componentD #10 [Pipeline] echo SUCCESS [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS 登录CAE控制台查看组件状态,“最近一次变更状态/时间”列显示状态为“升级成功”,表示组件升级成功。 图10 查看组件
-
解决方案 新建一条jenkins流水线来编排多个组件,自动按照依赖顺序构建升级,并使用参数化构建的方式,同时支持单个或多个组件的升级。 下面以一个示例说明流水线执行流程。 有4个组件分别是componentA、componentB、componentC和componentD,其中componentD依赖componentB和componentC,componentB和componentC依赖componentA。 流水线执行流程:
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格