核心架构

pipeline {
    agent any // 1. 在哪里执行
 
    environment { // 2. 环境变量
        PROJECT_NAME = "my-app"
    }
 
    stages { // 3. 所有的阶段步骤
        stage('Checkout') { // 阶段一:拉取代码
            steps {
                echo 'Checking out code...'
            }
        }
        stage('Build') { // 阶段二:编译构建
            steps {
                echo 'Building...'
            }
        }
    }
 
    post { // 4. 构建后的收尾工作(如发送通知)
        always {
            echo 'I will always run!'
        }
    }
}
  • pipeline:声明式流水线的顶层标识,所有内容必须写在它内部。

  • agent:指定流水线或某个特定阶段在哪个 Jenkins 节点(Master、Agent 节点或 Docker 容器)上运行。

    • agent any:在任何可用的节点上运行。
    • agent none:顶层不指定,每个 stage 内部必须单独指定自己的 agent。
    • agent { label 'maven-node' }:在带有 maven-node 标签的节点上运行。
    • agent { docker { image 'node:16-alpine' } }:直接在指定的 Docker 容器内运行。
  • stages:包裹所有阶段。内部可以包含一个或多个 stage。

  • stage('阶段名称'):定义一个独立的逻辑步骤(如:Checkout、Build、Test、Deploy),在 Jenkins UI 上会可视化为一个个方块。

  • steps:包含在 stage 中,是真正执行具体命令的地方(如执行 Shell 脚本、调用插件)。

  • post:定义根据流水线(或某个 Stage)的执行结果来触发的后续操作。常见条件有:

    • always:无论成功还是失败,总是执行(如清理工作空间)。
    • success:仅在当前阶段或整条流水线成功时执行(如发送飞书/钉钉成功通知)。
    • failure:仅在失败时执行(如发送报警邮件)。