Jenkins 是 CI/CD 领域的”老大哥”,目前企业级应用中最广泛、功能最强大的工具。
核心概念:Jenkinsfile(Pipeline as Code)
早期的 Jenkins 是网页上的配置(Freestyle Project),现在的最佳实践是 Pipeline as Code——在代码仓库根目录下放一个 Jenkinsfile 文本文件。
- 作用:告诉 Jenkins 直接读取这个文件,按照步骤执行。
- 与 CLI 的关系:Jenkinsfile 里面包裹着各种 CLI 命令。
一个典型的 Jenkinsfile 例子:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
sh 'npm install'
}
}
stage('Test') {
steps {
echo 'Testing...'
sh 'npm run test'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
sh './deploy.sh'
}
}
}
}架构:Master 与 Agent
- Master(Controller):负责管理界面、调度任务、监听 Git 仓库。
- Agent(Node):真正执行构建任务的机器。
优缺点
| 优点 | 缺点 |
|---|---|
| 插件极其丰富,几乎能对接所有工具 | ”插件地狱”:插件之间可能有依赖冲突 |
| 完全免费开源,无版权成本 | 界面复古,交互体验不够流畅 |
| 极高的灵活性,可任意定制流水线 | 配置门槛高,Groovy 语法学习曲线稍陡峭 |