当前位置: 首页 > 后端技术 > Java

devops实践:teamcity通过实施持续集成解决了哪些问题

时间:2023-04-01 13:18:42 Java

?快速cicd;团队协作更高效,集成更快,交付更快;进入gitops模式;主流CICD流程:teamcity架构:安装方式dockerinstallation快速安装服务器端mkdir-p/data/teamcity_server/datadir/data/teamcity/logsdockerrun-it--nameteamcity-server\-v/data/teamcity_server/datadir:/data/teamcity_server/datadir\-v/data/teamcity_server/logs:/opt/teamcity/logs\-p8111:8111\jetbrains/teamcity-server:EAP然后获取访问的url,安装客户端时会用到之后。比如这里是:http://172.31.12.168:8111数据库选择默认的hsqldb,只要挂载目录不丢失,重装后数据依然存在;安装客户端mkdir-p/data/teamcity_agent/confchmod-R777/data/teamcity_agent/confdockerrun-it-eSERVER_URL="http://172.31.12.168:8111"\-v/data/teamcity_agent/conf:/data/teamcity_agent/conf\jetbrains/teamcity-agent:EAP可以安装多个;但专业版限制为3个,所以为了后面的遍历,最多不超过3个客户端!安装完成后,agent需要在server端授权后才能使用。直接备注可以添加到客户池中。然后就可以加入服务器端的客户端池了。构造任务的执行可以并行度3执行,也可以物理部署,docker内核不会有问题。该位置可以下载实体版客户端安装包。结合文档修改配置参数即可;主要修改的是server服务器的地址和client的应用名称;位置:/data/team_agent4/conf/buildAgent.properties启动命令:./bin/agent.shstart然后在Server端授权就可以使用了。第一次使用后端项目的CI和CD过程:以下是实际过程:创建一个项目,粘贴到你的gitlab或github仓库地址;填写一个只读权限的帐号和密码。配置CICD合成脚本1后端jar包2后端docker镜像3前端npm打包4前端镜像制作5推送前后端镜像到镜像仓库6发布到k8s环境7启动钉钉通知整个项目组的kotlin代码包_Self.buildTypesimportjetbrains.buildServer.configs.kotlin.v2019_2.*importjetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.MavenBuildStepimportjetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.dockerCommandimportjetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.mavenimportjetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.nodeJSimportjetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.scriptimportjetbrains.buildServer.configs.kotlin.v2019_2.triggersname="appBuild"description="Build"allowExternalStatus=trueartifactRules="app-tp/start/target/app-tp.jar=>app-tp.jar"publishArtifacts=PublishMode.SUCCESSFULvcs{root(HttpGitlabH3yunComHermesSystemAppTpGitRefsHeadsMasterencs=)showDehangestrue}steps{maven{name="jar包"goals="cleaninstall-Dmaven.test.skip=true-U"pomLocation="app-tp/pom.xml"runnerArgs="-Dmaven.test.failure.ignore=true"workingDir="app-tp"userSettingsSelection="Mynexusconfiguration"localRepoScope=MavenBuildStep.RepositoryScope.MAVEN_DEFAULTisIncremental=truejdkHome="%env.JDK_18%"dockerImagePlatform=MavenBuildStep.ImagePlatform.LinuxdockerPull=true}dockerCommand{name="制作docker镜像后"commandType=build{source=file{path="app-tp/app.Dockerfile"}namesAndTags="registry.cn-shenzhen.aliyuncs.com/cloudpivot/app-tp:tptest"commandArgs="--pull"}}nodeJS{name="前端npm打包"shellScript="""cdfront-tpnpminstallnpmrunbuild"".trimIndent()dockerPull=true}dockerCommand{name="制作前端docker镜像"commandType=build{source=file{path="front-tp/front.Dockerfile"}namesAndTags="registry.cn-shenzhen.aliyuncs.com/cloudpivot/front-tp:tptest"commandArgs="--pull"}}script{name="登录推送到远程镜像仓库"scriptContent="""dockerlogin-u="aaaa"-pxxxxyunregistry.cn-shenzhen.aliyuncs.comecho"推送到远程仓库"dockerpushregistry.cn-shenzhen.aliyuncs.com/cloudpivot/app-tp:tptestdockerpushregistry.cn-shenzhen.aliyuncs.com/cloudpivot/front-tp:tptestecho"删除本地镜像===节省磁盘空间===="dockerimages|grep应用-tp|awk'{打印${'$'}3}'|xargsdockerrmidocker图像|grep前端-tp|awk'{print${'$'}3}'|xargsdockerrmi""".trimIndent()}script{name="更新k8s环境"scriptContent="""cd%system.teamcity.build.checkoutDir%cddeployshapp_tp_deploy.shshfront_tp_deploy.sh""".trimIndent()}script{name="给程序推送钉钉通知"scriptContent="""url='https://oapi.dingtalk.com/robot/send?access_token=b0dc2aee487a842dd5648566ade86xxxxxxx'program=科技管理平台server=tptest.cloudpivot.cncontent=%teamcity.build.branch%buildInfo=%vcsroot.useAlternates%functionsendDing(){curl${'$'}{1}\-H'Content-Type:application/json'\-d"{\"msgtype\":\"text\",\"text\":{\"content\":\"消息内容:项目-${'$'}{2},域名-${'$'}{3},branch-${'$'}{4}更新内容-${'$'}{5}\"},\"isAtAll\":true,}"}sendDingtalk${'$'}{url}${'$'}{programe}${'$'}{server}${'$'}{content}${'$'}{content}${'$'}{buildInfo}""".trimIndent()}}triggers{vcs{branchFilter="+:refs/heads/test"}}})总结teamcity专业版限制3个执行客户端和100个构建配置,适合小团队;用户体验更好,界面更好,自动检测代码变化,并构建;(可以大大提高CI效率)比如你把修改推送到某个分支,直接发布到集成测试环境。pk(开发一个功能,然后合并到集成测试分支,然后发布到CICD系统点,遇到问题启动一堆海鸥)比较优雅。钉钉消息通知拉一个钉钉群,添加一个机器人:完成后,可以得到通知token:https://oapi.dingtalk.com/robot/send?access_token=c30f5008258474da14e65d3141536953b79df3bf3ab64f33a583e83165b19665准备好的shell脚本:url='https://oapi.dingtalk.com/robot/send?access_token=c30f5008258474da14e65d3141536953b79df3bf3ab64f33a583e83165b19665'programe=技管平台server=tptest.cloudpivot.cncontent='程序中断'结束函数-{$s程序中断:H'Content-Typeapplication/json'\-d"{\"msgtype\":\"text\",\"text\":{\"content\":\"消息内容:item-${2},服务地址-${3},更新内容-${4}\"},\"isAtAll\":true,}"}sendDingtalk${url}${programe}${server}${content}actual例子:url='https://oapi.dingtalk.com/robot/send?access_token=b0dc2aee487a842dd5648566ade86e2217dac868c0ffdcab5138cb7eab163978'programe=技管平台server=tptest.cloudpivot.cncontent=%Albuilds.build%Inbuild%nchfunctionsendDingtalk(){curl${1}\-H'内容类型:application/json'\-d"{\"msgtype\":\"text\",\"text\":{\"content\":\"消息内容:项目-${2},域名-${3},分支-${4}更新内容-${5}\"},\"isAtAll\":true,}"}sendDingtalk${url}${programe}${server}${content}${content}${buildInfo}通知效果截图:材料用户手册:(必读英文材料)https://www.jetbrains.com/help/teamcity/2021.1/configure-and-run-your-first-build.htmlteamcitytour(必看看中文资料)https://developer.aliyun.com/article/738443腾讯云搭建teamcity进程:(特权容器解决dockeragent无法镜像的问题)https://blog.csdn.net/sD7O95O/article/details/88264986钉钉机器人通知文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq程序启动后通过shell通知钉钉群:https://blog.csdn.net/weixin_37836950/article/details/107924910原创不易,关注有价值,转贴价格更高!转载请注明出处,让我们互相交流,共同进步,欢迎交流