ARTICLE · 1149732
【Jenkins安装教程】从下载到跑通第一个任务,谁把代码弄坏了15分钟内就知道
装好就能用 · Jenkins
AI 编程助手做项目级对接方案工具链
Jenkins 安装教程:下载到跑通第一个任务
谁把代码弄坏了,十五分钟内就知道
哪一次提交、谁提交的、哪条测试没过,都摆在页面上
代码昨天还好好的,今天一跑就不对。翻提交记录,这两天五六个人提交过,到底是哪一次弄坏的,只能一个一个试。装上 Jenkins 以后,每次有人提交代码,它自己拉下来跑一遍测试;从哪一次提交开始不对、是谁提交的、哪条测试没过,页面上都写着。下载一个文件、敲一条命令就能跑起来。
第一步
把 Jenkins 跑起来
Jenkins 是一个 Java 程序,下载下来就是一个 jenkins.war 文件,54MB,不用安装。它对 Java 版本有要求:我们用的 2.580.1 这一版要 Java 21 或 25。先在命令行敲 java -version 看一眼自己的是多少。
这里有个容易弄混的地方:这个 Java 21 只是 Jenkins 自己用的,和你的项目用哪个 JDK 没关系。我们这台电脑默认的是 JDK 17,项目也用 17;Jenkins 用另外放的一份 Java 21 启动,它跑测试时调的 Maven 用的还是 JDK 17。所以电脑上没有 Java 21 的,另外下一个解压版放着就行,不用动环境变量。
到 get.jenkins.io/war-stable/ 下载 jenkins.war,
放进一个空目录,在这个目录里敲:
java -jar jenkins.war --httpPort=8080 --httpListenAddress=127.0.0.1
Java 21 是另外放的,就把开头的 java 换成它的完整路径:
"D:\tools\jdk-21\bin\java.exe" -jar jenkins.war --httpPort=8080 --httpListenAddress=127.0.0.1
看到这样算过:
窗口里出现一行 Jenkins is fully up and running;
浏览器打开 http://127.0.0.1:8080 ,看到「解锁 Jenkins」

图 1 启动后浏览器里看到的解锁页,红框是存着初始密码的那个文件的路径
命令里的 --httpListenAddress=127.0.0.1 是只让本机访问,先别对外开。解锁页上写着一个文件路径,用记事本打开那个文件,把里面那串字符贴进「管理员密码」,点「继续」。下一页选「安装推荐的插件」,它会联网下载,页面上列着 20 个,连同它们依赖的一共装了 92 个。
我们这台下了十多分钟还没装完,中途 Jenkins 被关过一次,再打开看到的是下面这页「恢复安装」:红色的几个没装上。点右下角的「恢复」,它把剩下的补装完,不用从头来。

图 2 装插件中途被关过,再打开是这一页:绿的装好了,红的没装上,点右下角「恢复」接着装
接着是「创建第一个管理员用户」,填用户名和密码;「实例配置」那页的地址保持默认,点「保存并完成」,再点「开始使用Jenkins」,就进了首页。界面是中英文混着的,有的菜单是中文,有的是英文,下面都按页面上实际显示的写。
第二步
让 AI 看看你的项目该填什么
在 Jenkins 里建任务,有两样东西是跟着项目走的:跑测试的命令,和测试报告生成在哪。拿不准的话,在项目目录里问 AI(我们用的是 Claude Code):
这个项目要放到 Jenkins 上,每次有人提交代码就自动跑一遍测试。
你看一下项目,告诉我三件事:
1. Jenkins 的构建步骤里该填哪条命令;
2. 测试报告会生成在哪个路径,Jenkins 里收测试报告那一栏该填什么;
3. 跑这条命令,Jenkins 那台机器上要先装好什么。
只回答,不要改任何文件
看到这样算过:
它给出一条命令、一个报告路径、一份要装的东西的清单,
并且说明没有改任何文件
我们的演示项目是一个 Maven 项目,里面有 4 个测试。它的回答是:命令填 mvn -B clean test,其中 -B 让日志里不出现下载进度条,clean 先删掉上一次的结果,免得旧的测试报告混进这一次;报告生成在 target/surefire-reports 下面,Jenkins 里填 target/surefire-reports/*.xml;机器上要有 JDK 17 以上和 Maven,还要能连上 Maven 仓库,因为第一次跑要下载依赖。别的类型的项目照样问,把它给的命令和路径填进下一步。
第三步
建一个任务,填四处
首页左上角点「新建Item」,输入任务名,类型选 Freestyle project,点「确定」。

图 3 任务类型选红框里的 Freestyle project
进到配置页,从上往下填四处,别的都不动:
源码管理
选 Git,Repository URL 填你的仓库地址
Branches to build 填 */main(主分支叫 master 的填 */master)
Triggers
勾上 Poll SCM,日程表填 H/15 * * * *
Build Steps
点「增加构建步骤」,选 Execute Windows batch command
命令填 mvn -B clean test
构建后操作
点「增加构建后操作步骤」,选 Publish JUnit test result report
测试报告(XML)填 target/surefire-reports/*.xml
最后点 Save
看到这样算过:
日程表填完,下面出现一行小字
Would last have run at …; would next run at …
写着它下一次去检查的时间

图 4 配置页里要填的四处,从上到下:仓库地址和分支、多久检查一次、跑什么命令、测试报告在哪
H/15 * * * * 的意思是每 15 分钟去仓库看一眼有没有新提交,有才跑,没有就什么都不做。仓库要账号密码的,在 Credentials 那一行点「添加」填进去。Jenkins 是调这台机器上的 git 命令去拉代码的,所以这台机器要装了 Git。Jenkins 装在 Linux 或 macOS 上的,构建步骤选 Execute shell,命令一样。
保存后回到任务页,先手动跑一次,确认配置没问题:点左边的 Build Now。过一会儿左下角 Builds 里出现 #1,前面是绿色的勾;点进去,Tests 那一行写着「没有失败」。

图 5 手动跑的第一次:绿色的勾,Tests 那一行写着「没有失败」
第四步
有人把代码改坏了,看它怎么告诉你
我们另开一个目录扮演同事 lisi:把判断会员等级的两个 if 调换了顺序,提交说明写的是「调整会员等级的判断顺序」,10:27 推到仓库。然后什么都不做,等着。
Jenkins 配置页上写的下一次检查时间是 10:39。到点它自己去仓库看了一眼,发现有新提交,拉下来跑测试,任务页的 Builds 里多出一个 #2,前面是红色的叉。点进 #2,要的三样东西在同一页上:

图 6 它自己跑出来的 #2。第一个红框:哪条测试没过;第二个红框:这次构建带进来的是谁的哪次提交
最上面那行 Started by an SCM change,说明这一次不是谁手动点的,是它发现仓库有变化自己跑的。第一个红框是哪条测试没过:OrderServiceTest 里的 over1000IsGold。第二个红框是这次构建带进来的提交:lisi 在 10:27 提交的「调整会员等级的判断顺序」。从提交到页面变红不到 12 分钟,中间没有人点过任何东西。
点那条测试的名字,能看到它为什么没过:

图 7 点进那条测试看到的原因(红框):想要 gold,实际是 silver
expected: <gold> but was: <silver>,测试想要的是 gold,实际得到的是 silver。回头看那次提交就明白了:两个判断的顺序一换,超过 1000 的金额先被「超过 500」那一条接走,到不了 gold 那一条。这种改动光看代码不容易看出问题,一跑测试就露出来了。
现在这样,要你自己打开页面才看得到红色。想让它一变红就主动发邮件,要在 Manage Jenkins 里配邮件服务器,这篇先不展开。
能往仓库提交代码的人,就能让这台机器跑命令
Jenkins 做的事就是把仓库里的东西拉下来执行。有人在项目里加一段恶意的构建脚本,它也照跑。所以先只让本机访问(启动命令里的 127.0.0.1),不要用管理员身份启动它,管理员密码别用弱的。要给全组用的时候,放到一台专门的机器上,别放在谁的开发机里。
关掉那个命令行窗口,Jenkins 就停了。任务和构建记录都在用户目录下的 .jenkins 文件夹里,下次用同一条命令启动,东西都还在。想让它一直开着、开机自己启动,用官网的 Windows 安装包把它装成服务。卡住了,按现象找:
一启动就退出,提示 older than the minimum required version (Java 21):Java 版本不够。我们拿 Java 17 试过,就是这句。按第一步说的,另外放一份 Java 21,用完整路径启动。
启动报端口被占用:8080 被别的程序用了,把命令里的 --httpPort=8080 换成别的数字,浏览器里的地址跟着换。
任务失败,控制台输出里写着 mvn 不是内部或外部命令:Jenkins 找不到 Maven。把构建步骤里的 mvn 换成它的完整路径,比如 D:\apache-maven-3.9.9\bin\mvn.cmd。
到点了没有新的构建:任务页左边点 Git Polling Log,里面是它上一次去仓库检查的记录,能看到它查了没有、查到了什么。
代码放在 SVN 上:点右上角的齿轮进 Manage Jenkins,在「插件管理」的 Available plugins 里搜 Subversion 装上,源码管理那一栏就会多出 Subversion 一项,在里面填仓库地址。
一个任务跑顺了,别的项目照这四处再建一个就行,一台 Jenkins 可以同时盯很多个仓库。
本篇做完你手里有什么
[ ] 浏览器打开 127.0.0.1:8080 能进 Jenkins 首页
[ ] 问过 AI,拿到了跑测试的命令和报告路径
[ ] 建了一个任务,四处都填了
[ ] 手动跑了一次,#1 是绿的
[ ] 提交一次改动,它到点自己跑了
[ ] 知道去哪看:谁提交的、哪条测试没过
装好之后它一直在旁边盯着仓库。代码是谁弄坏的、从哪一次开始坏的,不用再靠猜。
装好就能用 · Jenkins