2026/5/18 23:46:51
网站建设
项目流程
网站百科推广怎么做,django做的网站有哪些,游戏设计师网站有哪些,东莞市企业信息公示网#x1f449; 这是一个或许对你有用的社群 #x1f431; 一对一交流/面试小册/简历优化/求职解惑#xff0c;欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料#xff1a; 《项目实战#xff08;视频#xff09;》#xff1a;从书中学#xff0c;往事…这是一个或许对你有用的社群 一对一交流/面试小册/简历优化/求职解惑欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料《项目实战视频》从书中学往事中“练”《互联网高频面试题》面朝简历学习春暖花开《架构 x 系统设计》摧枯拉朽掌控面试高频场景题《精进 Java 学习指南》系统学习互联网主流技术栈《必读 Java 源码专栏》知其然知其所以然这是一个或许对你有用的开源项目国产Star破10w的开源项目前端包括管理后台、微信小程序后端支持单体、微服务架构RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRM、AI大模型、IoT物联网等功能多模块https://gitee.com/zhijiantianya/ruoyi-vue-pro微服务https://gitee.com/zhijiantianya/yudao-cloud视频教程https://doc.iocoder.cn【国内首批】支持 JDK17/21SpringBoot3、JDK8/11Spring Boot2双版本来源blog.csdn.net/matrixlzp一、先决条件二、环境准备三、Jenkins CICD四、总结我们今天用 Jenkins Maven Git 来实现一套简单的自动化部署首先程序员将本地代码git push到远程 GitLab 服务器。然后Jenkinsgit pull到 Jenkins 服务器并用 maven 帮我们打成 jar 包。最后Jenkins 将打好的 jar 包通过 SSH Publisher 发布到测试服务器。一、先决条件这里需要用到 三台服务器一台安装 GitLab一台安装 Jenkins还有一台测试服务器。服务器信息如下服务器名IP配置安装的软件gitlab99192.168.40.998C8Ggitlabjenkins98192.168.40.984C4Gjenkins\jdk\maven\gittest97192.168.40.972C2GjdkGitLab 安装可以 戳这里https://blog.csdn.net/matrixlzp/article/details/130773520Jenkins 安装可以 戳这里https://blog.csdn.net/matrixlzp/article/details/153967848基于 Spring Boot MyBatis Plus Vue Element 实现的后台管理系统 用户小程序支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能项目地址https://github.com/YunaiV/ruoyi-vue-pro视频教程https://doc.iocoder.cn/video/二、环境准备1、GitLab 创建空白项目1创建分组Your work / Groups / New groupCreate group填入组名点击Create group2新建项目点击New project创建空白项目输入项目名Create project3新建 token点击页面左上角的 头像或用户名在下拉菜单中选择 Preferences偏好设置或 Settings设置。在左侧导航栏中找到并点击Access Tokens访问令牌选项通常在User Settings分类下。拷贝 tokenglpat-qx7VU3J219j1D4_92uqJ2、IDEA 创建新项目1新建项目选择Spring Web2修改配置端口server.port80883新建 ControllerRestController RequestMapping(/) public class HelloController { RequestMapping public String sayHello() { return Hello dev; } }4测试浏览器访问127.0.0.1:80885给 IDEA 设置GIT打开 IDEASettings Git 在Path to Git executable里面选择本机安装的Git目录6创建 Git 仓库Version ControlCreate Git repository选择当前项目意思是把当前项目作为 Git 仓库点击 OK 后为我们弹开下面的视图证明成功7) 关联 Git 远程仓库对着项目 右键 Git Manage Remotes点击弹出Define Remote在 URL 里面把我们从 gitlab 项目克隆的 http 链接填进去填入gitlab token8把代码提交到本地仓库9把代码推送到远程仓库10在 GitLab 上合并代码基于 Spring Cloud Alibaba Gateway Nacos RocketMQ Vue Element 实现的后台管理系统 用户小程序支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能项目地址https://github.com/YunaiV/yudao-cloud视频教程https://doc.iocoder.cn/video/三、Jenkins CICD1、安装 Maven 插件我们想让 Jenkins 能使用 Maven 进行构建需要安装 Maven 插件。DashboardManage Jenkins 插件管理 Available plugins搜索 maven点击 安装等待安装完成点击返回首页2、创建项目Dashboard All 新建 Item3、配置 GitDashboard first Configuration添加 git 凭据4、配置分支5、配置 Maven在http://192.168.40.98:8080/configureTools/下配置 maven 安装路径后保存Root POM 保持不变Root POM 表示相对于项目文件夹jenkins-studypom.xml 的位置我们的 pom.xml 刚好位于jenkins-study路径下所以不变。6、测试 jenkins 打包保存上述配置点击 运行在 Dashboard first #1 控制台输出 的日志中能看到 Jenkins 将 代码 打包的目录进入/root/.jenkins/workspace/first/target/测试打出来的包是否运行成功[rootjenkins98 target]# java -jar jenkins-study-0.0.1-SNAPSHOT.jar看到如下内容说明 Jenkins 打包成功。接下来我们要利用 Jenkins 将这个 jar 传到 测试服务器并运行起来。报错如果运行java -jar报错no main manifest attribute, in jenkins-study-0.0.1-SNAPSHOT.jar说明spring-boot-maven-plugin打包得有问题把项目 pom.xmlskip改为false即可。7、安装 SSH Publisher 插件要利用 Jenkins 将这个 jar 传到 测试服务器需要使用插件SSH PublisherDashboard Manage Jenkins 插件管理 Available plugins安装完返回首页8、配置测试服务器信息Dashboard Manage Jenkins System新增测试服务器填上测试服务器信息并保存Test Configuration 测试连接9、配置 Post StepsDashboard first Configuration Post Steps Send files or execute commands over SSH配置Post StepsSource files表示从 workspace 开始找编译后的包Jenkins 将我们的代码编译到/root/.jenkins/workspace/first/target**表示任意路径jenkin*.jar表示通配符匹配Remote directory包存放的远程服务器目录默认是~即当前使用的 SSH 账户的 家目录。root 用户是/root普通用户是/home/当前用户名10、测试 jenkins 传包立即构建在 test97 这台服务器/root下看到多添加了/target目录配置Remove prefix去掉/target重新运行构建可见Jenkins 多次构建并不会帮我清除旧的构建需要我们编写 Exec command 来做这些工作。通常我们会将包放置在项目文件夹里方便不同的项目管理。配置Remote director保存后重新运行构建11、运行 jar 包配置Exec commandnohup java -jar /root/jenkins-study/jenkins*.jar /root/jenkins-study/log.out 21 nohup忽略挂起信号进程与终端解耦即使终端关闭进程仍能继续运行。将nohup java -jar的日志输出从标准输出控制台重定向到/root/jenkins-study/log.out文件。并且是以追加的方式。21将标准错误输出2重定向到标准输出1而标准输出在前面已经被重定向到/root/jenkins-study/log.out文件所以标准错误输出也被重定向到/root/jenkins-study/log.out文件。最后一个后台运行程序此时终端会立即返回控制权可以继续输入其他命令。保存并重新构建在测试服务器执行 jps 命令能看到jenkins-study项目已运行。报错如果 jps 只有一个 Jps 进程在跑[roottest97 ~]# jps 20876 Jps查看/root/jenkins-study/log.out日志如果看到nohup: failed to run command ‘java’: No such file or directory用如下方法发解决vim /etc/bashrc # 在最后一行添加 export JAVA_HOME/usr/local/jdk/jdk-17.0.12 export PATH$PATH:$JAVA_HOME/bin export CLASSPATH.:$JAVA_HOME/lib/这是因为/bin/bash启动的终端也需要配置JAVA_HOME我们现在这样的配置还是有问题多次构建看看测试服务器 jps[roottest97 ~]# jps 20807 jenkins-study-0.0.1-SNAPSHOT.jar 20895 Jps [roottest97 ~]# jps 20807 jenkins-study-0.0.1-SNAPSHOT.jar 20968 Jps [roottest97 ~]# jps 20807 jenkins-study-0.0.1-SNAPSHOT.jar 20987 Jps会发现jenkins-study的 pid 并没有变化查看/root/jenkins-study/log.out端口被占用。因为 8088 端口已经被第一次运行的 java 程序占用了所以后续 nohup 都启动不成功所以 pid 一直是第一次运行的 java 程序。解决这个问题的方法就是进行构建前清理清理 java 进程和旧的 jar 包。12、配置 Pre Steps在测试服务器/root下创建一个clean.sh清理脚本脚本内容如下#!/bin/bash appname$1 # 如果appname为空提示返回 if [ -z $appname ]; then echo应用名称不能为空! exit -1 else echo应用名称为$1 fi # 清理旧版本jar包 rm -rf $appname/${appname}*.jar # 获取正在运行的项目pid pidps -ef | grep $1 | grep java -jar | awk {printf $2} echopid为$pid # 如果pid为空,提示一下;否则,执行kill命令 if [ -z $pid ]; then echo$appname is not started else kill -9 $pid echo$appname was stopped fi$1表示Shell脚本的第一个参数就比如./clean.sh test$1就等于 test以此类推$2表示第二个$3 表示第三个......-z字符串运算符检测字符串长度是否为0为0返回true。z zero 的意思。ps -ef打印进程信息。直接ps -ef | grep appname会把 grep 进程也打印出来[roottest97 ~]# ps -ef|grep jenkins-study root 20807 1 1 19:40 ? 00:00:33 java -jar /root/jenkins-study/jenkins-study-0.0.1-SNAPSHOT.jar root 21223 21093 0 20:31 pts/0 00:00:00 grep --colorauto jenkins-study所以需要grep java -jar再过滤一次[roottest97 ~]# ps -ef|grep jenkins-study|grep java -jar root 20807 1 1 19:40 ? 00:00:33 java -jar /root/jenkins-study/jenkins-study-0.0.1-SNAPSHOT.jar用grep -v grep排除掉 grep 也可以[roottest97 ~]# ps -ef|grep jenkins-study|grep -v grep root 20807 1 1 19:40 ? 00:00:33 java -jar /root/jenkins-study/jenkins-study-0.0.1-SNAPSHOT.jarawk {printf $2}对字符串进行匹配打印出第二个参数也即 20807也就是我们的 pid。更改一下clean.sh脚本的模式使其具有可执行权限[roottest97 ~]# chmod 777 clean.sh配置Pre Steps加上我们的脚本保存并重新构建# 重新构建前 [roottest97 ~]# jps 20807 jenkins-study-0.0.1-SNAPSHOT.jar 21445 Jps # 重新构建后 [roottest97 jenkins-study]# jps 21562 jenkins-study-0.0.1-SNAPSHOT.jar 21610 Jps可以看到 pid 已经不同了。13、测试浏览器访问192.168.40.97:8088四、总结至此我们完成了一个简单的 Jenkins CICD大家思考一下还有什么需要改进的地方欢迎加入我的知识星球全面提升技术能力。 加入方式“长按”或“扫描”下方二维码噢星球的内容包括项目实战、面试招聘、源码解析、学习路线。文章有帮助的话在看转发吧。 谢谢支持哟 (*^__^*