3、Jenkins入门:Jenkins架构与安装(Docker方式)、Jenkins全局配置、创建第一个自由风格任务

3.1 Jenkins到底是个什么玩意儿?

说实话,我刚接触Jenkins那会儿,觉得它就是个「自动点外卖」的工具。

你想想看,每次手动编译、测试、部署,就像你每天自己买菜、洗菜、炒菜。累不累?Jenkins就是那个帮你把整个流程自动化跑起来的调度员。

它的核心架构其实不复杂:一个Master节点负责调度,多个Agent节点负责干活。我习惯把Master比作「项目经理」,Agent就是「一线工人」。项目经理下发任务,工人去执行,就这么简单。

核心架构三要素:

  • Master(主节点):管理任务、调度资源、展示结果
  • Agent(代理节点):实际执行构建任务的机器
  • Executor(执行器):Agent上的工作线程,一个Agent可以有多个Executor

我在项目中遇到过一种情况:团队把Master和Agent混用,结果Master负载过高,整个Jenkins卡死。嗯,这里要注意——生产环境一定要把Master和Agent分开

3.2 Docker方式安装Jenkins

为什么我推荐用Docker装?说白了就两个字:省心。你不需要折腾Java环境、依赖包、系统服务。一条命令搞定。

3.2.1 拉取镜像并启动

# 拉取官方LTS版本(长期支持版,我建议用这个)
docker pull jenkins/jenkins:lts

# 创建数据卷目录(防止容器删除后数据丢失)
mkdir -p /data/jenkins_home
chown -R 1000:1000 /data/jenkins_home

# 启动容器
docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /data/jenkins_home:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkins/jenkins:lts

小提示:挂载 /var/run/docker.sock 是为了让Jenkins容器内部能调用宿主机的Docker。这样你可以在Jenkins里直接跑Docker命令,做镜像构建。我刚开始没挂这个,后来发现构建Docker镜像还得单独装Docker客户端,麻烦得很。

3.2.2 初始化配置

启动后,访问 http://你的IP:8080。你会看到一个解锁页面,需要输入初始密码。

# 查看初始密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

复制密码粘贴进去,下一步就是选择插件安装方式。我建议选「安装推荐的插件」,省事。当然,如果你网络不好,也可以跳过,后面手动装。

注意:安装插件时如果卡住很久,大概率是网络问题。我曾经在客户内网环境装Jenkins,插件下载超时了三次。解决办法:配置国内镜像源,或者提前下载好插件包离线安装。

3.3 Jenkins全局配置

安装完只是第一步。真正让Jenkins好用,得把全局配置调顺了。我每次搭新环境,必配以下三个地方:

3.3.1 系统配置(Manage Jenkins → Configure System)

配置项 推荐值 说明
Jenkins URL http://你的IP:8080 确保Agent能访问到Master
系统管理员邮件地址 devops@你的公司.com 用于发送构建通知
全局属性 → 环境变量 PATH+EXTRA 添加自定义工具路径

3.3.2 全局工具配置(Manage Jenkins → Global Tool Configuration)

这里配置JDK、Maven、Git等工具。我习惯用「自动安装」方式,Jenkins会帮你下载管理。

# 配置JDK(示例)
Name: JDK11
Install automatically: 勾选
版本: jdk-11.0.20

# 配置Maven
Name: Maven3
Install automatically: 勾选
版本: 3.9.4

避坑指南:我曾经直接填了服务器上已安装的JDK路径,结果换机器后路径变了,所有任务报错。后来我统一用自动安装,再也没出过这种问题。

3.3.3 插件管理(Manage Jenkins → Plugin Manager)

必装插件清单:

  • Git Plugin:拉取代码的基础
  • Pipeline Plugin:流水线任务必备
  • Blue Ocean:可视化界面,看着舒服
  • Docker Pipeline:在流水线里操作Docker
  • Email Extension Plugin:邮件通知增强版

3.4 创建第一个自由风格任务

好了,配置搞定,咱们来跑个真正的任务。自由风格任务(Freestyle project)是Jenkins最基础的任务类型,适合新手入门。

3.4.1 新建任务

  1. 点击「新建任务」
  2. 输入任务名称,比如「my-first-job」
  3. 选择「自由风格项目」
  4. 点击「确定」

3.4.2 配置任务

进入配置页面后,咱们一步步来:

第一步:源码管理

选择「Git」,填入你的仓库地址。如果没有仓库,可以用我的测试仓库:

Repository URL: https://github.com/jenkins-docs/simple-java-maven-app.git
Credentials: 留空(公开仓库不需要认证)
Branches to build: */main

第二步:构建触发器

这里先不配,后面章节会详细讲。现在咱们手动触发。

第三步:构建环境

勾选「Delete workspace before build starts」——每次构建前清理工作空间,避免旧文件干扰。我吃过这个亏,有一次旧代码没清掉,新代码编译报错,排查了半天才发现是缓存问题。

第四步:构建

点击「增加构建步骤」→「调用顶层Maven目标」:

Maven Version: Maven3(就是刚才全局配置里配的那个)
Goals: clean package

第五步:保存

点击「保存」,回到任务页面。

3.4.3 运行任务

点击「立即构建」,你会看到左侧出现一个构建历史。点进去,再点「控制台输出」,就能看到实时日志了。

Started by user admin
Building in workspace /var/jenkins_home/workspace/my-first-job
Cloning repository https://github.com/jenkins-docs/simple-java-maven-app.git
...
[INFO] BUILD SUCCESS
...
Finished: SUCCESS

看到「BUILD SUCCESS」了吗? 恭喜你,第一个Jenkins任务跑通了!

3.5 本章小结

咱们今天干了三件事:

  • 搞清楚了Jenkins的Master/Agent架构
  • 用Docker一分钟装好了Jenkins
  • 配了全局工具,跑通了第一个自由风格任务

说实话,自由风格任务虽然简单,但它是理解Jenkins工作流的基础。下一章咱们会升级到Pipeline流水线,那才是真正体现DevOps能力的地方。

嗯,今天就到这儿。记得把刚才那个任务多跑几次,看看控制台输出的每一行日志,理解Jenkins到底帮你做了什么。

课后练习:试着在构建步骤里加一个「Execute shell」,执行 echo "Hello Jenkins",看看输出效果。这个小实验能帮你理解构建步骤的执行顺序。