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 新建任务
- 点击「新建任务」
- 输入任务名称,比如「my-first-job」
- 选择「自由风格项目」
- 点击「确定」
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",看看输出效果。这个小实验能帮你理解构建步骤的执行顺序。