首页 > 其他分享 >Jenkins从0-1搭建--基于pipeline构建发布简单项目

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

时间:2024-07-05 16:19:39浏览次数:20  
标签:pipeline false springboot -- helloworld 构建 流水线 Jenkins

目录

一、新建流水线任务

二、参数化构建过程

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

标签:pipeline,false,springboot,--,helloworld,构建,流水线,Jenkins
From: https://www.cnblogs.com/cheyunhua/p/18286059

相关文章

  • 鸿蒙OpenHarmony南向/北向快速开发教程-迅为RK3568开发板
    鸿蒙OpenHarmony南向/北向快速开发教程-迅为RK3568开发板 大家期待已久的迅为RK3568开发板终于迎来了鸿蒙4.1系统的强势支持!想知道如何实现快速开发学习吗?跟着我们一起来探索吧!    迅为RK3568开发板:     想象一下,你手中的RK3568开发板能够轻松运行鸿蒙4.1......
  • Mysql之基本操作(库,表,用户管理)
    库中有表,表中有数据一、查看帮助信息点击查看代码mysql>helpcreate//help后面跟上具体命令可以查看帮助二、查看支持的字符集点击查看代码showcharset;//查看支持的字符集默认拉丁文字latin1utf8|UTF-8Unicode//阉割版的utf8mb4|UTF-8Unicod......
  • 海康SDK报错Structure.getFieldOrder()
    就是你调用的这个结构体以及其引用的其他结构体,可能没有getFieldOrder()的方法,你只要按照顺序把他填上去就好了。比如publicstaticclassNET_DVR_TIMEextendsStructure{//校时结构参数publicintdwYear;//年publicintdwMonth;//月......
  • 从一个双非本学渣到自学前端上岸,我都做了些什么
    前言大家好,我是山里看瓜,一个有三年开发经验的前端搬砖仔。本期想跟大家分享一下我的一些经历以及我是怎么从一个编程课次次都差点挂科的学渣一步步通过自学到找到还算理想的前端开发工作的。希望有类似经历或想法的同学可以从中看到或明白一些什么。当然我不是个多优秀的人,只能......
  • FAILED: cpu_adam.so /usr/bin/ld: cannot find -lcurand collect2: error: ld retur
    FAILED:cpu_adam.so c++cpu_adam.ocpu_adam_impl.o-shared-lcurand-L/home/deeplp/anaconda3/envs/minicpm/lib/python3.10/site-packages/torch/lib-lc10-ltorch_cpu-ltorch-ltorch_python-ocpu_adam.so/usr/bin/ld:cannotfind-lcurandcollect2:error:ld......
  • 一个用来画拉氏图的简单Python脚本
    技术背景关于拉氏图的更多介绍,可以参考下这篇博客,这里简单引述一部分内容:Ramachandranplot(拉氏图)是由G.N.Ramachandran等人于1963年开发的,用来描述蛋白质结构中氨基酸残基二面角\(\psi\)和\(\phi\)是否在合理区域的一种可视化方法。同时也可以反映出该蛋白质的构象是否合理......
  • 如何实现超大场景的三维模型(3D)轻量化
    如何实现超大场景的三维模型(3D)轻量化   超大场景的三维模型在虚拟现实、游戏开发和可视化应用等领域中具有广泛的应用潜力。然而,由于其庞大的数据量和复杂的几何结构,给数据存储、传输和渲染带来了巨大挑战。为了解决这个问题,实现超大场景三维模型的轻量化成为关键的技术需......
  • HP惠普笔记本使用问题和开启TPM
    HP电脑使用开机按F10,进入BIOS,如果是英文,切换到 Advanced,选择 Display Language,选择 简体中文然后返回上一页,切换到 安全引导配置  选择“启用传统支持和禁用安全引导”,然后F10 保存退出开机+ESC是进入主菜单,可以从这里选择,进入引导HP电脑在桌面使用快捷键FN+ESC......
  • 虚拟ECU:纯电动汽车发展下的新选择
    ​人类文明的进步是一个不断自我否定、自我超越的过程。21世纪以来,随着科技进步和经济社会发展,能源和交通系统已从独立于自然环境的孤立系统,转变为与自然、技术、社会深度耦合的复杂系统。为实现可持续发展和应对气候变化,世界各国都在积极推进能源结构调整和技术创新,以确保在未来......
  • Python多线程-线程池ThreadPoolExecutor
    1.线程池不是线程数量越多,程序的执行效率就越快。线程也是一个对象,是需要占用资源的,线程数量过多的话肯定会消耗过多的资源,同时线程间的上下文切换也是一笔不小的开销,所以有时候开辟过多的线程不但不会提高程序的执行效率,反而会适得其反使程序变慢,得不偿失。为了防止无尽的线程......