【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、访问验证

相关推荐
STARSpace888819 小时前
SpringBoot 整合个推推送
java·spring boot·后端·消息推送·个推
码农幻想梦19 小时前
实验八 获取请求参数及域对象共享数据
java·开发语言·servlet
信码由缰19 小时前
塑造2026年的六大软件开发与DevOps趋势
运维·devops
智能运维指南19 小时前
信创DevOps平台的度量体系选型:从研发效能到业务价值的联动
研发效能·devops·devops平台·devops系统·devops厂商
a努力。20 小时前
2026 AI 编程终极套装:Claude Code + Codex + Gemini CLI + Antigravity,四位一体实战指南!
java·开发语言·人工智能·分布式·python·面试
Dylan的码园20 小时前
功能包介绍 : calendar
java·jvm·eclipse
二川bro20 小时前
Java集合类框架的基本接口有哪些?
java·开发语言·python
菜鸟233号20 小时前
力扣213 打家劫舍II java实现
java·数据结构·算法·leetcode
panzer_maus20 小时前
Redis简单介绍(3)-持久化的实现
java·redis·mybatis
毕设源码-邱学长20 小时前
【开题答辩全过程】以 民宿在线预定平台的设计与实现为例,包含答辩的问题和答案
java·eclipse