Jenkins从0-1搭建--基于pipeline构建发布简单项目

news/2024/10/6 3:57:14/文章来源:https://www.cnblogs.com/cheyunhua/p/18286059

目录

一、新建流水线任务

二、参数化构建过程

1. 服务器选项

2. 项目分支

3.发布环境

三、编写流水线脚本

3.1 sshPublisher机器IP设置:

3.2 水流线代码

四、流水线语法

一、新建流水线任务


二、参数化构建过程
1. 服务器选项
value里面填写服务器ip

 

2. 项目分支
默认dev

 

3.发布环境
默认dev

 

三、编写流水线脚本
水流线脚本主要是groovy语法和shell语法。

3.1 sshPublisher机器IP设置:
系统管理-->系统配置--> ssh servers, 添加对应机器ip即可

 

3.2 水流线代码
最终完成流水线代码:


final def branch = env.branch
final def environment = env.environment

pipeline {
agent any
stages {
stage('设置构建信息') {
steps {
// 自定义设置构建历史显示的名称和描述信息
// 不同的部署方式设置构建历史显示的名称和描述信息方式不一样,根据自己的部署方式自行百度找到设置方法
script {

//设置buildName
wrap([$class: 'BuildUser']) {
buildName "#${BUILD_NUMBER} -- ${BUILD_USER}"
buildDescription " <span style='padding-left: 0px; font-size: 10px;background:yellow ;color:black;font-weight:bold'> 分支: ${branch} <br/> 环境: ${environment} <br/> 发布机器: ${servers} <br/> 发布人: ${BUILD_USER_ID} </span> "
}
}

}
}


stage('下载代码') {
steps {
echo "开始拉取代码,分支:${branch}"

checkout([$class: 'GitSCM', branches: [
[name: '*/${branch}']
], extensions: [], userRemoteConfigs: [
[credentialsId: '', url: 'https://git.xxxxxxxx.git']
]])

}
}

stage('编译打包') {
steps {
sh '${MAVEN_HOME}/bin/mvn clean package -U -D maven.test.skip=true -s ${MAVEN_HOME}/conf/my-setting.xml '

}
}


stage('部署项目') {

steps {

script {

def serverArr = servers.tokenize('---')
for (int i = 0; i < serverArr.size(); ++i) {
echo "拷贝jar包至服务器: ${serverArr[i]} "
sshPublisher(publishers: [sshPublisherDesc(configName: "${serverArr[i].trim()}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''#!/bin/bash
source /etc/profile
echo "开始启动项目"
/home/springboot-helloworld/startup.sh restart

echo "启动项目完成"''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/home/springboot-helloworld', remoteDirectorySDF: false, removePrefix: 'springboot-helloworld/target/', sourceFiles: 'springboot-helloworld/target/*.jar', usePty: true)], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])

}
}
}
}

}
}
说明:

1.设置构建信息:默认脚本即可,即左侧发布历史

2.下载代码: credentialsId和url替换为自己的即可

3. 编译打包: 默认即可,${MAVEN_HOME}需要jenkins全局配置,参考上一节内容

4. 部署项目: servers为构建参数里面的ip,以---分割,例如: 192.168.1.1 --- 192.168.1.2

remoteDirectory: 为项目所在机器的目录

sourceFiles: 为当前项目所在jenkins服务器中的jar包目录,全路径为: /var/lib/jenkins/流水线任务名称/springboot-helloworld

四、流水线语法
上面pipeline流程里面的 gitscm、sshPublisher都可以用jenkins提供的流水线语法来自动生成,在修改对应参数即可

 

 

五、保存完成发布

1. 发布时勾选对应ip即可

 

发布成功,最终效果图:

​​​​​​​

文章知识点与官方知识档案匹配,可进一步学习相关知识
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/u012638544/article/details/129993981

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/738820.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot实现登录demo

springboot,Jwt认证,登录实现简单的登录功能 实体类 定义实体类为User3类。 使用@Data:提供类的get,set,equals,hashCode,canEqual,toString方法; 使用@AllArgsConstructor:提供类的全参构造 使用@NoArgsConstructor:提供类的无参构造 类代码如下 @Data @AllArgsCon…

csv 导出工具

csv 导出工具一般大数据量导出 都会选择 csv 格式,就是存文本格式,相比excel 轻量级,同样数据量 csv 文件更小。工具类,分页导出 /*** Author: lyc* Date: 2024/07/05 16:27*/ @Slf4j public class CsvUtils {/*** 大数量导出** @param fileName 生成文件地址* @para…

虚拟ECU:纯电动汽车发展下的新选择

​人类文明的进步是一个不断自我否定、自我超越的过程。21世纪以来,随着科技进步和经济社会发展,能源和交通系统已从独立于自然环境的孤立系统,转变为与自然、技术、社会深度耦合的复杂系统。为实现可持续发展和应对气候变化,世界各国都在积极推进能源结构调整和技术创新,…

Python多线程-线程池ThreadPoolExecutor

1. 线程池 不是线程数量越多,程序的执行效率就越快。线程也是一个对象,是需要占用资源的,线程数量过多的话肯定会消耗过多的资源,同时线程间的上下文切换也是一笔不小的开销,所以有时候开辟过多的线程不但不会提高程序的执行效率,反而会适得其反使程序变慢,得不偿失。 为…

一个用来画拉氏图的简单Python脚本

这里我提供了一个用于画拉氏图的Python脚本源代码,供大家免费使用。虽然现在也有很多免费的平台和工具可以用,但很多都是黑箱,有需要的开发者可以直接在这个脚本基础上二次开发,定制自己的拉氏图绘制方法。技术背景 关于拉氏图的更多介绍,可以参考下这篇博客,这里简单引述…

如何实现超大场景的三维模型(3D)轻量化

三维工厂K3DMaker是一款三维模型浏览、分析、轻量化、顶层合并构建、几何校正、格式转换、调色裁切等功能专业处理软件。可以进行三维模型的网格简化、纹理压缩、层级优化等操作,从而实现三维模型轻量化。轻量化压缩比大,模型轻量化效率高,自动化处理能力高;采用多种算法对…

HP惠普笔记本使用问题和开启TPM

HP电脑使用 开机按F10,进入BIOS,如果是英文,切换到 Advanced,选择 Display Language,选择 简体中文然后返回上一页,切换到 安全引导配置 选择“启用传统支持和禁用安全引导”,然后F10 保存退出 开机+ESC是进入主菜单,可以从这里选择,进入引导 HP电脑在桌面使用快捷键…

Mysql之基本操作(库,表,用户管理)

库中有表,表中有数据 一、查看帮助信息点击查看代码 mysql> help create //help 后面跟上具体命令可以查看帮助二、查看支持的字符集点击查看代码 show charset; //查看支持的字符集 默认拉丁文字 latin1utf8 | UTF-8 Unicode //阉割版的 utf8mb4 | UTF-8 Unicode …

海康SDK报错Structure.getFieldOrder()

就是你调用的这个结构体以及其引用的其他结构体,可能没有getFieldOrder()的方法,你只要按照顺序把他填上去就好了。比如 public static class NET_DVR_TIME extends Structure {//校时结构参数public int dwYear; //年public int dwMonth; //月public int dwDa…

数字证书的应用场景有哪些?

在当今数字化飞速发展的时代,数字证书作为保障信息安全和身份认证的重要工具,发挥着越来越关键的作用。那么,数字证书究竟在哪些场景中得到了广泛的应用呢? 一、电子商务领域 在电子商务交易中,数字证书确保了交易双方的身份真实性和交易数据的完整性、保密性。例如,当消…

jenkins引用多个maven配置

普通项目都是用maven打包,有个特殊的项目是用到单独本地的maven库。 jenkins配置maven构建选项选择对应的maven名称即可本帖子也是纯手工制作,转载请标明出处-----------burukku(づ。◕ᴗᴗ◕。)づ

Java EE改名Jakarta EE,jakarta对程序的影响

Spring Framework作为Java领域最为流行的框架,有非常庞大的用户群体和项目应用,Java开源框架里绝对的TOP1。我们首先看看Java EE更名Jakarta对Spring Framework的影响。Spring Framework 6正式发布,携JDK 17&Jakarta EE开启新篇章,Spring Framework为何一跃将JDK的base…