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

【Jenkins进阶】-后端CI-CD

时间:2023-04-01 18:12:21 Java

什么是后端自动化后端自动化并不是说自动生成代码,而是自动化构建项目。如果没有自动化的话,我们后端从开发到测试的工作流程可能是这样的:1.在本机写代码2.提交代码并推送到git远程仓库3.执行mvncleanpackage单元测试并打包jar包4.ssh5.在重启java服务的过程中,每一步都要重复手动操作,大大增加了时间成本。没有单元测试或打包结果的自动反馈机制。需要手动验证运行结果,最后部署是手动登录服务器执行脚本,非常繁琐。引入自动化后,整个流程变成:1.在本机写代码2.提交代码并push到git远程仓库3.githook触发jenkins的构建作业4.从jenkins中拉取项目代码job并运行mvncleanpackage或mvncleanpackage-Dmaven.test.skip=true5.jenkinsjob执行测试服务器的部署脚本在自动化过程中,只有步骤1和2需要手动操作,其他步骤自动运行,这是一个非常标准化的流程,减少了人工操作的风险,消除了重复性工作。实现流程图开发者提交代码到代码库触发jenki构建任务构建成功,jar包发送到服务器,执行重启脚本,服务更新,构建失败,提醒开发者通过钉钉通知/企业微信/邮箱等方式构建代码失败1.准备:准备git项目:https://github.com/wzc570738205/backendproject.git准备钉钉群(用于接收CI/CD结果通知):35669766准备安装jenkins的云服务器:这里自行购买,安装参考是在linux服务器上安装Jenkins2。访问代码提交通知。当你将代码推送到代码库时,它会自动通过gitwebhook向钉钉发送消息。接下来我们将使用2.2将钉钉的webhook添加到github中对应的webhook中。2.3测试代码提交通知配置完成。我们提交代码进行测试。至此,代码提交通知配置完成。3.访问项目CI我们提交代码后,需要检查代码合并是否存在致命错误。这里我们采取一个简单的方法让mvncleanpackage。如果运行时没有报错,则说明提交通过。如果失败,说明代码有致命错误,需要修改。3.1Jenkins新建项目,安装插件MavenIntegration插件。创建一个构建maven项目的作业。选择git作为源码管理器,填写地址和凭证(没有则新建)构建触发器选择:GitHubhooktriggerforGITScmpolling构建环境:cleanpackage-Dmaven.repo.local=/var/jenkins_home/.m2/repository-Dmaven.test.skip=true构建后操作(可选):我们通过jenkinsjob成功执行3.1.1测试再次提交代码,成功触发jenkinsjob构建成功3.2访问钉钉构建状态通知(这里和前端接入一样,这里不再细说)配置钉钉自定义机器人,并选择安全设置自定义关键字,这里设置#下载钉钉jenkins插件,用于配置钉钉通知的插件=>系统管理,选择钉钉,填写刚才的自定义机器人webhook地址项打开机器人通知点击开始搭建,测试等待CI结束。失败提醒。至此,CI配置完成。我们实现了代码提交钉钉提醒和CI通知提醒。可以打包生产环境的包来做建议测试代码是否有致命错误。这一步过后,我们需要将部署包发送到nginx服务器4.1发送包到服务器安装jenkins插件PublishOverSSHSettings配置插件,填写服务器ip,使用密码在进阶,设置远程服务器文件夹/点击testconnectivity添加build然后运行SendbuildartifactsoverSSH,发送包并执行restartserviceshellshutdown.sh#!/bin/shell#项目名称APPLICATION="testend"#javasubgradeJAVA=$(whichjava)#项目启动jar包名称APPLICATION_JAR="compreDisplay_backend-0.0.1-SNAPSHOT.jar"PID=$(ps-ef|grep"${APPLICATION_JAR}"|grep-vgrep|awk'{print$2}')if[[-z"$PID"]]thenecho${APPLICATION}已经停止pedelsechokill${PID}kill-9${PID}echo${APPLICATION}停止成功fistartup.sh#!/bin/shell#项目名称APPLICATION="testbackend"#javaSubgradeJAVA=$(whichjava)#项目启动jar包名称APPLICATION_JAR="compreDisplay_backend-0.0.1-SNAPSHOT.jar"nohup$JAVA${JAVA_OPT}-jar/applocation/backend/compreDisplay_backend/${APPLICATION_JAR}至此,CD集成完成后,只需要提交代码即可实现自动打包,自动部署并重启服务。结束语后续会继续写gitee、gitlab、svn的接入方法。