CI流水线

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 语法学习曲线稍陡峭