Skip to content

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 PluginK8S 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
TokenGitHub Token
SecretAPI Key

禁止:

明文写在 Jenkinsfile


十、企业级高可用

10.1 高可用架构

LB → Jenkins Master → 多 Agent

10.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云原生
ArgoCDGitOps

十八、总结

Jenkins 不是工具,而是:

软件工程自动化的大脑

它连接:

  • 代码
  • 环境
  • 服务器

实现:

自动化、标准化、可追溯


十九、学习路线图

第一阶段:基础

  • 安装 Jenkins
  • 创建 Job
  • 拉 Git

第二阶段:Pipeline

  • Jenkinsfile
  • Docker 构建

第三阶段:平台化

  • K8S
  • 安全
  • 高可用