news 2026/10/8 10:23:19

Jenkins 2.580 免向导搭建 CI 流水线:测试归档、上下游触发与参数化部署实测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jenkins 2.580 免向导搭建 CI 流水线:测试归档、上下游触发与参数化部署实测

Jenkins 2.580 免向导搭建 CI 流水线:测试归档、上下游触发与参数化部署实测

一、为什么用 war 而不是 MSI

Jenkins 官方 Windows MSI 会装成系统服务并写注册表,实验环境一动就走形。java -jar jenkins.war最干净:绿、可移植、删目录即卸载。国内下载走清华 TUNA 镜像,直连速度可观。

启动命令只多一个参数——跳过首次配置向导:

java-Djenkins.install.runSetupWizard=false-jarjenkins.war--httpPort=18080

日志出现Jenkins is fully up and running即就绪。免向导模式默认无插件、无安全,正好跑通"最小可用 CI":

不跳向导的话要手工去服务器翻 initialAdminPassword 文件,装插件还会卡更新源——实验环境一律建议免向导。

二、freestyle 作业:真实测试 + 制品归档

被测对象是一个 10 行的计算器模块,配 6 个 unittest 用例(含除零异常路径)。CI 入口run_ci.py跑测试并产出 JUnit XML。作业用 config.xml 直接建:

<project><builders><hudson.tasks.BatchFile><command>python run_ci.py</command></hudson.tasks.BatchFile></builders><publishers><hudson.tasks.ArtifactArchiver><artifacts>report/*</artifacts></hudson.tasks.ArtifactArchiver></publishers></project>

触发构建实测:Ran 6 tests — OK,制品区归档出 junit.xml 与 build-info.txt,#1 耗时 4.7s、#2 耗时 9.3s,均 SUCCESS。

一个真实的坑:war 启动的裸 Jenkins 不带任何插件,配置里写 JUnitResultArchiver 能保存成功但发布步骤静默不执行(testReport 页 404)。想装 junit 插件会发现它拖出 prism-api、plugin-util-api、workflow-step-api 一串依赖,第二层还有 structs、commons-text-api……裸机党直接用制品归档承载测试报告,别恋战。

三、流水线编排:上游 SUCCESS 自动触发下游

不装 Pipeline 插件也能编排——freestyle 自带 BuildTrigger 发布器,阈值设 SUCCESS:

<hudson.tasks.BuildTrigger><childProjects>demo-app-deploy</childProjects></hudson.tasks.BuildTrigger>

实测构建 #2 一跑完,console 出现Triggering a new build of demo-app-deploy,下游自动开跑并 SUCCESS。测试不过关时部署根本不会发生——这就是 CI/CD 的最小闭环。

四、参数化与定时:一次定义,多环境发布

deploy 作业声明字符串参数。必须包在 ParametersDefinitionProperty 里——直接裸写 StringParameterDefinition 会被静默忽略,buildWithParameters 直接 400(实测踩过):

<hudson.model.ParametersDefinitionProperty><parameterDefinitions><hudson.model.StringParameterDefinition><name>ENV_NAME</name><defaultValue>staging</defaultValue></hudson.model.StringParameterDefinition></parameterDefinitions></hudson.model.ParametersDefinitionProperty>

然后一行 REST 切换部署目标:POST /job/demo-app-deploy/buildWithParameters?ENV_NAME=production,实测 console 输出Deploying build to production:

定时构建在作业配置里填 cron(5 4 * * *= 每天 04:05),Jenkins 会在配置页显示下次触发时间,帮你确认表达式没写错。

能力配置方式实测结果
自由风格作业config.xml POST createItem6/6 测试过,制品归档
上下游编排BuildTrigger 发布器下游自动触发 SUCCESS
参数化ParametersDefinitionPropertyproduction 环境一键部署
定时触发TimerTrigger cron配置回读一致
REST 自动化crumb + cookie全程零 UI

五、REST 全自动化:整条流水线零 UI

Jenkins 的 CSRF 防护要求每个写请求带 crumb,三件套固定用法:

curl-cck.txt http://127.0.0.1:18080/crumbIssuer/api/jsoncurl-bck.txt-H"Jenkins-Crumb: <val>"-XPOST...curlhttp://127.0.0.1:18080/job/X/lastCompletedBuild/api/json?tree=number,result

本次实验从建作业、改配置、触发构建到读结果全部走 API,没有点过一次页面按钮。把这三条命令包进脚本,就是团队内部的迷你发布平台。

配套完整工程

Jenkins持续集成实战五步全流程(freestyle到参数化构建部署,附实测工程)

Jenkins持续集成实战五步全流程(freestyle到参数化构建部署,附实测工程)

被测工程、作业 config.xml 模板、jenkins.war、一键启动脚本与全量实测留档都在工程包里。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 10:19:53

GEE一键生成Sentinel-2高精度NDVI年均值并导出

这篇笔记是GEE学习笔记的第29篇。前面我写过Sentinel-2的单期NDVI、写过水体指数提取&#xff0c;这次要解决一个特别高频的需求&#xff1a;把一整年的Sentinel-2影像处理成一张高精度NDVI年均值数据&#xff0c;并直接导出下载。所谓“高精度”&#xff0c;在这里指的是使用L…

作者头像 李华
网站建设 2026/10/8 10:19:48

GEO营销+到店优惠+会员裂变:实体店客流循环实战

实体门店这几年最头疼的事&#xff0c;说到底就三个字&#xff1a;人从哪来。线上流量贵、传单没人看、老客留不住&#xff0c;开业前三天的热闹一过&#xff0c;店里基本就回到冷清状态。我接手过不少本地生活项目的运营&#xff0c;也帮几家门店盘过客源结构&#xff0c;最后…

作者头像 李华
网站建设 2026/10/8 10:19:18

DeepSeek Harness省Token实战:五个官方开关全面拆解

说实话&#xff0c;第一次在终端里跑起 DeepSeek Harness&#xff0c;感觉是真的香&#xff1a;代码补全、上下文理解、多文件改动&#xff0c;一套流程下来省了好多来回切窗口的时间。但连续高强度用了一周之后&#xff0c;账单一出来&#xff0c;人有点麻了——Token 消耗比预…

作者头像 李华
网站建设 2026/10/8 10:18:10

相机拉流全解析:RTSP、RTMP、GB28181协议选型与实战

1. 从“相机拉流的”这个标题说起&#xff1a;它到底在问什么第一次看到“相机拉流的”这个标题&#xff0c;我愣了几秒。这明显是一个被截断的短语&#xff0c;像是搜索框里打到一半就按了回车&#xff0c;或者聊天时话说到一半被打断。但恰恰是这种残缺的标题&#xff0c;最能…

作者头像 李华
网站建设 2026/10/8 10:17:14

ConcurrentQueue源码级解析:无锁队列原理、生产实践与选型对比

很多团队是把 ConcurrentQueue<T> 当成“线程安全的 Queue”来用的&#xff1a;多线程往里塞任务&#xff0c;后台线程不断取出来处理&#xff0c;看起来天经地义。但等我真的在线上项目里接二连三踩过几个坑之后&#xff0c;回过头再看这个类&#xff0c;才发现它远不…

作者头像 李华