Jenkins(2006)
关键词:自动化、CI/CD
Jenkins 本质:一台跑脚本的服务器,自动化流水线工具(CI/CD)。
perl
git push
↓
自动编译
↓
自动测试
↓
自动构建镜像
↓
自动部署核心思想:CI/CD(持续集成、持续部署)。
配置一个 pipeline,将代码从提交到部署的整个过程自动化。
groovy
stage("build"){
sh "npm build"
}
stage("deploy"){
sh "docker-compose up -d"
}Jenkins 就是:
- 监听 Git
- 自动执行脚本
- 记录日志
TODO List
- [ ] pipeline
- [ ] 自动部署
一、Jenkins 是什么?
Jenkins 是一个:
开源自动化服务器(Automation Server),用于实现软件开发流程的自动化。
核心定位:
| 领域 | 作用 |
|---|---|
| CI(持续集成) | 自动构建、测试 |
| CD(持续交付/部署) | 自动发布 |
| DevOps | 打通开发与运维 |
一句话总结:
Jenkins = 自动化流水线调度引擎
二、Jenkins 发展历程
- 2004 年:Hudson(Sun 公司)
- 2011 年:改名 Jenkins
- 现在:CI/CD 事实标准工具之一
为什么流行?
- 开源
- 插件生态极其丰富(2000+)
- 灵活可扩展
三、核心思想:CI/CD
3.1 持续集成(CI)
流程:
代码提交 → 自动拉取 → 编译 → 测试 → 构建产物目标:
- 尽早发现问题
- 保证主干稳定
3.2 持续交付(CD)
构建产物 → 自动部署 → 自动验证 → 上线四、Jenkins 架构原理
4.1 主从架构(Master / Agent)
Jenkins Master
↓ 调度任务
Jenkins Agent1
Jenkins Agent2职责:
| 角色 | 作用 |
|---|---|
| Master | 管理 UI、调度任务 |
| Agent | 实际执行构建 |
避免:
Master 被构建任务压垮
4.2 Job 与 Pipeline
Job(传统任务)
- Freestyle Job
- 配置型
Pipeline(推荐)
- 代码即流程
- Jenkinsfile
五、Pipeline 核心机制
5.1 Jenkinsfile 示例
groovy
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'npm install'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
stage('Deploy') {
steps {
sh 'docker build -t app .'
}
}
}
}特点:
- 声明式
- 可版本控制
- 可复现
5.2 Pipeline 执行流程
Checkout → Build → Test → Package → Deploy六、插件生态体系
常用插件:
| 插件 | 功能 |
|---|---|
| Git Plugin | 拉代码 |
| Docker Plugin | 构建镜像 |
| Kubernetes Plugin | K8S Agent |
| Blue Ocean | 可视化 |
| Credentials Plugin | 密钥管理 |
插件 = Jenkins 的灵魂
七、Jenkins 与 Docker
7.1 Docker 构建
groovy
stage('Docker Build') {
steps {
sh 'docker build -t myapp:1.0 .'
}
}7.2 Docker 作为 Agent
每个 Job 一个容器优点:
- 环境隔离
- 可复现
八、Jenkins 与 Kubernetes
8.1 动态 Agent
- 每次构建启动 Pod
- 构建完成销毁
优点:
- 弹性伸缩
- 节省资源
九、安全体系
9.1 用户与权限
- RBAC 权限控制
- 项目级权限
9.2 凭证管理
| 类型 | 示例 |
|---|---|
| 密码 | SSH key |
| Token | GitHub Token |
| Secret | API Key |
禁止:
明文写在 Jenkinsfile
十、企业级高可用
10.1 高可用架构
LB → Jenkins Master → 多 Agent10.2 数据备份
- 配置备份
- Job 备份
- 插件备份
十一、性能与稳定性
优化点:
- Agent 分离
- 构建缓存
- 并行 Stage
- 日志清理
十二、日志与监控
- 构建日志
- 构建历史
- Prometheus 监控
- Grafana 面板
十三、Jenkins 在 DevOps 中的位置
Git → Jenkins → Docker → K8S → 监控Jenkins 是自动化中枢
十四、最佳实践规范
14.1 Jenkinsfile 规范
- 不写死路径
- 不写死密码
- 参数化构建
14.2 流水线设计原则
- 小步快跑
- 可回滚
- 自动测试
十五、常见问题
| 问题 | 原因 |
|---|---|
| 构建慢 | Agent 不足 |
| 插件冲突 | 版本不兼容 |
| 内存爆 | 日志太多 |
十六、运维负责人级别能力模型
技术能力
- CI/CD 架构设计
- Jenkins 集群化
- K8S 集成
- 安全体系
- 自动回滚
管理能力
- 流程规范
- 发布制度
- 权限控制
- 事故复盘
十七、Jenkins 的局限与替代
缺点:
- 依赖插件
- UI 老旧
- 运维成本高
替代方案:
| 工具 | 场景 |
|---|---|
| GitLab CI | 一体化 |
| GitHub Actions | 云原生 |
| ArgoCD | GitOps |
十八、总结
Jenkins 不是工具,而是:
软件工程自动化的大脑
它连接:
- 人
- 代码
- 环境
- 服务器
实现:
自动化、标准化、可追溯
十九、学习路线图
第一阶段:基础
- 安装 Jenkins
- 创建 Job
- 拉 Git
第二阶段:Pipeline
- Jenkinsfile
- Docker 构建
第三阶段:平台化
- K8S
- 安全
- 高可用
