一: 环境搭建
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,然后配置环境变量)
bash
# 下载 maven3.8.8 包
tar -zxvf apache-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.sh
export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export MAVEN_HOME=/usr/local/maven
export PATH=${MAVEN_HOME}/bin:$PATH
# 生效
source /etc/profile.d/jenkins_tools.sh
# 测试
mvn -version
(2) 安装git
bash
# 安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker fontconfig -y
# 解压并cd到解压目录
tar xf git-2.9.5.tar.gz
cd git-2.9.5/
make prefix=/usr/local/git all # 编译源码包
make prefix=/usr/local/git install # 源码安装
# 修改环境变量
vim /etc/bashrc
PATH=$PATH:$HOME/bin:/usr/local/git/bin
source /etc/bashrc
# 测试是否安装成功
git --version
(3) 安装jdk,tomcat
bash
# 解压tomcat和jdk的包
tar xf jdk-11.0.16_linux-x64_bin.tar.gz
tar xf apache-tomcat-9.0.79.tar.gz
# 拷贝并修改名称
mv jdk-11.0.16 /usr/local/java && mv apache-tomcat-9.0.79 /usr/local/tomcat
# 处理环境变量
vim /etc/profile.d/java.sh
TOMCAT_HOME=/usr/local/tomcat
JAVA_HOME=/usr/local/java
PATH=$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATH
export TOMCAT_HOME JAVA_HOME PATH
source /etc/profile.d/java.sh
3.0 jenkins后台安装
bash
# 上传jdk
rm -rf /usr/local/tomcat/webapps/*
cp jenkins.war /usr/local/tomcat/webapps/
# 安装字体
yum install fontconfig
# 启动tomcat
/usr/local/tomcat/bin/startup.sh
# 访问8080端口即可
如果访问不成功,检测一下防火墙是否是关闭的, selinux是否是关闭的
- 注: jenkins放在tomcat的webapps的下面,启动tomcat之后会自动的解压我们的war包,然后自动部署我们的jenkins.
4.0 jenkins前台安装
进入页面后,我们先根据提示来进行操作
安装插件会从国外拉取,这里我们提供两种解决方案 :
(1) 方案一: 将国外地址改为国内的
bash
vim ~/.jenkins/hudson.model.UpdateCenter.xml
http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
vim ~/.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) 方案二: 直接将安装好的插件拷贝到安装目录当中
bash
# jenkins是隐藏目录
[root@localhost ~]# 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
[root@localhost ~]#
# 我们进入发现里面有一个plugings插件目录,我们的安装的插件会放在这个目录的下面
[root@localhost ~]# cd ./.jenkins/
[root@localhost .jenkins]# ll
总用量 20
-rw-r-----. 1 root root 1658 4月 18 09:19 config.xml
-rw-r-----. 1 root root 156 4月 18 09:18 hudson.model.UpdateCenter.xml
-rw-r-----. 1 root root 171 4月 18 09:18 jenkins.telemetry.Correlator.xml
drwxr-x---. 2 root root 6 4月 18 09:18 jobs
-rw-r-----. 1 root root 907 4月 18 09:18 nodeMonitors.xml
drwxr-x---. 2 root root 6 4月 18 09:18 nodes
drwxr-x---. 2 root root 6 4月 18 09:18 plugins
-rw-r-----. 1 root root 64 4月 18 09:18 secret.key
-rw-r-----. 1 root root 0 4月 18 09:18 secret.key.not-so-secret
drwx------. 2 root root 91 4月 18 09:18 secrets
drwxr-x---. 2 root root 67 4月 18 09:19 updates
drwxr-x---. 2 root root 24 4月 18 09:18 userContent
drwxr-x---. 3 root root 57 4月 18 09:18 users
[root@localhost .jenkins]#
# 我们上传自己本地准备好的插件,然后替换他这个
[root@localhost root]# ls -a
. .. .jenkins
[root@localhost root]# cd ./.jenkins/
[root@localhost .jenkins]# ll
总用量 12
drwxr-x---. 95 root root 8192 9月 13 2023 plugins
[root@localhost .jenkins]# ll
总用量 12
drwxr-x---. 95 root root 8192 9月 13 2023 plugins
[root@localhost .jenkins]# cd ./plugins/
[root@localhost plugins]# pwd
/root/root/.jenkins/plugins
[root@localhost plugins]# \ cp * -rf /root/.
./ .bash_history .bash_profile .cshrc .jenkins/ .viminfo
../ .bash_logout .bashrc .java/ .tcshrc
[root@localhost 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
[root@localhost plugins]# \cp -rf * /root/.jenkins/plugins/
[root@localhost plugins]# ll /root/.jenkins/plugins/ # 查看插件是否已经复制到jenkins的目录下面了

二: 系统配置
1.0 系统提示

- centos7支持截止日期
操作系统寿命终止监视器 您正在CentOS Linux 7(Core)上运行Jenkins。Jenkins将在2023-11-16年后不再支持CentOS Linux 7(Core)。 请计划在2023-11-16年之前升级到受支持的操作系统。 有关详细信息,请参阅文档
如果你希望继续使用centos7上jenkins请保留这个版本
- 单节点提示
在内置节点上构建可能是一个安全问题。提醒我们应该设置分布式构建。
2.0 全局变量与全局工具配置
(1) 全局变量: 这里我们配置 JAVA_HOME与MAVEN_HOME


(2) 全局工具配置

- maven配置

- 添加jdk工具

- 添加git工具
注意: 如果我们的jenkins没有这个,就是没有git插件,因此我们需要下载插件。看下面的文档。

- 添加maven工具

3.0 SSH设置
作用:
- 让 Jenkins 能远程登录到别的服务器,自动执行命令、传文件、部署项目。
bash
# jenkins服务器
[root@localhost plugins]# ssh-keygen # 敲这个命令之后,一直回车即可
# 我们需要准备一台远程登录的服务器
ssh-copy-id -i 远程服务器ip
# 远程登录
ssh root@远程服务器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 SSH
2.0 配置maven
配置国内maven镜像
bash
vim /usr/local/maven/conf/settings.xml
<mirror>
<id>central</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
四: Jenkins+Maven+Gitee+Tomcat 自动化构建打包、部署
1.0 创建Maven项目


2.0 源码管理
选择版本控制器和仓库地址
互联网仓库:https://gitee.com/newrain001/easy-springmvc-maven.git
- 注意这个仓库是我们已经准备好了的, 在码云上面

3.0 设置触发器(保持默认)

4.0 设置构建(编译打包)
clean package -Dmaven.test.skip=true

5.0 构建后操作
- 在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工件

- 点击-》增加构建后操作

- target/.war: 构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建) # ls /root/.jenkins/jobs/testjob1/builds/target/.war
- Remove prefix: 自动删除路径前缀(不需要创建路径前缀)
- Remote directory: tomcat业务服务器上的路径,需要提前在192.168.0.109(tomcat)上创建该目录。 用来存放网站源代码。(需要后台创建) # mkdir -p /jenkins/war
- Exec command: tomcat(192.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.sh
6.0 执行构建

7.0 观察tomcat网站服务器,代码和脚本
bash
[root@localhost ~]# ls /jenkins/
easy-springmvc-maven.war sh war
[root@localhost ~]# 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