Jenkins 的核心作用一句话总结:
“把『代码 → 构建 → 测试 → 部署』整个流程全部自动化,让软件随时可发布、可追溯、可回滚。”
- 它到底帮你做了什么?
| 传统做法 | Jenkins 自动化后 | |---|---| | 开发手动打包 jar/war | 代码 push → Jenkins 自动mvn clean package| | 手动跑单元测试 | 构建完自动跑 JUnit、Sonar 静态扫描 | | 手动把 jar 拷到服务器 | 构建产物自动上传到制品库(Nexus / Artifactory) | | 手动 SSH 部署 | 自动触发 Ansible / Kubectl / Docker 部署脚本 | | 出问题不知道谁改的 | 邮件/钉钉/飞书实时报警 + 构建历史可追溯 |
- 典型流水线(Pipeline as Code)
groovy
pipeline {
agent any
stages {
stage('拉代码') {
steps { git 'https://github.com/acme/app.git' }
}
stage('编译') {
steps { sh 'mvn clean package -DskipTests' }
}
stage('单测') {
steps { sh 'mvn test' }
}
stage('镜像') {
steps {
script {
def img = docker.build("acme/app:${BUILD_NUMBER}")
img.push()
}
}
}
stage('部署') {
steps { sh 'kubectl set image deploy/app app=acme/app:${BUILD_NUMBER}' }
}
}
post {
failure { dingTalk "构建失败:${BUILD_URL}" }
}
}- 日常 3 大玩法
- CI(持续集成):每次 PR 就自动编译+单测,保证主分支永远是绿色。
- CD(持续交付 / 部署):合并到主干后,自动部署到测试/预发/生产。
- 任务调度:定时跑脚本、备份、清理临时文件,充当「分布式 crontab」。
- 插件生态
1500+ 插件一键安装:
• 源码:Git、SVN、GitLab、GitHub
• 构建:Maven、Gradle、npm、Go
• 测试:JUnit、Cucumber、SonarQube、Allure
• 部署:SSH、Ansible、Docker、Kubernetes、Helm
• 通知:Email、钉钉、Slack、飞书
一句话记忆
Jenkins 就是「24 小时不下班的运维同学」,让“人肉发布”成为历史。