【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.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 |
基础环境
- 关闭防火墙
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 anystages {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" ];thenrm -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
相关文章:
【DevOps】Jenkins使用Pipeline构建java代码
使用Pipeline发布java项目 文章目录 使用Pipeline发布java项目资源列表基础环境一、准备gitlab1.1、部署gitlab1.2、创建chinanews项目1.3、提交代码1.4、查看上传的代码 二、准备Jenkins2.1、部署Jenkins2.2、安装maven2.3、修改Maven源2.4、准备chinanews 三、Jenkins配置工具…...
【网络云SRE运维开发】2025第2周-每日【2025/01/12】小测-【第12章 rip路由协议】理论和实操考试题
文章目录 选择题理论题 解释RIP协议中的“水平分割”机制,并说明其目的。 可以防止路由器错误地将从邻居学到的路由再发送回给该邻居,从而避免路由环路的发生。实操题 【网络云SRE运维开发】2025第2周-每日【2025/01/12】小测-【第12章 rip路由协议】理论…...
Entity 的材质(棋盘、条纹、网格)
Entity 的材质 普通物体的材质 import { nextTick, onMounted, ref } from vue import * as Cesium from cesium // console.log(Cesium, Cesium)const viewer ref<any>(null)onMounted(() > { ... })let material Cesium.Color.YELLOW.withAlpha(0.5)Cesium.Colo…...
shell脚本编写练习3
1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。 #!/bin/bash # 定义文件路径变量 file_path"/tmp/size.log"# 使用if语句检查文件是否存在 if [ -e "$file_path" ] # 检查变量file_path…...
事务的隔离级别和MDL
文章目录 说明不同隔离级别可能发生的现象关键现象解释MDL(元数据锁,Metadata Lock)MDL 的作用MDL 的工作原理MDL 锁的常见场景如何避免 MDL 阻塞 说明 本文章由大模型对话整理而来,如果有错误之处,请在评论区留言指正…...
用户界面软件05
已知应用 几乎所有的流行的用户界面架构都使用这种模式。我在这里举三个例子: 1. Seeheim 用户界面架构的特点是有一个应用核心的领域层和一个用户界面层。后者 被分为两层,叫做表示层和对话控制层。因为这个架构和面向事务系统有渊源,没有…...
基于Springboot + vue实现的办公用品管理系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...
17_Redis管道技术
Redis管道(Pipeline)技术是一种在 Redis 客户端与服务器之间进行高效数据交互的技术。 1.Redis管道技术介绍 1.1 传统请求响应模式 在传统的请求-响应模式下,客户端每发送一个命令后会等待服务器返回结果,然后再发送下一个命令。这种方式在网络延迟较高的情况下会导致性…...
【环境搭建】Metersphere v2.x 容器部署教程踩坑总结
前言 Metersphere部署过程中遇到的问题有点多,原因是其容器的架构蛮复杂的,比较容易踩坑,所以记录一下。 介绍 MeterSphere 是开源持续测试平台,遵循 GPL v3 开源许可协议,涵盖测试管理、接口测试、UI 测试和性能测…...
Vue虚拟DOM:如何提高前端开发效率
前言 随着前端技术的不断发展,越来越多的框架和库涌现出来,其中Vue.js成为了最受欢迎的前端框架之一。Vue.js采用了响应式数据绑定和组件化的思想,让开发者可以更加高效地构建交互式的用户界面。而Vue.js的底层原理涉及到许多概念和技术&…...
【C】预处理详解
在上一篇文章中,简单讲解了一个C程序是如何从一句句C代码变为一个个二进制指令,并最终变成可执行程序成功运行。在预处理、编译、汇编、链接四个步骤中,预处理阶段做的事情特别多,接下来我们就来讲解一下在预处理阶段处理的一些预…...
CES Asia 2025:VR/AR/XR引领科技新潮流
在全球科技领域蓬勃发展的大背景下,CES Asia 2025(赛逸展)即将在京盛大开幕,VR/AR/XR技术作为前沿科技的代表,将在本次展会上大放异彩,展现出令人瞩目的发展趋势和巨大潜力,同时政策优势也将为其…...
Lua调用C#
目录 创建C#入口 Lua调用类 Lua调用枚举 Lua调用数组,列表,字典 Lua调用C#拓展方法 Lua调用C#Ref与Out知识 Lua调用C#函数重载 Lua调用C#委托与事件 Lua调用C#二维数组 Lua调用C#中nil与null的差距 Lua调用C#中让系类型与lua能够互相访问 Lua调用…...
EdgeOne安全专项实践:上传文件漏洞攻击详解与防范措施
靶场搭建 当我们考虑到攻击他人服务器属于违法行为时,我们需要思考如何更好地保护我们自己的服务器。为了测试和学习,我们可以搭建一个专门的靶场来模拟文件上传漏洞攻击。以下是我搭建靶场的环境和一些参考资料,供大家学习和参考࿰…...
springboot使用Easy Excel导出列表数据为Excel
springboot使用Easy Excel导出列表数据为Excel Easy Excel官网:https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write 主要记录一下引入时候的pom,直接引入会依赖冲突 解决方法: <!-- 引入Easy Excel的依赖 -->&l…...
现代 CPU 的高性能架构与并发安全问题
现代 CPU 的设计(如多级缓存、指令重排)为了提升性能,引入了许多优化机制,但这些机制可能导致并发场景下的安全性问题。并发安全性主要体现在三个方面:原子性、有序性 和 可见性。这些问题在底层通过 CAS(C…...
【数模学习笔记】插值算法和拟合算法
声明:以下笔记中的图片以及内容 均整理自“数学建模学习交流”清风老师的课程资料,仅用作学习交流使用 文章目录 插值算法定义三个类型插值举例插值多项式分段插值三角插值 一般插值多项式原理拉格朗日插值法龙格现象分段线性插值 牛顿插值法 Hermite埃尔…...
JavaScript 数组及其常用方法
1. JavaScript 数组概述 数组是 JavaScript 中用于存储多个值的数据结构。它可以存储不同类型的元素,并提供强大的方法来操作和管理数据。数组的元素按索引(从 0 开始)进行访问。 2. 数组的创建方式 1) 使用数组字面量 let fruits [&quo…...
SQL HAVING 子句深入解析
SQL HAVING 子句深入解析 介绍 SQL(Structured Query Language)是一种用于管理关系数据库管理系统的标准编程语言。在SQL中,HAVING子句是与GROUP BY子句一起使用的,用于筛选分组后的数据。它根据聚合函数的结果对组进行条件过滤…...
vue3+ts的几个bug调试
由于编译问题,把几个type检查给关闭了,否则错误太多。 1)第一个检查出的问题,拼写错误数组的length,写成了lengh。 2)数组的对象引用。 torStatus Array(8).fill({ ...defaultStatus }) as TorStatus[]…...
git: hint:use --reapply-cherry-picks to include skipped commits
问: 当我在feture分支写完功能,切换到dev更新了远端dev代码,切回feture分支,git rebase dev分支后出现报错: warning skipped previously applied commit 709xxxx hint:use --reapply-cherry-picks to include skippe…...
Microsoft Sql Server 2019 数据类型
数据类型 bigint、int、smallint、tinyint 使用整数数据的精确数字数据类型。 若要节省数据库空间,请使用能够可靠包含所有可能值的最小数 据类型。 例如,对于一个人的年龄,tinyint 就足够了,因为没人活到 255 岁以上。 但对于建筑物的 年龄,tinyint 就不再适应,因为建…...
C++实现设计模式---代理模式 (Proxy)
代理模式 (Proxy) 代理模式 是一种结构型设计模式,它为其他对象提供一个代理以控制对该对象的访问。代理模式常用于延迟加载、访问控制、智能引用等场景。 意图 提供对某对象的控制。控制对目标对象的访问,通常用于在不改变目标对象的情况下࿰…...
微信小程序用的SSL证书有什么要求吗?
微信小程序主要建立在手机端使用,然而手机又涉及到各种系统及版本,所以对SSL证书也有要求,如果要小程序可以安全有效的访问需要满足以下要求: 1、原厂SSL证书(原厂封)。 2、DV单域名或者DV通配符。 3、兼…...
Flutter中Get.snackbar和Get.dialog关闭冲突问题记录
背景: 在使用GetX框架时,同时使用了Get.snackbar提示框和Get.dialog加载框,当这两个widget同时存在时,Get.dialog加载框调用Get.back()无法正常关闭。 冲突解释: 之所以会产生冲突,是因为Get.snackbar在关…...
命令模式-Command Pattern
什么是命令模式 命令模式是一种行为类设计模式,核心是将每种请求或操作封装为一个独立的对象,从而可以集中管理这些请求或操作,比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者(客户端)和接收者(执行请求…...
【Linux笔记】Day1
基于韩顺平老师课程记录: https://www.bilibili.com/video/BV1Sv411r7vd 安装CentOS 给CentOS手动分区 分为三个区: boot分区(给1G就行) 交换分区(和内存相关,这里和虚拟机的内存2G一致) …...
如何明智地提问
如何明智地提问的重要总结,让我为主要观点添加一些具体的实践建议: 提问前的准备工作 尝试在 Google、Stack Overflow 等平台搜索相似问题阅读相关文档和错误日志尝试自己调试和排查问题记录下已尝试过的解决方案 选择合适的提问平台 Stack Overflow…...
【大前端】Vue3 工程化项目使用详解
目录 一、前言 二、前置准备 2.1 环境准备 2.1.1 create-vue功能 2.1.2 nodejs环境 2.1.3 配置nodejs的环境变量 2.1.4 更换安装包的源 三、工程化项目创建与启动过程 3.1 创建工程化项目 3.2 项目初始化 3.3 项目启动 3.4 核心文件说明 四、VUE两种不同的API风格 …...
window.print()预览时表格显示不全
问题描述:使用element的table组件,表格列宽为自适应,但使用window.print()方法预览的页面会直接按预览宽度截取表格内容进行展示,造成表格可能的显示不全问题 解决方法:添加如下样式 media print {::v-deep {// 表头…...
《解锁鸿蒙Next系统人工智能语音助手开发的关键步骤》
在当今数字化时代,鸿蒙Next系统与人工智能的融合为开发者带来了前所未有的机遇,开发一款人工智能语音助手应用更是备受关注。以下是在鸿蒙Next系统上开发人工智能语音助手应用的关键步骤: 环境搭建与权限申请 安装开发工具:首先需…...
计算机网络之---MAC协议
MAC协议的作用 在数据链路层中,MAC(媒介访问控制)协议负责控制设备如何访问共享的通信介质(如以太网、无线电波等),确保在多台设备共享同一传输媒介时能够有效地进行数据传输,避免冲突、控制流…...
系统思考—要素连接
“改变你的思维,就能改变你的世界”— 诺曼皮尔 世界上的所有事物,都在规律的支配下,以系统的方式运转。显性的部分是我们能看到的“要素”,而那些看不见的力量,正是推动系统运作的要素之间的相互作用。更隐秘的&…...
influxdb 采集node_exporter数据
一、打开Scrapers添加 node_exporter地址:http://192.168.31.135:9100/metrics 查看数据...
数据链路层-STP
生成树协议STP(Spanning Tree Protocol) 它的实现目标是:在包含有物理环路的网络中,构建出一个能够连通全网各节点的树型无环逻辑拓扑。 选举根交换机: 选举根端口: 选举指定端口: 端口名字&…...
学技术学英语:ELK是什么
📢📢📢: 先看关键单词,再看英文,最后看中文总结,再回头看一遍英文原文,效果更佳!! 关键词 aggregate 聚合 /ˈɡrɪɡeɪt/ analytics 分析学 /ˌnəˈl…...
快速实现一个快递物流管理系统:实时更新与状态追踪
物流管理是电商、仓储和配送等行业的重要组成部分。随着电子商务的快速发展,快递物流的高效管理和实时状态更新变得尤为关键。本文将演示如何使用Node.js、Express、MongoDB等技术快速构建一个简单的快递物流管理系统,该系统支持快递订单的实时更新和追踪…...
android分区和root
线刷包内容: 线刷包是一个完整的android镜像,不但包括android、linux和用户数据,还包括recovery等。当然此图中没有recovery,但是我们可以自己刷入一个。 主要分区 system.img 系统分区,包括linux下主要的二进制程序。 boot.img…...
【Go】:深入解析 Go 1.24:新特性、改进与最佳实践
前言 Go 1.24 尚未发布。这些是正在进行中的发布说明。Go 1.24 预计将于 2025 年 2 月发布。本文将深入探讨 Go 1.24 中引入的各项更新,并通过具体示例展示这些变化如何影响日常开发工作,确保为读者提供详尽而有价值的参考。 新特性及改进综述 HTTP/2 …...
Vue3组件通讯——自定义事件(子->父)
需求如下: 1.在子组件中,当用户点击提交按钮后,更新数据库 2.数据更新成功后,子组件通知父组件getUserInfo函数,重新获取数据,同步更新 3.子组件等待getUserInfo函数执行完毕后,调用init函数…...
【Rust自学】12.2. 读取文件
12.2.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print),是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步: 接收命令行参数读…...
《OpenCV计算机视觉实战项目》——银行卡号识别
文章目录 项目任务及要求项目实现思路项目实现及代码导入模块设置参数对模版图像中数字的定位处理银行卡的图像处理读取输入图像,预处理找到数字边框使用模版匹配,计算匹配得分 画出并打印结果 项目任务及要求 任务书: 要为某家银行设计一套…...
Windows 下Mamba2 / Vim / Vmamba 环境安装问题记录及解决方法终极版(无需绕过triton)
导航 安装教程导航 Mamba 及 Vim 安装问题参看本人博客:Mamba 环境安装踩坑问题汇总及解决方法(初版)Linux 下Mamba 及 Vim 安装问题参看本人博客:Mamba 环境安装踩坑问题汇总及解决方法(重置版)Windows …...
OpenCV的一种改进型的素描特效算法
实现素描特效的原理主要基于图像处理中的边缘检测和灰度反转等技术。边缘检测能够突出图像中的轮廓信息,而灰度反转则用于增强对比,使图像看起来更像手绘素描。 1 素描特效的常规算法 图像读取与预处理 使用图像处理库(如OpenCV)…...
Maven核心插件之maven-resources-plugin
前言 Maven 插件是 Maven 构建系统的重要组成部分,它们为 Maven 提供了丰富的功能和扩展能力,使得 Maven 不仅是一个构建工具,更是一个强大的项目管理平台。在 Maven 项目中,插件的使用通常通过配置 pom.xml 文件来完成。每个插件…...
LeetCode 283题:移动零
LeetCode 283题:移动零 (Move Zeroes) LeetCode 第283题要求将数组中的所有零移动到数组的末尾,同时保持非零元素的相对顺序。 题目描述 给定一个数组 nums,编写一个函数将所有的 0 移动到数组的末尾,同时保持非零元素的相对顺序…...
常见的开源协议及注意事项【精简版】
注: 以下内容出自Github Copilot。 常见的开源协议有以下几种,每种协议都有其特定的使用场景和注意事项: MIT许可证: 特点:非常宽松,允许用户自由使用、复制、修改、合并、发布、分发、再许可和/或销售软件…...
【Oracle专栏】2个入参,生成唯一码处理
Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 业务需要:2个参数,如 aidbankid ,两个值是联合主键,需要生成一个固定唯一码,长度有限制32位,为了…...
component-动态控制 div width 的值 根据传入的变量决定width的值 vue
1.实现 根据参数的值,div显示不同的长度 <div class"node-line" :style"lineProgress"></div> <script>export default {name: "trainSummaryInfo",data(){return{linePercentage:200,}},computed:{lineProgress…...
<2025 网络安全>《网络安全政策法规-关键信息基础设施安全保护条例》
1 政策出台背景 《关键信息基础设施安全保护条例》的实施背景主要包括以下几个方面: 首先,关键信息基础设施在经济社会中的重要地位使其成为网络安全的核心保护对象。关键信息基础设施包括公共通信和信息服务、能源、交通、水利、金融、公共服…...