更新 java-项目.md

This commit is contained in:
wxin 2025-04-28 22:34:13 +08:00
parent bd90f93fff
commit 936e00abc9

View File

@ -1,235 +1,235 @@
<h2><center>持续集成-交付-部署-Java 项目</center></h2> <h2><center>持续集成-交付-部署-Java 项目</center></h2>
------ ------
## 一:环境 ## 一:环境
| 服务器 | IP地址 | 说明 | | 服务器 | IP地址 | 说明 |
| ------- | --------------- | -------------- | | ------- | --------------- | -------------- |
| GitLab | 192.168.159.136 | 私有仓库 | | GitLab | 192.168.159.136 | 私有仓库 |
| Jenkins | 192.168.159.137 | 自动化部署 | | Jenkins | 192.168.159.137 | 自动化部署 |
| web | 192.168.159.138 | 项目所属服务器 | | web | 192.168.159.138 | 项目所属服务器 |
三台服务器相互传ssh私钥 三台服务器相互传ssh私钥
## 二GitLab ## 二GitLab
### 1. 配置SSH ### 1. 配置SSH
![](accents\image-202504280075.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280075.png)
![](accents\image-202504280076.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280076.png)
![](accents\image-202504280077.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280077.png)
### 2. 创建项目 ### 2. 创建项目
![](accents\image-202504280078.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280078.png)
![](accents\image-202504280079.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280079.png)
![](accents\image-202504280080.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280080.png)
![](accents\image-202504280081.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280081.png)
## 三Jenkins ## 三Jenkins
### 1. 安装插件 ### 1. 安装插件
```bash ```bash
• Maven插件 Maven Integration plugin • Maven插件 Maven Integration plugin
• 发布插件 Deploy to container Plugin • 发布插件 Deploy to container Plugin
• Git 插件 可能已经安装 • Git 插件 可能已经安装
• Pipeline Maven Integration:jenkins利用Maven编译打包所需插件 • Pipeline Maven Integration:jenkins利用Maven编译打包所需插件
• Publish Over SSH:通过ssh连接 • Publish Over SSH:通过ssh连接
``` ```
### 2. 配置凭证 ### 2. 配置凭证
![](accents\image-202504280062.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280062.png)
![](accents\image-202504280063.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280063.png)
![](accents\image-202504280064.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280064.png)
![](accents\image-202504280065.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280065.png)
**用户密码模式** **用户密码模式**
![](accents\image-202504280066.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280066.png)
**SSH密钥模式** **SSH密钥模式**
![](accents\image-202504280067.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280067.png)
### 3. 配置SSH ### 3. 配置SSH
![](accents\image-202504280068.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280068.png)
Jenkins服务器私钥传给web服务器 Jenkins服务器私钥传给web服务器
![](accents\image-202504280069.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280069.png)
![](accents\image-202504280070.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280070.png)
### 4. jdk git maven配置 ### 4. jdk git maven配置
![](accents\image-202504280071.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280071.png)
![](accents\image-202504280072.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280072.png)
Jenkins服务器安装git Jenkins服务器安装git
![](accents\image-202504280073.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280073.png)
![](accents\image-202504280074.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280074.png)
## 四web ## 四web
### 1. 拉取仓库 ### 1. 拉取仓库
![](accents\image-202504280082.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280082.png)
```bash ```bash
[root@web ~]# cd /opt [root@web ~]# cd /opt
[root@web opt]# git clone http://192.168.159.136/root/easy-springmvc-maven.git [root@web opt]# git clone http://192.168.159.136/root/easy-springmvc-maven.git
``` ```
### 2. 获取测试文件 ### 2. 获取测试文件
```bash ```bash
[root@web ~]# [root@web ~]#
[root@web ~]# cp -r easy-springmvc-maven-master/* /opt/easy-springmvc-maven/ [root@web ~]# cp -r easy-springmvc-maven-master/* /opt/easy-springmvc-maven/
``` ```
### 3. 上传代码 ### 3. 上传代码
```bash ```bash
[root@web easy-springmvc-maven]# git add . [root@web easy-springmvc-maven]# git add .
[root@web easy-springmvc-maven]# git commit -m "first" [root@web easy-springmvc-maven]# git commit -m "first"
[root@web easy-springmvc-maven]# git push [root@web easy-springmvc-maven]# git push
``` ```
### 4. 安装jdk tomcat ### 4. 安装jdk tomcat
```bash ```bash
[root@web ~]# tar xf jdk-8u211-linux-x64.tar.gz -C /usr/local/ [root@web ~]# tar xf jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@web ~]# ln -s /usr/local/jdk1.8.0_211/ /usr/local/jdk8 [root@web ~]# ln -s /usr/local/jdk1.8.0_211/ /usr/local/jdk8
[root@web ~]# vim /etc/profile [root@web ~]# vim /etc/profile
JAVA_HOME=/usr/local/jdk8 JAVA_HOME=/usr/local/jdk8
MAVEN_HOME=/usr/local/maven MAVEN_HOME=/usr/local/maven
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export PATH JAVA_HOME MAVEN_HOME export PATH JAVA_HOME MAVEN_HOME
[root@web ~]# source /etc/profile [root@web ~]# source /etc/profile
[root@web ~]# mkdir -p /data/application [root@web ~]# mkdir -p /data/application
[root@web ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.104/bin/apache-tomcat-9.0.104.tar.gz [root@web ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.104/bin/apache-tomcat-9.0.104.tar.gz
[root@web ~]# tar xf apache-tomcat-9.0.104.tar.gz -C /data/application/ [root@web ~]# tar xf apache-tomcat-9.0.104.tar.gz -C /data/application/
[root@web ~]# mv /data/application/apache-tomcat-9.0.104/ /data/application/tomcat [root@web ~]# mv /data/application/apache-tomcat-9.0.104/ /data/application/tomcat
[root@web ~]# vim /data/application/tomcat/conf/server.xml [root@web ~]# vim /data/application/tomcat/conf/server.xml
取消8009的注释 取消8009的注释
<!-- Define an AJP 1.3 Connector on port 8009 --> <!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3" <Connector protocol="AJP/1.3"
address="::1" address="::1"
port="8009" port="8009"
redirectPort="8443" redirectPort="8443"
maxParameterCount="1000" maxParameterCount="1000"
/> />
``` ```
### 5. 编写脚本 ### 5. 编写脚本
```bash ```bash
[root@web ~]# vim /opt/jenkins.sh [root@web ~]# vim /opt/jenkins.sh
#!/usr/bin/bash #!/usr/bin/bash
#Defining variables #Defining variables
export JAVA_HOME=/usr/local/java export JAVA_HOME=/usr/local/java
webapp_path="/data/application/tomcat/webapps" webapp_path="/data/application/tomcat/webapps"
tomcat_run="/data/application/tomcat/bin" tomcat_run="/data/application/tomcat/bin"
updata_path="/data/update/`date +%F-%T`" updata_path="/data/update/`date +%F-%T`"
backup_path="/data/backup/`date +%F-%T`" backup_path="/data/backup/`date +%F-%T`"
tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'` tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`
files_dir="easy-springmvc-maven" files_dir="easy-springmvc-maven"
files="easy-springmvc-maven.war" files="easy-springmvc-maven.war"
job_path="/root/upload" job_path="/root/upload"
#Preparation environment #Preparation environment
echo "Creating related directory" echo "Creating related directory"
mkdir -p $updata_path mkdir -p $updata_path
mkdir -p $backup_path mkdir -p $backup_path
echo "Move the uploaded war package to the update 2directory" echo "Move the uploaded war package to the update 2directory"
mv $job_path/$files $updata_path mv $job_path/$files $updata_path
echo "=========================================================" echo "========================================================="
cd /opt cd /opt
echo "Backing up java project" echo "Backing up java project"
if [ -f $webapp_path/$files ];then if [ -f $webapp_path/$files ];then
tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path
if [ $? -ne 0 ];then if [ $? -ne 0 ];then
echo "打包失败,自动退出" echo "打包失败,自动退出"
exit 1 exit 1
else else
echo "Checking if tomcat is started" echo "Checking if tomcat is started"
if [ -n "$tomcat_pid" ];then if [ -n "$tomcat_pid" ];then
kill -9 $tomcat_pid kill -9 $tomcat_pid
if [ $? -ne 0 ];then if [ $? -ne 0 ];then
echo "tomcat关闭失败将会自动退出" echo "tomcat关闭失败将会自动退出"
exit 2 exit 2
fi fi
fi fi
cd $webapp_path cd $webapp_path
rm -rf $files && rm -rf $files_dir rm -rf $files && rm -rf $files_dir
cp $updata_path/$files $webapp_path cp $updata_path/$files $webapp_path
cd /opt cd /opt
$tomcat_run/startup.sh $tomcat_run/startup.sh
sleep 5 sleep 5
echo "显示tomcat的pid" echo "显示tomcat的pid"
echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`" echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
echo "tomcat startup" echo "tomcat startup"
echo "请手动查看tomcat日志。脚本将会自动退出" echo "请手动查看tomcat日志。脚本将会自动退出"
fi fi
else else
echo "Checking if tomcat is started" echo "Checking if tomcat is started"
if [ -n "$tomcat_pid" ];then if [ -n "$tomcat_pid" ];then
kill -9 $tomcat_pid kill -9 $tomcat_pid
if [ $? -ne 0 ];then if [ $? -ne 0 ];then
echo "tomcat关闭失败将会自动退出" echo "tomcat关闭失败将会自动退出"
exit 2 exit 2
fi fi
fi fi
cp $updata_path/$files $webapp_path cp $updata_path/$files $webapp_path
$tomcat_run/startup.sh $tomcat_run/startup.sh
sleep 5 sleep 5
echo "显示tomcat的pid" echo "显示tomcat的pid"
echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`" echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
echo "tomcat startup" echo "tomcat startup"
echo "请手动查看tomcat日志。脚本将会自动退出" echo "请手动查看tomcat日志。脚本将会自动退出"
fi fi
[root@web ~]# chmod +x /opt/jenkins [root@web ~]# chmod +x /opt/jenkins
``` ```
## 五jenkins创建项目 ## 五jenkins创建项目
### 1. 创建项目 ### 1. 创建项目
![](accents\image-202504280083.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280083.png)
![](accents\image-202504280084.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280084.png)
![](accents\image-202504280085.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280085.png)
![](accents\image-202504280086.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280086.png)
![](accents\image-202504280087.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280087.png)
![](accents\image-202504280088.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280088.png)
![](accents\image-202504280089.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280089.png)
### 2. 构建 ### 2. 构建
![](accents\image-202504280090.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280090.png)
![](accents\image-202504280091.png) ![](http://182.92.143.66:40072/directlink/img/CI-CD/image-202504280091.png)