当前位置: 首页 > article >正文

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

使用Pipeline发布java项目

文章目录

  • 使用Pipeline发布java项目
    • 资源列表
    • 基础环境
    • 一、准备gitlab
      • 1.1、部署gitlab
      • 1.2、创建chinanews项目
      • 1.3、提交代码
      • 1.4、查看上传的代码
    • 二、准备Jenkins
      • 2.1、部署Jenkins
      • 2.2、安装maven
      • 2.3、修改Maven源
      • 2.4、准备chinanews
    • 三、Jenkins配置工具
      • 3.1、配置java
      • 3.2、配置Maven
      • 3.3、Jenkins配置SSH主机
      • 3.4、Jenkins配置gitlab的密码
      • 3.5、Jenkins创建chinanews项目
      • 3.6、配置流水线
      • 3.7、构建项目
      • 3.8、访问验证

资源列表

操作系统主机名配置IP
CentOS 7.9jenkins2C4G192.168.93.101
CentOS 7.9gitlab2C4G192.168.93.102
CentOS 7.9chinanews2C4G192.168.93.103

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
hostnamectl set-hostname jenkins
hostnamectl set-hostname gitlab
hostnamectl set-hostname chinanews

一、准备gitlab

1.1、部署gitlab

  • 这里省略部署步骤

1.2、创建chinanews项目

在这里插入图片描述

1.3、提交代码

  • 以jenkins主机为例,进行提交代码
# 切换目录拉取代码
[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主机操作
[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
# 验证是否安装成功
[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源

[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主机操作
[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、配置流水线

  • 生成一个自己的拉取仓库的代码,在拉取代码的步骤中,把代码换成自己的,其他直接复制即可
    在这里插入图片描述
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、访问验证

  • 访问地址:http://192.168.93.103:8080/chinanews
    在这里插入图片描述

http://www.kler.cn/a/501667.html

相关文章:

  • Colossal-AI:深度学习大规模分布式训练框架
  • 系统看门狗配置--以ubuntu为例
  • LeetCode 2270.分割数组的方案数:前缀和
  • 【文件锁】多进程线程安全访问文件demo
  • 局域网共享文件夹实现两台Windows电脑之间传输文件
  • Blazor开发复杂信息管理系统的优势
  • AIGC是什么?怎么用?简单三步ToDesk云电脑快速用
  • 前端学习-焦点事件以及键盘事件与典型案例(二十五)
  • Node.js——http 模块(二)
  • (Arxiv-2023)LORA-FA:针对大型语言模型微调的内存高效低秩自适应
  • 软件系统安全逆向分析-混淆对抗
  • HTML + CSS:如何强制div内容保持一行?
  • 26个开源Agent开发框架调研总结(2)
  • 如何使用高性能内存数据库Redis
  • 基于异步IO的io_uring
  • 【论文阅读+复现】High-fidelity Person-centric Subject-to-Image Synthesis
  • HAMi + prometheus-k8s + grafana实现vgpu虚拟化监控
  • 【Spring Boot 应用开发】-01 初识
  • 夯实前端基础之CSS篇
  • Edge浏览器内置的截长图功能
  • 品牌账号矩阵如何打造?来抄作业
  • Vue3.5 企业级管理系统实战(一):项目初始搭建与配置
  • 16_Redis Lua脚本
  • uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验
  • FPGA随记——时钟时序一些基本知识
  • 网工考试——网络安全