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

Jenkins Pipeline 中的主要组件解释

主要组件说明:

  1. agent:
  • 指定执行环境
  • 支持Docker、Kubernetes等
  1. parameters:
  • 定义构建参数
  • 多种参数类型
  1. environment:
  • 定义环境变量
  • 支持凭证管理
  1. options:
  • 配置构建选项
  • 控制构建行为
  1. triggers:
  • 定义触发条件
  • 支持多种触发方式
  1. tools:
  • 配置构建工具
  • 自动安装和配置
  1. stages:
  • 定义构建阶段
  • 支持并行和矩阵
  1. post:
  • 后置处理
  • 根据构建结果执行
  1. script:
  • 执行Groovy代码
  • 更灵活的控制
  1. 共享库:
  • 代码复用
  • 标准化流程
    pipeline {// 1. agent(执行环境)agent {// 指定运行环境label 'master'  // 在master节点运行// 或docker {  // 使用Dockerimage 'maven:3.8.1-jdk-8'args '-v /root/.m2:/root/.m2'}// 或kubernetes {  // 使用Kubernetesyaml '''apiVersion: v1kind: Podspec:containers:- name: mavenimage: maven:3.8.1-jdk-8'''}}// 2. parameters(参数)parameters {// 字符串参数string(name: 'PARAM_STRING', defaultValue: 'default', description: '字符串参数')// 选择参数choice(name: 'PARAM_CHOICE', choices: ['dev', 'test', 'prod'], description: '环境选择')// 布尔参数booleanParam(name: 'PARAM_BOOLEAN', defaultValue: true, description: '是否执行')// 密码参数password(name: 'PARAM_PASSWORD', defaultValue: '', description: '密码参数')// 文件参数file(name: 'PARAM_FILE', description: '文件参数')// 文本参数text(name: 'PARAM_TEXT', defaultValue: '', description: '文本参数')}// 3. environment(环境变量)environment {// 定义环境变量JAVA_HOME = '/usr/java/default'MVN_HOME = '/usr/local/maven'// 使用凭证DOCKER_CREDENTIAL = credentials('docker-hub-credential')// 动态变量BUILD_TIME = "${new Date().format('yyyy-MM-dd HH:mm:ss')}"}// 4. options(构建选项)options {// 构建超时时间timeout(time: 1, unit: 'HOURS')// 禁止并行构建disableConcurrentBuilds()// 跳过默认检出skipDefaultCheckout()// 构建历史保留数buildDiscarder(logRotator(numToKeepStr: '10'))// 时间戳timestamps()}// 5. triggers(触发器)triggers {// 定时触发cron('0 0 * * *')  // 每天0点// 轮询SCMpollSCM('H/15 * * * *')  // 每15分钟// Webhook触发githubPush()}// 6. tools(工具)tools {// Mavenmaven 'Maven 3.8.1'// JDKjdk 'JDK 8'// Gradlegradle 'Gradle 7.0'}// 7. stages(阶段)stages {// 单个阶段stage('Checkout') {// 阶段特定的agentagent {docker {image 'alpine'}}// 阶段特定的环境变量environment {STAGE_VAR = 'value'}// 阶段条件when {branch 'master'environment name: 'DEPLOY_TO', value: 'prod'}// 阶段步骤steps {checkout scm}}// 并行阶段stage('Parallel Stage') {parallel {stage('Branch A') {steps {echo "A"}}stage('Branch B') {steps {echo "B"}}}}// 矩阵阶段stage('Matrix') {matrix {axes {axis {name 'PLATFORM'values 'linux', 'windows', 'mac'}axis {name 'BROWSER'values 'firefox', 'chrome', 'safari'}}stages {stage('Test') {steps {echo "Testing on ${PLATFORM} with ${BROWSER}"}}}}}}// 8. post(后置处理)post {// 总是执行always {echo '构建完成'// 清理工作空间cleanWs()}// 成功时执行success {echo '构建成功'// 发送邮件emailext body: '构建成功',subject: "Pipeline: ${currentBuild.fullDisplayName}",to: 'team@example.com'}// 失败时执行failure {echo '构建失败'// 发送失败通知slackSend channel: '#builds',color: 'danger',message: "构建失败: ${env.JOB_NAME} ${env.BUILD_NUMBER}"}// 不稳定时执行unstable {echo '构建不稳定'}// 改变状态时执行changed {echo '构建状态改变'}}
    }// 9. 声明式pipeline中的script块
    script {// 可以执行任意Groovy代码def version = sh(script: 'git describe --tags', returnStdout: true).trim()// 条件判断if (env.BRANCH_NAME == 'master') {echo '这是master分支'}// 循环for (int i = 0; i < 3; i++) {echo "循环 ${i}"}// 异常处理try {sh 'some-command'} catch (Exception e) {echo "命令执行失败: ${e.message}"}
    }// 10. 共享库
    @Library('my-shared-library') _
    // 使用共享库中的函数
    def myLib = new org.example.MyLib()
    myLib.doSomething()
    

      

http://www.sczhlp.com/news/1047/

相关文章:

  • 在powershell窗口执行npm install无法运行
  • SVC总结与思考
  • 国产高精度芯片LHA8961,代替AD7690
  • 【IEEE出版、往届均完成EI检索】第六届计算机视觉与数据挖掘国际学术会议(ICCVDM 2025)
  • 平衡树的一些记录和带插入区间K小值
  • 基于块匹配的全景图像拼接
  • 【ACM独立出版、EI快速稳定检索】第二届虚拟现实、图像和信号处理国际学术会议(VRISP 2025)
  • BMP图像原理与应用
  • 亚马逊AI模型评估产品评论中的实用建议有效性
  • DNS协议
  • Python数据结构(列表、字典、元祖)
  • C#调用邮箱应用发送带附件的邮件
  • Air780EGH定位开发速成指南:源代码公开,即学即用
  • Splunk Enterprise 10.0.0 发布,新增功能简介
  • Studio 3T 2025.13 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-24- 操作Select下拉选择框 - 上篇(详细教程) - 北京
  • delphi7 中文企业版编译minipad2
  • 【PCIE725-1 】基于 PCIe x16 总线架构的 JFM9VU9P FPGA 高性能数据预处理平台(100%国产化)
  • Prometheus源码专题【左扬精讲】—— 监控系统 Prometheus 3.4.0 源码解析:Discovery 动态服务发现机制
  • 在运维工作中,Docker的运行状态有哪些?
  • BZOJ 4641 题解
  • APP UI自动化元素定位高频问题
  • 通义灵码保姆级教程:从数据读取、清洗、结合大模型分析、可视化、生成报告全链路
  • 在运维工作中,docker file 用什么构建容器的?
  • 一维光栅结构严格耦合波分析(RCWA)求解器
  • rust学习笔记之基础:类型系统和类型转换
  • 在运维工作中,Docker的基本命令有哪些?
  • 云原生周刊:2025年的服务网格
  • 故障处理:troubleshooting Cluster Time Synchronization Service
  • 在运维工作中,镜像启动一个容器的命令的什么?