Jenkins Pipeline(二)

1.Pipeline 变量

在 Jenkins 管道(Pipeline)中,变量是一种非常有用的功能,它们可以帮助你在构建过程中存储和传递数据。Jenkins 管道支持多种方式来定义和使用变量,包括环境变量 、脚本变量 以及全局变量。

1.2 脚本变量

在 pipeline 脚本中,你可以使用 Groovy 脚本来定义和操作变量。

复制代码
pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                script {
                    def myVar = 'anotherValue'
                    echo "My Variable: ${myVar}"
                }
            }
        }
    }
}

1.3 全局变量

Jenkins Pipeline 支持使用一些预定义的全局变量,例如 env 对象,它包含了环境变量和一些 Jenkins 特有的变量。

复制代码
pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                echo "Build Number: ${env.BUILD_NUMBER}"
                echo "Job Name: ${env.JOB_NAME}"
            }
        }
    }
}

1.3环境变量

环境变量可以在 Jenkins 的"系统管理"->"系统配置"中设置,也可以在 pipeline 脚本中使用 env 指令定义。

复制代码
pipeline {
    agent any
    environment {
        MY_VAR = 'someValue'
    }
    stages {
        stage('Example') {
            steps {
                echo "My Variable: ${env.MY_VAR}"
            }
        }
        stage('Build') {
            steps {
                script {
                    def result = sh(script: 'echo "Hello, Jenkins!"', returnStdout: true).trim()
                    env.MY_VARIABLE = result
                }
            }
        }
        stage('Test') {
            steps {
                sh 'echo $MY_VARIABLE'
            }
        }
    }
}

2. Pipeline 读取pom

2.1 使用readMavenPom

使用 readMavenPom需要安装Pipeline Maven Integration Plugin插件。

复制代码
pipeline {
    agent any
 
    stages {
        stage('Read POM') {
            steps {
                script {
                    // 读取 pom.xml 文件
                    def pom = readMavenPom file: 'pom.xml'
                    // 打印一些信息,例如项目版本和依赖项
                    echo "Project Version: ${pom.version}"
                    echo "Project Group: ${pom.groupId}"
                    echo "Project Artifact: ${pom.artifactId}"
                    echo "Dependencies:"
                    pom.dependencies.each { dep ->
                        echo "${dep.groupId}:${dep.artifactId}:${dep.version}"
                    }
                }
            }
        }
    }
}
相关推荐
风华同学2 分钟前
Docker镜像换源
运维·docker·容器
牢姐与蒯27 分钟前
Linux信号(二).信号产生续 && 信号保存
linux·运维·服务器·ubuntu
何中应29 分钟前
Jenkins 如何给设置公司 Logo
运维·ci/cd·jenkins
Szime33 分钟前
项目结束后,剩余的电子元器件怎么处理?——从“库存滞留”到“资产盘活”的更高解法
运维·嵌入式硬件
中杯可乐多加冰33 分钟前
解决方案:CEB 文件 Web 端在线预览方案,Linux部署ceb文件在线预览工具
linux·运维·前端·ceb
troy12837 分钟前
从 JIRA 到监控:一条完整的 DevOps 交付流水线实战
运维·devops·jira
何中应1 小时前
Jenkins 如何配置工作节点
运维·ci/cd·jenkins
谢亮_vipxieliang1 小时前
容器日志收集与管理:从 stdout 规范到 ELK/Loki 落地
运维·网络·人工智能·elk·docker·容器
YOLO数据集集合1 小时前
风力发电机检测数据集 | 风机检测 电缆塔识别 风电运维 无人机巡检 9122期
运维·人工智能·目标检测·目标跟踪·无人机·风力发电·电力巡检
天远API1 小时前
零信任架构实战:基于天远全网运营商三要素构建自动化骑手准入网关
运维·人工智能·架构·自动化