单应用与环境
多应用与环境
CI持续集成
首先,准备一个代码库:
我们来梳理一下CI流水线的步骤:
由于此次实现的代码仓库类型为单一存储库,即一个存储库存放多个服务模块代码,每个子目录为一个服务模块 首先,我们的持续集成流水线需要能够正确获取,当前的commit是哪个服务的代码 确定好服务,然后下载该服务的代码,进行编译打包,单元测试,代码扫描和构建镜像等步骤
如何获取commit的服务信息这里我们使用GitLab WebHook功能和Jenkins 的job 构建触发器对接来实现
工作流程是:当我在Gitlab提交了代码,会通过GitLab webhook 触发Jenkins Scheduler 作业, 会将此次提交代码所产生的hook data数据信息以POST的方式传给Jenkins Job此时Jenkins job可以编写使用Generic Hook插件获取此次POST请求传输过来的请求体Body信息是一段JSON数据, 该job运行后编写Pipeline 解析JSON中的数据拿到所变更的服务模块信息最后触发对应服务的CI作业进行构建
CI—Scheduler 作业
CI流水线—CI作业
每个微服务创建一个CI作业,具有三个字符串参数:分支名称,commitID,项目ID。
在原始CI作业的步骤基础上,增加了一个更新环境的步骤GitOps实践会将当前的基础环境部署文件存放到一个Git仓库中我们的CI作业在完成镜像上传后,同时更新环境部署文件中的镜像标签信息
images
GitOps—CD部分
CD—Scheduler作业
Jenkinsfile pipelineagentanystagesstagestepsscriptecho'HelloWorld'echo"$WebHookData"//GitInfowebhookdata=readJSONtext:"""$WebHookData"""eventType=webhookdatacommits=webhookdatabranchName=webhookdata—"refs/heads/"projectID=webhookdatacommitID=webhookdatachangeServices=forprintln//addedfors=add.splitasListifif)—1)changeServices.add(s(0))//modifiedfor(mincommit.modified)s=m.splitasList//printlns//printlns.size//printlns(0)if//printlnchangeServices.indexOf(s(0))if)—1)changeServices.add(s(0))//removedfor(rincommit.removed)s=r.splitasListprintlnsifif)—1)changeServices.add(s(0))println(changeServices)currentBuild.description="Triggerby$eventType$changeServices"stage('DefineService')stepsscriptprintln(changeServices)//服务构建顺序控制services=('service02','service01')for(serviceinservices)if(changeServices.indexOf(service)!=—1)jobName='microservicecicd—'+service+'—service—CD'buildjob:jobName,wait:false,parameters:(string(name:'branchName',value:"$branchName")) 环境库配置webhook
CD流水线—CD作业
声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多企业信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。投资有风险,需谨慎。
9月6日上午,在崂山区政府西塔楼一楼大厅,崂山区科创委联合沙子口街道、大石社区启动了为期5天的大石村农民水彩画展。本次画
2021-09-08 12:23在5米高空作业,将数吨重的火车车轮或者小到几十斤的ldquo;铁疙瘩rdquo;安全装卸到位,可能谁也不会把这一切和一个
2021-09-03 11:10每个孩子都有其独特的成长规律。在孩子成长的过程中,每一步都充满着对这个世界的好奇,那作为家长的我们,该如何顺应孩子的成长
2021-08-30 18:502021年7月19日,备受关注的2021第五届中国家居品牌大会在广州启幕,现场发布2020-2021中国家居十大优选品牌
2021-07-26 01:28