Skip to content

🧩 Jenkins 简介

Jenkins 是一个开源的自动化服务器,主要用于 持续集成(CI)持续部署/交付(CD)。它能够自动化构建、测试、打包、部署等整个软件开发生命周期中的各种流程。


🌟 核心特点

特性描述
✅ 插件系统提供 1800+ 插件支持 Git、Docker、Kubernetes、Slack、Maven 等
✅ 可扩展性支持 Pipeline(流水线)脚本构建复杂流程,适配各种开发场景
✅ 多语言支持可用于构建 Java、Node.js、Python、Go、Rust、.NET 等项目
✅ 分布式构建支持使用多台机器作为构建节点(Agent),加快并行构建
✅ 易于集成能与 GitHub/GitLab、JIRA、SonarQube、Harbor、K8s 等工具深度集成
✅ Web 管理界面提供可视化的 Job 配置和执行监控界面

🔧 工作原理

  1. 开发者提交代码 到 Git 仓库(如 GitHub)
  2. Jenkins 通过 Webhook 或定时任务 触发构建
  3. 拉取代码后执行 Pipeline 流水线
  4. 自动完成:构建 → 测试 → 代码质量扫描 → 制品打包 → 部署
  5. 构建结果可视化、发送通知(如邮件、Slack)

📦 什么是 Jenkins Pipeline?

Jenkins Pipeline 是 Jenkins 提供的一种 以代码形式定义构建流程 的方式。

  • 使用 Groovy DSL 脚本
  • 支持条件判断、并发构建、步骤封装、参数化构建等
  • 支持 Declarative(声明式)Scripted(脚本式) 两种语法

示例:

groovy
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo '正在构建...'
                sh 'mvn clean package'
            }
        }
        stage('Test') {
            steps {
                echo '正在测试...'
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                echo '部署到服务器'
                sh 'scp target/*.jar user@host:/deploy/'
            }
        }
    }
}

📚 使用场景举例

  • 自动构建和测试新提交的代码
  • 每晚定时构建 nightly build
  • 自动部署到测试、预发布、生产环境
  • 与 Kubernetes 结合实现云原生 CI/CD
  • 分支/版本控制下的多环境部署

🚀 Jenkins vs 其他 CI/CD 工具

工具优势劣势
Jenkins社区成熟、插件丰富、自定义性强、适配老系统UI 较旧、初始配置较繁琐
GitHub ActionsGitHub 原生、简单易上手、无需安装插件少、自定义灵活性较低
GitLab CIGitLab 原生集成、语法简洁、易于上手与 GitLab 绑定强
CircleCI云服务为主、自动扩容、快速构建免费额度有限、定制性略弱

🛠 常用术语

名称含义
JobJenkins 中的构建任务
Node/Agent执行构建任务的节点
Pipeline定义构建流程的脚本(流水线)
Stage构建流程中的一个阶段
Step一个阶段中的单个操作步骤
Parameter用户手动输入或选择的构建参数