官方文档:https://www.jenkins.io/doc/book/pipeline/jenkinsfile/
Pipeline Groovy 是 Jenkins Pipeline 的脚本语言,是基于 Groovy 的一种 DSL(领域特定语言)。简单说,它用来定义和管理 Jenkins 中的 CI/CD 流程。我们从 Groovy 和 Pipeline 的基础谈起,带你快速入门。
一、Groovy 基础
Groovy 是一种动态脚本语言,基于 Java,但比 Java 更简洁、更灵活。它可以直接调用 Java 类库,语法友好,比如:
• 变量定义:def x = 10(不需要指定类型)。
• 列表:def list = [1, 2, 3]。
• 闭包:list.each { println it }(用 {} 定义可传递的代码块)。
Jenkins 的 Pipeline DSL 是在 Groovy 上扩展的,用来表达 CI/CD 流程。
二、Pipeline Groovy 的两种语法
1. Declarative Pipeline(声明式)
• 结构化、易读,推荐给新手。
• 适用于大部分常规场景。
• 示例:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
}
}
2. Scripted Pipeline(脚本式)
• 灵活,基于 Groovy 脚本。
• 更适合复杂逻辑。
• 示例:
node {
stage('Build') {
echo 'Building...'
}
stage('Test') {
echo 'Testing...'
}
}
三、Pipeline 核心概念
1. Agent
• 指定在哪个 Jenkins 节点上运行。可以是 any(任意可用节点),或特定的 Docker 容器。
• 示例:
agent {
docker {
image 'python:3.9'
}
}
2. Stages 和 Steps
• stages:流水线的阶段,如 Build、Test。
• steps:具体的操作,如执行脚本、运行命令。
• 示例:
stage('Deploy') {
steps {
sh 'docker run my-app'
}
}
3. Post Actions
• 定义任务执行后的动作。
• 示例:
post {
success {
echo 'Build succeeded!'
}
failure {
echo 'Build failed!'
}
}
4. 环境变量
• 通过 environment 块或 env 访问。
• 示例:
environment {
APP_ENV = 'production'
}
steps {
echo "Deploying to ${env.APP_ENV}"
}
四、Pipeline Groovy 的优势
• 自动化 CI/CD:通过定义阶段(如 Build、Test、Deploy),轻松实现自动化。
• 灵活性:通过 Groovy 的扩展能力,可以实现复杂的逻辑控制。
• 可复用性:使用 Shared Libraries 抽取公共逻辑。
五、如何学习和调试
- 学习
• 多看 Jenkins 官方文档。
• 从简单的 Declarative Pipeline 开始。 - 调试
• 用 echo 打印关键变量和状态。
• 本地写好 Groovy 脚本后,逐步集成到 Jenkins。
你可以先试着搭个简单的流水线,熟悉语法后再加上 Docker 和 Kubernetes 的集成!有问题随时来找我!