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

如何在YAML中将Shell脚本输出存入变量?

解决YAML中Shell输出存入变量的问题

你的错误出在variables字段的写法上:variables要求是键值对(哈希)结构,但你把rpackval定义成了数组(用-开头),而且variables本身只能用来定义静态变量,没办法直接在这里执行Shell命令并捕获输出,所以才会报variables config should be a hash of key value pairs的错误。

根据你原来的Groovy逻辑(Jenkins Pipeline语法),对应的YAML实现分两种常见场景:

场景1:Jenkins声明式Pipeline(YAML格式)

需要在steps里用script块执行Groovy代码,和原逻辑保持一致:

pipeline:
  agent any
  stages:
    - stage: 获取SFDX命令输出
      steps:
        - script:
            # 执行sfdx命令并捕获标准输出,trim()去除首尾空白字符
            rpackval = sh(script: 'some sfdx command', returnStdout: true).trim()
            # 验证变量值
            echo "获取到的值:${rpackval}"

场景2:GitLab CI/CD YAML

直接用Shell的变量赋值语法在script里处理:

stages:
  - 获取值

获取SFDX值:
  stage: 获取值
  script:
    # 捕获命令输出到变量
    - rpackval=$(some sfdx command)
    # 使用变量
    - echo "获取到的值:$rpackval"

如果需要跨Job传递这个变量,GitLab可以用dotenv报告实现:

stages:
  - 获取值
  - 使用值

获取SFDX值:
  stage: 获取值
  script:
    - rpackval=$(some sfdx command)
    - echo "rpackval=$rpackval" > variables.env
  artifacts:
    reports:
      dotenv: variables.env

使用值:
  stage: 使用值
  script:
    - echo "使用上一个Job传递的值:$rpackval"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:35:49