使用Pipeline发布java项目
文章目录
资源列表
操作系统 | 主机名 | 配置 | IP |
---|---|---|---|
CentOS 7.9 | jenkins | 2C4G | 192.168.93.101 |
CentOS 7.9 | gitlab | 2C4G | 192.168.93.102 |
CentOS 7.9 | chinanews | 2C4G | 192.168.93.103 |
基础环境
- 关闭防火墙
bash
systemctl stop firewalld
systemctl disable firewalld
- 关闭内核安全机制
bash
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
- 修改主机名
bash
hostnamectl set-hostname jenkins
hostnamectl set-hostname gitlab
hostnamectl set-hostname chinanews
一、准备gitlab
1.1、部署gitlab
- 这里省略部署步骤
1.2、创建chinanews项目
1.3、提交代码
- 以jenkins主机为例,进行提交代码
bash
# 切换目录拉取代码
[root@jenkins ~]# cd /mnt/
[root@jenkins mnt]# git clone http://192.168.93.102/root/chinanews.git
# 回到root目录,解压所需源代码
[root@jenkins ~]# tar -zxvf chinanews.git.tar.gz
[root@jenkins ~]# mv chinanews/* /mnt/chinanews/
mv:是否覆盖"/mnt/chinanews/README.md"? y
[root@jenkins ~]# cd /mnt/chinanews/
[root@jenkins chinanews]# git add .
[root@jenkins chinanews]# git commit -m "web01"
[root@jenkins chinanews]# git push -u origin main
1.4、查看上传的代码
二、准备Jenkins
2.1、部署Jenkins
- 这里安装步骤省略
2.2、安装maven
- jenkins主机操作
bash
[root@jenkins ~]# tar -zxvf apache-maven-3.6.0-bin.tar.gz
[root@jenkins ~]# mv apache-maven-3.6.0 /usr/local/maven
[root@jenkins ~]# cat >> /etc/profile << 'EOF'
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
EOF
[root@jenkins ~]# source /etc/profile
bash
# 验证是否安装成功
[root@jenkins ~]# mvn -v
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /usr/local/maven
Java version: 11.0.16.1, vendor: Oracle Corporation, runtime: /usr/local/java11
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.71.1.el7.x86_64", arch: "amd64", family: "unix"
2.3、修改Maven源
bash
[root@jenkins ~]# vim /usr/local/maven/conf/settings.xml
# 修改 maven 的仓库
# 可以进行搜索以下配置端,然后进行更改
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
2.4、准备chinanews
- 在chinanews主机操作
bash
[root@chinanews ~]# tar -zxvf jdk-11.0.16.1_linux-x64_bin.tar.gz
[root@chinanews ~]# mv jdk-11.0.16.1 /usr/local/java11/
[root@chinanews ~]# cat >> /etc/profile << 'EOF'
export JAVA_HOME=/usr/local/java11/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
EOF
[root@chinanews ~]# source /etc/profile
[root@chinanews ~]# java -version
[root@chinanews ~]# tar -zxvf apache-tomcat-8.5.56.tar.gz
[root@chinanews ~]# mv apache-tomcat-8.5.56 /usr/local/tomcat
三、Jenkins配置工具
3.1、配置java
- 点击"系统管理"------>"全局工具配置(Tools)"------>"JDK下的新增"
3.2、配置Maven
- 点击"系统管理"------>"全局工具配置(Tools)"------>"Maven下的新增"
3.3、Jenkins配置SSH主机
- 点击"系统管理"------>"系统配置(System)"------>"SSH Server"下的新增
3.4、Jenkins配置gitlab的密码
- 点击"系统管理"------>"凭据管理(Credentials)"------>"全局"------>"Add Credentials"
- 我是基于之前的环境做的,之前的环境已经做过词此步骤
3.5、Jenkins创建chinanews项目
3.6、配置流水线
- 生成一个自己的拉取仓库的代码,在拉取代码的步骤中,把代码换成自己的,其他直接复制即可
bash
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
git branch: 'main', credentialsId: '5592dcbd-ca4d-4d75-8793-5f834c11014b', url: 'http://192.168.93.102/root/chinanews.git'
}
}
stage('编译构建') {
steps {
sh '''t=\'target\'
if [ -d "$t" ];then
rm -rf $t
fi
/usr/local/maven/bin/mvn clean package
'''
}
}
stage('推送部署') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'chinanews', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''source /etc/profile
mv -f /usr/local/tomcat/webapps/target/chinanews.war /usr/local/tomcat/webapps/
sleep 3
/usr/local/tomcat/bin/shutdown.sh
sleep 3
/usr/local/tomcat/bin/startup.sh
sleep 1''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/chinanews.war')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
3.7、构建项目
-
时间有点漫长,这取决于你的网速(耐心等待)
-
我第一次构建就是因为网络查导致失败了,网络速度快的话,一遍就能走下来