You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins流水线:如何正确存储并读取Shell命令返回的变量

问题分析与解决

你的流水线存在两个关键问题,导致版本变量无法正确输出:

1. Shell命令未捕获输出

Jenkins Pipeline中,sh步骤默认不会返回命令的标准输出,必须添加returnStdout: true参数,才能把命令执行结果赋值给Groovy变量。你当前的写法仅执行了Shell命令,并没有把输出存到version变量中。

2. 单引号字符串不解析变量

Groovy里,单引号包裹的字符串是字面量字符串,不会解析其中的${version}变量,只会原样输出。必须用双引号包裹才能触发变量解析。


修改后的完整流水线代码

pipeline {
    agent any
    parameters {
        string(description: '输入要构建的Git分支', name: 'branch', defaultValue: 'master', trim: true)
        choice(choices: 'Build\nPromote', description: '选择构建类型', name: 'runtype')
    }
    
    stages {
        stage('Checkout') {
            steps {
                script {
                    // 简化冗余的if-else逻辑
                    def targetBranch = params.branch ?: 'master'
                    echo "构建分支/标签: ${targetBranch}"
                    checkout([
                        $class: 'GitSCM', 
                        branch: targetBranch, 
                        extensions: [], 
                        userRemoteConfigs: [[credentialsId: 'Aiman_Sarosh_cred', url: 'https://mygit.server/myproject.git']]
                    ])
                    echo "工作目录: ${WORKSPACE}"
                    sh "ls -l ${WORKSPACE}"
                }
            }
        }
        stage('Zip') {
            steps {
                script {
                    // 添加returnStdout: true捕获Shell输出,同时trim去掉换行符
                    def version = sh(
                        script: 'grep -m 1 version_number ${WORKSPACE}/ComponentInfo.toml | tr -s \' \' | tr -d \'"\' | tr -d "\'" | cut -d\' \' -f3',
                        returnStdout: true
                    ).trim()
                    // 用双引号解析变量
                    echo "Version: ${version}"
                }
            }
        }
    }
}

额外优化说明

  • 简化了Checkout阶段的冗余if-else逻辑,用params.branch ?: 'master'处理空分支的情况,减少重复代码。
  • 给sh的返回结果添加了.trim(),避免输出末尾带换行符影响后续打包操作。

内容的提问来源于stack exchange,提问作者aiman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:25:26