微服务模式下怎么实现多模块并行构建发布-成都快上网建站

微服务模式下怎么实现多模块并行构建发布

这篇文章主要讲解了“微服务模式下怎么实现多模块并行构建发布”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微服务模式下怎么实现多模块并行构建发布”吧!

十多年专注成都网站制作,成都定制网站,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于成都定制网站,高端网页制作,对航空箱等多个方面,拥有丰富的营销推广经验。

在微服务项目中具有很多个服务模块,为了便于管理需要将项目规范化,使用GitLabGroup管理整个项目,每个project对应一个微服务,每个微服务对应一个Jenkins  job。开始发布的时候需要我们在手动选择各个服务然后发布。模块很多的时候就不太方便了。创建一个Jenkins项目用来统一管理,绑定GitLab  group信息,然后调用Gitlab接口获取project信息。用户选择要发布的微服务,然后根据服务名称并行触发每个要发布服务的流水线进行构建和发布。

我们先来看看如何使用pipeline中的parallel语法,这里列举了两个例子:并行任务、并行阶段。

并行任务

首先我们需要定义每个任务的名称和对应的操作,可以通过一个Map类型参数实现。在这里定义了一个空的map,然后为这个map增加了两个任务分别为build01和build02,它们的操作是执行shell命令。最后通过parallel运行。

def tasks = [:]  //定义要并行的任务名称和任务 tasks["build01"] =  {sh "ls"}  tasks["build02"] =  {sh "ls"}  //并行 parallel tasks

并行阶段

并行stage也是一种经常用到的运行方式,我们可以使用这种方式解决不必要的时间浪费,尤其在各个平台运行自动化测试的时候,我们不必等到windows平台验证完成再进行Linux系统中的验证。而是直接在各个平台中同时运行,加快了测试的速度。我们还可以使用failFast参数配置当其中一个任务失败其他任务是否一样失败,参数值为布尔类型(true  false)。

这个例子是jenkins官方提供的,大概的内容是并行在不同系统环境下进行自动化测试。

pipeline {     agent none     stages {         stage('Run Tests') {             parallel {                 stage('Test On Windows') {                     agent {                         label "windows"                     }                     steps {                         bat "run-tests.bat"                     }                     post {                         always {                             junit "**/TEST-*.xml"                         }                     }                 }                 stage('Test On Linux') {                     agent {                         label "linux"                     }                     steps {                         sh "run-tests.sh"                     }                     post {                         always {                             junit "**/TEST-*.xml"                         }                     }                 }             }         }     } }

主控Job实现

首先我们用静态数据来存储要发布的项目名称存储为一个List,定义一个Map用来存储并行任务。定义buildStatus展示项目错误信息(这里做了信息格式化)。使用build进行项目触发。这里会把每个失败的任务存储展示到流水线日志中。

def jobs = ["test2","demo-test-service"] def parallelMap = [:] def buildStatus = [:]  jobs.each{      println(it)      parallelMap[it] = {         try {             build job: "${it}",              parameters: [string(name: 'branchName', value: 'Dev')]         } catch(e){             println("${it}  " + e)             buildStatus[it] = e         }     } }  parallel parallelMap   //判断状态  for ( i in buildStatus.keySet()){      currentBuild.description = "构建信息"      currentBuild.description += ("\n项目名称->"  + i  + "错误信息:->"+ buildStatus[i]) }

运行效果

微服务模式下怎么实现多模块并行构建发布

基本上每个模块对应一个pipeline项目。有时候我们需要设置一个集中控制项目来根据设置的参数有序触发各个模块服务对应的流水线进行发布。在各个模块之间没有发布顺序的时候,我们可以使用Pipeline的Parallel语法进行项目的并行构建。加快发布速度,减少重复手工操作成本。

感谢各位的阅读,以上就是“微服务模式下怎么实现多模块并行构建发布”的内容了,经过本文的学习后,相信大家对微服务模式下怎么实现多模块并行构建发布这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


本文标题:微服务模式下怎么实现多模块并行构建发布
网页链接:http://kswjz.com/article/jipjdg.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流