jenkins构建cicd流水线 📅 2026/8/24 12:59:28 一: 环境搭建1.0 jenkins流程(面试重点)代码提交开发人员把代码推送到 Git 仓库GitLab/Gitee/GitHub。触发 Jenkins 构建可以通过 Webhook 自动触发也可以手动构建。拉取代码Jenkins 通过 Git 插件拉取最新代码。代码编译打包调用 Maven 或 Gradle 进行编译、单元测试、打包生成 jar/war 包。制品归档 / 上传把打好的包保存到 Jenkins或上传到私服Nexus。自动化部署通过 SSH 连接目标服务器上传 jar 包执行启动脚本完成自动部署。构建结果通知构建成功或失败通过邮件、钉钉通知相关人员。2.0 安装maven,git,jdk,tomcat注意: 请问这里为啥需要jdk和tomcat安装 JDK 和 Tomcat 是为了区分构建环境和运行环境。JDK 负责编译Tomcat 负责运行 war 包。如果项目是 Spring Boot 打 jar 包Tomcat 就不是必须的只需要 JDK 就行。(1) maven安装(下载maven,然后配置环境变量)# 下载 maven3.8.8 包tar-zxvfapache-maven-3.8.8-bin.tar.gz-C/usr/local/mv/usr/local/apache-maven-3.8.8/ /usr/local/maven# 配置环境变量vim/etc/profile.d/jenkins_tools.shexportM2_HOME/usr/local/mavenexportM2$M2_HOME/binPATH$M2:$PATH:$HOME/bin:/usr/local/git/binexportMAVEN_HOME/usr/local/mavenexportPATH${MAVEN_HOME}/bin:$PATH# 生效source/etc/profile.d/jenkins_tools.sh# 测试mvn-version(2) 安装git# 安装依赖yuminstallcurl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker fontconfig-y# 解压并cd到解压目录tarxf git-2.9.5.tar.gzcdgit-2.9.5/makeprefix/usr/local/git all# 编译源码包makeprefix/usr/local/gitinstall# 源码安装# 修改环境变量vim/etc/bashrcPATH$PATH:$HOME/bin:/usr/local/git/binsource/etc/bashrc# 测试是否安装成功git--version(3) 安装jdk,tomcat# 解压tomcat和jdk的包tarxf jdk-11.0.16_linux-x64_bin.tar.gztarxf apache-tomcat-9.0.79.tar.gz# 拷贝并修改名称mvjdk-11.0.16 /usr/local/javamvapache-tomcat-9.0.79 /usr/local/tomcat# 处理环境变量vim/etc/profile.d/java.shTOMCAT_HOME/usr/local/tomcatJAVA_HOME/usr/local/javaPATH$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATHexportTOMCAT_HOME JAVA_HOMEPATHsource/etc/profile.d/java.sh3.0 jenkins后台安装# 上传jdkrm-rf/usr/local/tomcat/webapps/*cpjenkins.war /usr/local/tomcat/webapps/# 安装字体yuminstallfontconfig# 启动tomcat/usr/local/tomcat/bin/startup.sh# 访问8080端口即可如果访问不成功检测一下防火墙是否是关闭的, selinux是否是关闭的注 jenkins放在tomcat的webapps的下面启动tomcat之后会自动的解压我们的war包然后自动部署我们的jenkins.4.0 jenkins前台安装进入页面后我们先根据提示来进行操作安装插件会从国外拉取这里我们提供两种解决方案 :(1) 方案一: 将国外地址改为国内的vim~/.jenkins/hudson.model.UpdateCenter.xml http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.jsonvim~/.jenkins/updates/default.json 替换命令 % s/www.google.com/www.baidu.com/g % s/updates.jenkins.io\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g 旧版 http://updates.jenkins-ci.org/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins 新版https://updates.jenkins.io/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins 修改完以后重启Jenkins服务再输入密码继续安装速度贼快。(2) 方案二: 直接将安装好的插件拷贝到安装目录当中# jenkins是隐藏目录[rootlocalhost ~]# ls -a..bash_history git-2.9.5 jenkins.war...bash_logout git-2.9.5.tar.gz .tcshrc anaconda-ks.cfg .bash_profile .java .viminfo apache-maven-3.8.8-bin.tar.gz .bashrc jdk-11.0.16_linux-x64_bin.tar.gz apache-tomcat-9.0.79.tar.gz .cshrc .jenkins[rootlocalhost ~]## 我们进入发现里面有一个plugings插件目录我们的安装的插件会放在这个目录的下面[rootlocalhost ~]# cd ./.jenkins/[rootlocalhost .jenkins]# ll总用量20-rw-r-----.1root root16584月1809:19 config.xml -rw-r-----.1root root1564月1809:18 hudson.model.UpdateCenter.xml -rw-r-----.1root root1714月1809:18 jenkins.telemetry.Correlator.xml drwxr-x---.2root root64月1809:18jobs-rw-r-----.1root root9074月1809:18 nodeMonitors.xml drwxr-x---.2root root64月1809:18 nodes drwxr-x---.2root root64月1809:18 plugins -rw-r-----.1root root644月1809:18 secret.key -rw-r-----.1root root04月1809:18 secret.key.not-so-secret drwx------.2root root914月1809:18 secrets drwxr-x---.2root root674月1809:19 updates drwxr-x---.2root root244月1809:18 userContent drwxr-x---.3root root574月1809:18users[rootlocalhost .jenkins]## 我们上传自己本地准备好的插件然后替换他这个[rootlocalhost root]# ls -a....jenkins[rootlocalhost root]# cd ./.jenkins/[rootlocalhost .jenkins]# ll总用量12drwxr-x---.95root root81929月132023plugins[rootlocalhost .jenkins]# ll总用量12drwxr-x---.95root root81929月132023plugins[rootlocalhost .jenkins]# cd ./plugins/[rootlocalhost plugins]# pwd/root/root/.jenkins/plugins[rootlocalhost plugins]# \ cp * -rf /root/../ .bash_history .bash_profile .cshrc .jenkins/ .viminfo../ .bash_logout .bashrc .java/ .tcshrc[rootlocalhost plugins]# \ cp * -rf /root/.jenkins/config.xml nodeMonitors.xml secrets/ hudson.model.UpdateCenter.xml nodes/ updates/ jenkins.telemetry.Correlator.xml plugins/ userContent/ jobs/ secret.key users/ .lastStarted secret.key.not-so-secret[rootlocalhost plugins]# \cp -rf * /root/.jenkins/plugins/[rootlocalhost plugins]# ll /root/.jenkins/plugins/ # 查看插件是否已经复制到jenkins的目录下面了二: 系统配置1.0 系统提示centos7支持截止日期操作系统寿命终止监视器 您正在CentOS Linux 7Core上运行Jenkins。Jenkins将在2023-11-16年后不再支持CentOS Linux 7Core。 请计划在2023-11-16年之前升级到受支持的操作系统。 有关详细信息请参阅文档如果你希望继续使用centos7上jenkins请保留这个版本单节点提示在内置节点上构建可能是一个安全问题。提醒我们应该设置分布式构建。2.0 全局变量与全局工具配置(1) 全局变量: 这里我们配置 JAVA_HOME与MAVEN_HOME(2) 全局工具配置maven配置添加jdk工具添加git工具注意 如果我们的jenkins没有这个就是没有git插件因此我们需要下载插件。看下面的文档。添加maven工具3.0 SSH设置作用让 Jenkins 能远程登录到别的服务器自动执行命令、传文件、部署项目。# jenkins服务器[rootlocalhost plugins]# ssh-keygen # 敲这个命令之后一直回车即可# 我们需要准备一台远程登录的服务器ssh-copy-id-i远程服务器ip# 远程登录sshroot远程服务器ip# jenkins服务器中查看公钥cat~/.ssh/id_rsa# 然后将得到的公钥放到我们的Jenkins中的ssh配置当中三: 插件管理1.0 下载插件可更新插件, 未下载插件已安装插件高级设置Maven Integration plugin 安装此插件才能构建maven项目Deploy to container Plugin 安装此插件才能将打好的包部署到tomcat上安装git相关2个插件: GitHub Authentication,GitHub Branch Source,安装插件Publish Over SSH2.0 配置maven配置国内maven镜像vim/usr/local/maven/conf/settings.xmlmirroridcentral/idmirrorOfcentral/mirrorOfnamealiyun maven/nameurlhttps://maven.aliyun.com/repository/public/url/mirror四: JenkinsMavenGiteeTomcat 自动化构建打包、部署1.0 创建Maven项目2.0 源码管理选择版本控制器和仓库地址互联网仓库https://gitee.com/newrain001/easy-springmvc-maven.git注意这个仓库是我们已经准备好了的, 在码云上面3.0 设置触发器(保持默认)4.0 设置构建(编译打包)clean package -Dmaven.test.skiptrue5.0 构建后操作在构建后设置中 选择(send build artifacts over ssh)通过SSH发送构建工件点击-》增加构建后操作target/.war 构建之后在jenkins服务器上是可以自动看到war包的。该路径不需要创建 # ls /root/.jenkins/jobs/testjob1/builds/target/.warRemove prefix: 自动删除路径前缀不需要创建路径前缀Remote directory: tomcat业务服务器上的路径需要提前在192.168.0.109tomcat上创建该目录。 用来存放网站源代码。需要后台创建 # mkdir -p /jenkins/warExec command: tomcat192.168.0.109在接收到源码之后的自定义动作。 比如将源码拷贝到网站的主目录/jenkins,并执行一些其他操作如重启服务器等或创建文件touch需要后台创建 #mkdir /jenkins/sh # cat /jenkins/sh/deploy.sh cp -r /jenkins/war/*.war /jenkins touch /tmp/aaaaaa.txt #chmod x /jenkins/sh/deploy.sh6.0 执行构建7.0 观察tomcat网站服务器代码和脚本[rootlocalhost ~]# ls /jenkins/easy-springmvc-maven.warshwar[rootlocalhost ~]# ls /tmp/aaaaaa.txt/tmp/aaaaaa.txt easy-springmvc-maven.war 就是推送过来的网站源码了在接收到源码之后的自定义动作。 比如将源码拷贝到网站的主目录/jenkins,并执行一些其他操作如重启服务器等或创建文件touch需要后台创建 #mkdir /jenkins/sh # cat /jenkins/sh/deploy.sh cp -r /jenkins/war/*.war /jenkins touch /tmp/aaaaaa.txt #chmod x /jenkins/sh/deploy.sh