当前位置: 首页 > news >正文

Jenkins的Pipline中有哪些区块,以及其它知识点整理

目录

■模板

■Jenkins的Pipline中有哪些区块

1. pipeline(顶层区块)

2. agent(执行节点)

3. stages(阶段集合)

4. stage(单个阶段)

5. steps(具体步骤)

6. post(后置处理)

7. environment(环境变量)

8. parameters(参数化构建)

9. options(Pipeline 配置选项)

10. triggers(触发条件)

11. tools(工具路径配置)

12. input(用户交互)

13. when(条件执行)

14. parallel(并行执行)

■其它 === 1.cleanWs是jenkins的内置命令吗,如何使用

1. 安装 Workspace Cleanup Plugin

2. cleanWs 的核心用法

基本语法

常用场景示例

(1) 简单清理(清空所有文件)

(2) 排除指定文件/目录

(3) 仅在构建失败时清理

3. 在 Pipeline 中的使用

声明式 Pipeline

脚本式 Pipeline

4. cleanWs vs deleteDir()

5. 注意事项

总结

■其它 === 2.如何查看jenkins中已经定义的节点

1. 通过 Web 界面查看

(1) 进入节点管理页面

(2) 查看节点列表

(3) 查看节点详情

2. 通过命令行查看(需管理员权限)

(1) 使用 Jenkins CLI

(2) 使用 Groovy 脚本

3. 通过 API 查看

关键信息说明

■其它 === 3.jenkins pipeline 中的post是什么

post 的核心特性

post 的条件关键字

post 的语法示例(声明式 Pipeline)

post 的常见用途

注意事项

脚本式 Pipeline 的替代方案

总结


===

■模板

pipeline {agent anyoptions { ... }parameters { ... }environment { ... }triggers { ... }tools { ... }stages {stage('Stage 1') {when { ... }agent { ... }environment { ... }steps { ... }}stage('Stage 2') {parallel { ... }}}post { ... }
}

===

■Jenkins的Pipline中有哪些区块

在 Jenkins 声明式 Pipeline 中,核心结构由多个区块(Section)组成,每个区块负责不同的功能。以下是完整的区块分类及其作用:

1. pipeline(顶层区块)

  • 作用:定义整个 Pipeline 的入口,所有其他区块必须包含在 pipeline 内。

  • 示例

    pipeline {// 其他区块在此定义...
    }


2. agent(执行节点)

  • 作用:指定 Pipeline 在哪个 Jenkins 节点(或容器)上运行。

  • 常见选项

    • any: 任意可用节点。

    • none: 不全局指定节点(需在每个 stage 中单独定义)。

    • label 'linux': 在标签为 linux 的节点上运行。

    • docker: 在 Docker 容器中运行(需指定镜像)。

  • 示例

    agent {docker {image 'maven:3.8.4' // 使用 Maven 容器args '-v /tmp:/tmp' // 挂载目录}
    }


3. stages(阶段集合)

  • 作用:包裹所有具体的阶段(stage),是 Pipeline 的核心逻辑部分。

  • 示例

    stages {stage('Build') { ... }stage('Test') { ... }stage('Deploy') { ... }
    }


4. stage(单个阶段)

  • 作用:定义 Pipeline 中的一个逻辑步骤(如构建、测试、部署)。

  • 必须包含:至少一个 steps 或 parallel 区块。

  • 示例

    stage('Build') {steps {sh 'mvn clean package'}
    }


5. steps(具体步骤)

  • 作用:在 stage 中定义具体的操作(如执行 Shell 命令、调用插件)。

  • 常用命令

    • sh: 执行 Linux Shell 命令。

    • bat: 执行 Windows Batch 命令。

    • script: 嵌入 Groovy 脚本(用于复杂逻辑)。

  • 示例

    steps {sh 'echo "Hello Jenkins!"'script {def version = '1.0.0'echo "Building version: ${version}"}
    }


6. post(后置处理)

  • 作用:根据 Pipeline 的执行结果(成功、失败等)触发后置操作。

  • 条件块

    • always: 始终执行。

    • success: 仅成功时执行。

    • failure: 仅失败时执行。

    • aborted: 被中止时执行。

  • 示例

    post {always {cleanWs() // 清理工作区}failure {slackSend message: '构建失败!'}
    }


7. environment(环境变量)

  • 作用:定义全局或阶段级的环境变量(如密钥、路径)。

  • 示例

    environment {// 直接定义变量APP_VERSION = '1.0.0'// 引用 Jenkins 凭据AWS_ACCESS_KEY = credentials('aws-access-key')
    }


8. parameters(参数化构建)

  • 作用:定义用户输入的参数(如字符串、选项、文件)。

  • 常见类型

    • string: 字符串参数。

    • choice: 下拉选项。

    • booleanParam: 布尔值。

    • file: 文件上传。

  • 示例

    parameters {string(name: 'DEPLOY_ENV', defaultValue: 'dev', description: '部署环境')choice(name: 'REGION', choices: ['us-east', 'eu-central'], description: 'AWS 区域')
    }


9. options(Pipeline 配置选项)

  • 作用:配置 Pipeline 的全局行为(如超时时间、重试策略)。

  • 常用选项

    • timeout(time: 30, unit: 'MINUTES'): 设置超时时间。

    • retry(3): 失败时重试 3 次。

    • disableConcurrentBuilds(): 禁止并行执行。

  • 示例

    options {timeout(time: 1, unit: 'HOURS')disableConcurrentBuilds()
    }


10. triggers(触发条件)

  • 作用:定义 Pipeline 的触发方式(如定时触发、SCM 变更触发)。

  • 常见触发器

    • cron('H */4 * * *'): 定时触发(每 4 小时)。

    • pollSCM('H */5 * * *'): 轮询 SCM 变更。

    • upstream(upstreamProjects: 'job1,job2'): 上游任务触发。

  • 示例

    triggers {cron('H 2 * * *') // 每天凌晨 2 点触发
    }


11. tools(工具路径配置)

  • 作用:指定构建工具(如 JDK、Maven)的路径(需提前在 Jenkins 全局配置中定义)。

  • 示例

    tools {maven 'Maven-3.8.4' // 使用全局配置的 Maven 工具jdk 'JDK-11'
    }


12. input(用户交互)

  • 作用:暂停 Pipeline 并等待用户输入(如确认部署)。

  • 示例

    stage('Deploy to Prod') {steps {input(message: '确认部署到生产环境?', ok: '确认')}
    }


13. when(条件执行)

  • 作用:控制某个 stage 是否执行(基于条件判断)。

  • 常见条件

    • branch 'master': 仅在 master 分支执行。

    • expression { return params.DEPLOY_ENV == 'prod' }: 根据参数值判断。

  • 示例

    stage('Deploy') {when {branch 'master'expression { params.DEPLOY_ENV == 'prod' }}steps { ... }
    }


14. parallel(并行执行)

  • 作用:并行运行多个 stage(加速构建)。

  • 示例

    stage('Test') {parallel {stage('Unit Test') { steps { sh 'mvn test' } }stage('Integration Test') { steps { sh 'mvn verify' } }}
    }

■其它 === 1.cleanWs是jenkins的内置命令吗,如何使用

cleanWs 不是 Jenkins 的内置命令,它是由 Workspace Cleanup Plugin(工作区清理插件)提供的功能。该插件需要单独安装,但因其强大的灵活性(如按条件清理、排除文件等),在 Jenkins 实践中被广泛使用。

1. 安装 Workspace Cleanup Plugin

  • 步骤
    进入 Jenkins 控制台 → Manage Jenkins → Plugins → Available plugins → 搜索 Workspace Cleanup → 安装并重启 Jenkins。


2. cleanWs 的核心用法

基本语法
cleanWs(deleteDirs: Boolean,        // 是否删除子目录(默认 true)patterns: [[pattern: String, type: String]], // 排除或包含的文件模式cleanWhenSuccess: Boolean,  // 构建成功时清理(默认 true)cleanWhenAborted: Boolean,  // 构建中止时清理(默认 true)cleanWhenFailure: Boolean,  // 构建失败时清理(默认 true)cleanWhenUnstable: Boolean // 构建不稳定时清理(默认 true)
)

常用场景示例
(1) 简单清理(清空所有文件)
steps {cleanWs() // 清空工作区所有内容
}
(2) 排除指定文件/目录
steps {cleanWs(patterns: [[pattern: 'logs/**', type: 'EXCLUDE'], // 保留 logs 目录[pattern: '*.config', type: 'EXCLUDE'] // 保留所有 .config 文件])
}
(3) 仅在构建失败时清理
steps {cleanWs(cleanWhenSuccess: false,  // 成功时不清理cleanWhenFailure: true    // 仅失败时清理)
}

3. 在 Pipeline 中的使用

声明式 Pipeline

groovy

复制

下载

pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean package'}}}post {always {cleanWs(patterns: [[pattern: 'target/*.jar', type: 'EXCLUDE'] // 保留构建产物])}}
}
脚本式 Pipeline
node {try {stage('Build') {sh 'mvn clean package'}} finally {cleanWs() // 无论结果如何,清理工作区}
}
 

4. cleanWs vs deleteDir()

特性cleanWsdeleteDir()
来源Workspace Cleanup 插件Jenkins 内置
灵活性支持按条件清理、排除文件只能删除整个目录
适用场景需要精细控制清理内容的场景快速清空目录
依赖需安装插件无需插件

5. 注意事项

  1. 路径问题
    cleanWs 默认清理当前工作目录(WORKSPACE),确保操作目录正确。

  2. 权限问题
    Jenkins 进程需要有工作目录的读写权限。

  3. 文件占用
    若文件被其他进程锁定(如正在运行的 JAR 文件),可能导致清理失败。

  4. 插件兼容性
    确保插件版本与 Jenkins 兼容(插件文档会注明支持的版本)。


总结

  • 需要灵活清理工作区时:优先使用 cleanWs,通过 patterns 参数控制保留或删除的文件。

  • 简单快速清理时:直接使用内置的 deleteDir()

  • 关键场景:建议在 post { always { ... } } 中清理工作区,避免残留文件占用磁盘空间。

■其它 === 2.如何查看jenkins中已经定义的节点

1. 通过 Web 界面查看

(1) 进入节点管理页面
  • 打开 Jenkins 主页 → 点击左侧菜单的 Manage Jenkins(管理 Jenkins)。

  • 在管理页面中找到 Nodes(节点)或 Manage Nodes and Clouds(管理节点和云),点击进入。

(2) 查看节点列表
  • 页面会列出所有已定义的节点,包括:

    • Built-In Node(主节点,即 Jenkins 控制器)。

    • 其他代理节点(如 linux-agentwindows-agent 等)。

(3) 查看节点详情
  • 点击节点名称(如 linux-agent)→ 进入节点详情页,可查看:

    • 节点状态(在线/离线)。

    • 标签(Labels)。

    • 工作目录路径(Remote root directory)。

    • 启动方式(Launch method)。

    • 系统信息(如操作系统、Java 版本)。

2. 通过命令行查看(需管理员权限)

(1) 使用 Jenkins CLI

Jenkins 提供了命令行工具(CLI),可通过以下命令列出所有节点:

java -jar jenkins-cli.jar -s http://your-jenkins-url list-nodes
(2) 使用 Groovy 脚本

在 Jenkins 的 Script Console(脚本控制台)中执行以下脚本:

Jenkins.instance.nodes.each { node ->println "节点名称: ${node.displayName}"println "标签: ${node.labelString}"println "工作目录: ${node.remoteFS}"println "状态: ${node.toComputer().online ? '在线' : '离线'}"println "------"
}

3. 通过 API 查看

调用 Jenkins REST API 获取节点列表(需权限):

curl -u username:api-token http://your-jenkins-url/computer/api/json

返回的 JSON 数据中会包含所有节点的详细信息。


关键信息说明

字段说明
节点名称节点的唯一标识符(如 linux-agent)。
标签节点的分类标记(如 linuxdocker),用于任务调度。
工作目录节点的工作路径(如 /var/jenkins/workspace)。
执行器数量节点可同时运行的任务数(默认为 1)。
状态节点是否在线(Online/Offline)。

■其它 === 3.jenkins pipeline 中的post是什么

post 的核心特性

  1. 条件触发:通过预定义的条件关键字(如 alwayssuccessfailure),指定不同执行结果下需要运行的步骤。

  2. 执行顺序post 中的操作会在所有 stages 执行完毕后运行。

  3. 灵活性:可以同时定义多个条件块,每个块内的步骤独立执行。


post 的条件关键字

以下是常用的条件类型:

条件关键字触发条件
always无论 Pipeline 结果如何,始终执行(最常用,例如清理工作目录)
success仅当 Pipeline 全部阶段成功完成时执行(例如发送成功通知)
failure仅当 Pipeline 任何阶段失败时执行(例如发送失败报警或记录日志)
aborted当 Pipeline 被手动中止时执行(例如通知构建被取消)
unstable当 Pipeline 标记为 unstable 时执行(例如测试通过但覆盖率不足)
changed当 Pipeline 状态与上一次不同时执行(例如从失败恢复为成功时通知)

post 的语法示例(声明式 Pipeline)

pipeline {agent anystages {// 主要构建阶段...stage('Build') {steps {sh 'mvn clean package'}}}// 后置操作post {// 无论结果如何,始终清理工作目录always {deleteDir()}// 构建成功时发送通知success {slackSend channel: '#builds', message: '构建成功!'}// 构建失败时发送邮件failure {mail to: 'team@example.com', subject: '构建失败', body: '请检查日志!'}// 构建被中止时记录日志aborted {echo 'Pipeline 被用户中止'}}
}

post 的常见用途

  1. 清理工作目录

    post {always {deleteDir()  // 清空工作区}
    }

  2. 发送通知

    post {failure {slackSend channel: '#alerts', message: '构建失败: ${BUILD_URL}'}
    }

  3. 归档构建产物

    post {success {archiveArtifacts artifacts: 'target/*.jar', fingerprint: true}
    }

  4. 生成测试报告

    post {always {junit 'target/surefire-reports/*.xml'  // 记录单元测试结果}
    }


注意事项

  1. 仅适用于声明式 Pipeline
    post 是声明式 Pipeline 的语法特性,脚本式 Pipeline 需通过 try-catch-finally 实现类似逻辑。

  2. 条件块的执行顺序
    Jenkins 会按 post 中定义的顺序执行条件块,但每个条件块是否执行仍取决于其触发条件。

  3. 灵活组合条件
    可以通过嵌套逻辑实现更复杂的条件判断(例如:仅在失败且不是中止时触发)。


脚本式 Pipeline 的替代方案

脚本式 Pipeline 中没有原生 post 块,但可通过 try-catch-finally 模拟类似行为:

node {try {stage('Build') {// 构建步骤...}} catch (err) {// 失败处理echo "构建失败: ${err}"} finally {// 始终执行的清理操作(类似 post { always })deleteDir()}
}

总结

post 是 Jenkins Pipeline 中管理后置操作的核心机制,能帮助你在不同构建结果下自动执行关键任务(如清理、通知、归档)。掌握它的用法可以让你的 Pipeline 更健壮、更易维护!

==

相关文章:

  • 计算机网络学习(五)——TCP
  • C++ --- string
  • 全局异常处理器
  • 开篇:MCP理论理解和学习
  • 基于Python的自动化视频编辑脚本设计,能够处理视频剪辑、添加字幕、文本动画、音效和图形等功能
  • 24. 日志的基本实现方式
  • 第十天的尝试
  • Gateway全局过滤器:接口耗时统计与黑白名单配置
  • Linux环境变量与地址空间
  • maxkey单点登录系统
  • LeetCode-贪心-买卖股票的最佳时机
  • SOC-ESP32S3部分:11-任务创建
  • 基于亚博K210开发板——lvgl 图形化实验
  • ubuntu ollama /Dify/Docker部署大模型
  • 刷题 | 牛客 - js中等题-下(更ing)30/54知识点解答
  • 多态的总结
  • 【C语言】习题练手套餐 2
  • 在WPF程序中设置背景图片
  • 深度解析NL2SQL:从语义理解到工程实践的全链路探索
  • 向量数据库Milvus03-高级功能与性能调优
  • 建站之星如何建网站/自己怎么优化网站排名
  • 经典重庆论坛/百度seo关键词排名优化软件
  • 营业执照如何办理/抚州seo外包
  • 织梦网站流动广告代码/seo优化专员编辑
  • 什么网站可以卖自己做的东西/app推广方案怎么写
  • 长沙做网站一般要多少钱/查询网站收录