Jenkins job与Pipeline简单使用
目录一. 环境配置1.1 全局工具配置1.2 系统配置1.3 凭据配置二. 任务2.1 新建普通任务2.2 触发器2.2.1 定时构建2.2.2 轮询SCM2.2.3 触发远程构建2.3 Pipeline2.3.1 基本配置2.3.2 声明式Pipeline介绍2.3.3 声明式Pipeline示例一. 环境配置1.1 全局工具配置配置Maven与JDK1.2 系统配置1.3 凭据配置通过下面的命令生成一对密钥# 生成密钥ssh-keygen-ted25519-Cfengyehong123gmai.com# 确认生成的密钥对ls-l/home/apluser/.ssh/将公钥的文本内容添加到Github上Authentication Key认证密钥用于证明你是谁让你可以访问 GitHub。Signing Key签名密钥用于证明提交Commit确实是你创建的。将私钥的文本内容添加到Jenkins的凭据中并设置好凭据对应的ID二. 任务2.1 新建普通任务构建一个自由风格的软件项目可以在Build Steps中进行构建步骤如上图所示直接输出的话文件会被输出到JENKINS_HOME的workspace所对应的job中apluserubuntu22-1:~$ apluserubuntu22-1:~$ls-l~/jenkins_home/workspace/ drwxr-xr-x2apluser apluser4096Jul1814:37 first-job drwxr-xr-x3apluser apluser4096Jul2009:32 second-pipelinetmp drwxr-xr-x3apluser apluser4096Jul2010:26 third-pipeline2tmp drwxr-xr-x3apluser apluser4096Aug813:08 third-pipelinetmp apluserubuntu22-1:~$ apluserubuntu22-1:~$ls-l~/jenkins_home/workspace/first-job/ -rw-r--r--1apluser apluser25Jul1814:37 from-jenkins.txt apluserubuntu22-1:~$2.2 触发器Jenkins对于任务提供了不同种类的触发器2.2.1 定时构建使用corn表达式每隔一段时间触发构建2.2.2 轮询SCMSCM(Source Code Management的缩写)使用corn表达式每隔一段时间从Git仓库检查代码的变化当检测到代码发生变化之后就会自动触发构建任务。是比较常用和重要的触发器之一。2.2.3 触发远程构建通过Github或者GitLab的WebHook来触发构建当代码仓库有新的提交之后主动发送一个Http请求到Jenkins服务器的一个指定的url地址。Jenkins接收到请求之后就会触发对应的构建任务这种方式相比于轮询代码仓库, 更加的实时高效因为不需要等待下一个轮询的时间。从 Jenkins 较新的版本开始仅有Job Token通常并不足以通过认证。一般还需要用户名Username和API Token(不是登录密码)如下图所示发行一个API Token然后就可以通过类似于下面的curl命令来手动触发指定job的构建了不带请求参数的构建curl -X POST --user apluser:1166770f90a573b2f71631794ff6d5b731 http://172.22.125.148:9090/job/third-pipeline/build?tokenJob-Token-123带请求参数的构建curl -X POST --user apluser:1166770f90a573b2f71631794ff6d5b731 http://172.22.125.148:9090/job/third-pipeline/buildWithParameters?tokenJob-Token-123VERSION2.0DEBUGtrue2.3 PipelineJenkins提供的一种用于实现持续集成和持续交付的强大工具, 允许使用代码来定义整个软甲的交付过程。从代码的获取, 构建, 测试 到部署的各个环节都可以通过流水线脚本来实现自动化。流水线脚本通常使用Groovy语言编写这样就可以使用Groovy语言来实现复杂的构建逻辑。Pipeline脚本一共分为2种声明式Pipeline使用更加简洁和结构化的语法适合大多数常见的使用场景。脚本式Pipeline更加灵活适合需要实现复杂逻辑的场景。2.3.1 基本配置设置要拉取的项目的地址如果要通过参数化构建的话勾选参数化构建过程并设置要接收的参数名称使用脚本触发远程构建并设置好job对应的触发Token设置好仓库的地址分支以及构建用脚本的名称一般把构建文件存放到项目仓库中名称一般为JenKinsfile。JenKinsfile用来定义Jenkins流水线的构建, 测试和部署的过程使用Groovy语言编写可以让流水线的配置和代码放在一起这样就可以更好的进行版本控制和协作开发。2.3.2 声明式Pipeline介绍使用pipeline关键字来定义流水线中完成的各个阶段和步骤agent部分用来指定流水线运行的节点any表示可以在任何节点上运行。stages定义了流水线的各个阶段里面可以有多个stage每个stage表示流水线的一个阶段比如构建测试部署等等。每个stage里面又包含了具体的步骤→steps目前新版本的Jenkins更加推荐使用声明式Pipeline。2.3.3 声明式Pipeline示例接收到构建请求后获取url中的请求参数进行处理从Github的指定仓库中拉取代码后进行编译测试打包然后将打包之后得到的app.jar文件复制到目标服务器上运行// 定义全局变量 def config // 定义辅助函数 defloadConfig(){return[version:params.VERSION?.trim(), debug:params.DEBUG]}pipeline{agent any tools{mavenMaven-3.9.5jdkJDK-25}// url传参的参数 parameters{string(name:VERSION)booleanParam(name:DEBUG, defaultValue:false)}environment{MAVEN_OPTS-Xmx1024mAPP_NAMEspringboot3_demoAPP_VERSION0.0.1-SNAPSHOTDEPLOY_USERapluserDEPLOY_HOST172.22.125.148SSH_PORT22DEPLOY_DIR/home/apluser/projectREMOTE_SERVER_JAVA_HOME/home/apluser/JDK/jdk-21.0.2}options{// 保留最近10次的构建 buildDiscarder(logRotator(numToKeepStr:10))// 添加时间戳到控制台输出 timestamps()// 设置超时时间 timeout(time:30, unit:MINUTES)}stages{// 初期化 stage(Init){steps{script{configloadConfig()echoVERSION --${config.version}}}}stage(Checkout){steps{echoChecking out code...git(url:gitgithub.com:fengyehong123/Jenkins-Test.git, branch:main, credentialsId:Jenkins-Test)script{env.GIT_COMMIT_MSGsh(script:git log -1 --pretty%B, returnStdout:true).trim()env.GIT_COMMIT_AUTHORsh(script:git log -1 --pretty%an, returnStdout:true).trim()}echoCommit:${env.GIT_COMMIT_MSG}by${env.GIT_COMMIT_AUTHOR}}}stage(Build){steps{echoBuilding application...shchmodx mvnw ./mvnw clean package-DskipTests}post{success{echoBuild Completed Successfully!archiveArtifacts(artifacts:target/*.jar, fingerprint:true)}failure{echoBuild Failed!}}}stage(Test){steps{echoRunning tests...sh./mvnw test}post{always{junit**/target/surefire-reports/*.xml}success{echoAll tests passed!}failure{echoTests Failed!}}}stage(Deploy){steps{withCredentials([sshUserPrivateKey(credentialsId:Jenkins-Test, keyFileVariable:SSH_KEY)]){shscp-i$SSH_KEY-P${SSH_PORT}target/${APP_NAME}-${APP_VERSION}.jar${DEPLOY_USER}${DEPLOY_HOST}:${DEPLOY_DIR}/app.jarssh-i$SSH_KEY-p${SSH_PORT}${DEPLOY_USER}${DEPLOY_HOST} if [ -f ${DEPLOY_DIR}/app.pid ]; then kill \$(cat ${DEPLOY_DIR}/app.pid) 2/dev/null || true rm -f ${DEPLOY_DIR}/app.pid sleep 1 fi nohup ${REMOTE_SERVER_JAVA_HOME}/bin/java -jar ${DEPLOY_DIR}/app.jar ${DEPLOY_DIR}/app.log 21 echo \$! ${DEPLOY_DIR}/app.pid }}post{success{echoDeploy Successfully!}failure{echoDeploy Failed!}}}}post{always{echoCleaning up workspace...// deleteDir()是 Pipeline 自带的步骤, 会删除当前 Workspace 下的所有文件 deleteDir()}success{echoPipelie completed Successfully!// 发送邮件通知。。。}failure{echoPipeli Failed!}}}

相关新闻

Policy Plus完整指南:解锁Windows全版本组策略编辑的终极解决方案

Policy Plus完整指南:解锁Windows全版本组策略编辑的终极解决方案

Policy Plus完整指南:解锁Windows全版本组策略编辑的终极解决方案 【免费下载链接】PolicyPlus Local Group Policy Editor plus more, for all Windows editions 项目地址: https://gitcode.com/gh_mirrors/po/PolicyPlus 还在为Windows家庭版无法使用组策略…

2026/10/8 6:08:15 阅读更多 →
解锁Windows虚拟显示器:ParsecVDD专业解决方案深度解析

解锁Windows虚拟显示器:ParsecVDD专业解决方案深度解析

解锁Windows虚拟显示器:ParsecVDD专业解决方案深度解析 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 在当今数字工作环境中,虚拟显示器技术正成为游戏串…

2026/10/7 2:34:35 阅读更多 →
GTA5线上小助手:终极游戏体验优化工具

GTA5线上小助手:终极游戏体验优化工具

GTA5线上小助手:终极游戏体验优化工具 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools GTA5线上小助手是一款专为《侠盗猎车手5》线上模式玩家设计的免费辅助工具,旨在帮助玩家轻…

2026/10/7 21:33:50 阅读更多 →

最新新闻

识别虚假技术资源:Bishop深度学习2024真伪验证指南

识别虚假技术资源:Bishop深度学习2024真伪验证指南

简介:这是一本由机器学习权威Christopher M. Bishop与Hugh Bishop合著的深度学习前沿教材,面向高校研究生、AI研究人员及具备数学与编程基础的进阶学习者,系统构建从神经网络基础到Transformer、图神经网络等现代架构的理论框架。资源为单文件…

2026/10/11 10:57:28 阅读更多 →
如何将impeccable拆解为可执行的质量标准与检查清单

如何将impeccable拆解为可执行的质量标准与检查清单

1. 一个词撬动的思维革命:为什么"impeccable"值得深挖第一次看到"impeccable"这个词被单独拎出来当作项目标题,我的直觉是:这要么是个文字游戏,要么背后藏着某种极致追求。后来跟几个做产品和设计的朋友聊了一…

2026/10/11 10:57:28 阅读更多 →
CAPL脚本入门:掌握on start、on message与output三大核心函数

CAPL脚本入门:掌握on start、on message与output三大核心函数

1. 为什么第一个CAPL脚本值得认真对待很多人第一次接触CAPL,心态都是“先跑起来再说”。这个思路没错,但问题在于,如果第一个脚本只是照抄示例、点下编译、看到没有报错就结束,那基本等于没入门。后面一旦遇到真实项目里的报文周期…

2026/10/11 10:57:28 阅读更多 →
操作系统实验报告写作指南:进程调度、内存管理与并发同步实战

操作系统实验报告写作指南:进程调度、内存管理与并发同步实战

简介:这份资源是西安电子科技大学操作系统课程的上机实验报告,面向正在学习操作系统、需要完成进程与线程相关实验的高校学生及自学者。报告围绕Linux环境下C语言编程展开,完整覆盖进程建立、线程共享进程数据、信号通信、匿名管道与命名管道…

2026/10/11 10:57:28 阅读更多 →
无DOM测试与happy-dom:bloub如何验证导出缺陷的测试体系

无DOM测试与happy-dom:bloub如何验证导出缺陷的测试体系

前端图形学 【免费下载链接】bloub SVG recreation of the x.ai bot avatar. One shape morphing through 14 states, measured off the reference video frame by frame. 项目地址: https://gitcode.com/gh_mirrors/bl/bloub 点击查看 免费下载 bloub 是一个用 SV…

2026/10/11 10:57:28 阅读更多 →
小学组C++算法赛初赛备考指南:从真题拆解到避坑技巧

小学组C++算法赛初赛备考指南:从真题拆解到避坑技巧

简介:这份资源是2024年信息素养大赛C算法创意实践挑战赛小学组初赛的真题解析文档,面向小学阶段对编程有兴趣、已具备一定C基础的学习者,也适合指导教师作为教学参考。内容覆盖单选题与判断题两种题型,涉及变量定义、运算符、布尔…

2026/10/11 10:56:27 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →