【DevOps】Jenkins使用Pipeline构建java代码

使用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、构建项目

  • 时间有点漫长,这取决于你的网速(耐心等待)

  • 我第一次构建就是因为网络查导致失败了,网络速度快的话,一遍就能走下来

3.8、访问验证

相关推荐
五行星辰3 小时前
Servlet与JSP:Java的秘密花园入口
java·开发语言·servlet
Q_27437851093 小时前
django基于 Python 的考研学习系统的设计与实现
java·python·考研·django
Yang-Never3 小时前
Shader -> SweepGradient扫描渐变着色器详解
android·java·kotlin·android studio·着色器
我想学LINUX3 小时前
【2024年华为OD机试】 (C卷,100分)- 消消乐游戏(Java & JS & Python&C/C++)
java·c语言·javascript·c++·游戏·华为od
葡萄架子3 小时前
线程安全问题介绍
java·jvm·安全
Q_27437851094 小时前
django基于Python的校园个人闲置物品换购平台
java·数据库·python·django
牛马baby4 小时前
Java高频面试之SE-11
java·python·面试
kingbal4 小时前
SpringCloud:gateway分发服务报302,Network Error
java·spring cloud·gateway
ldj20204 小时前
基于文件系统分布式锁原理
java·分布式锁
雨露天泽4 小时前
jenkins
运维·jenkins