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

Rundeck Community 如何实现跨Job的变量/参数传递

Rundeck 跨Job捕获子脚本变量的实现方法

Rundeck 中子Job内联脚本里定义的普通Shell变量属于脚本进程的本地变量,会随脚本执行结束、会话销毁直接清除,无法被父Job直接读取,必须通过Rundeck原生的全局变量传递机制实现,具体操作步骤如下:

方案1:全版本通用的日志捕获法

  • 第一步:修改Job1的内联脚本,在原有逻辑基础上,输出符合Rundeck变量识别规则的日志行,格式为RD_VAR_<变量名>:<变量值>,Rundeck运行时会自动识别这类日志,将其注册为可跨上下文传递的变量:
#!/bin/bash
ABC="xyz"
echo "ABC=$ABC"
# 新增导出变量的日志输出行
echo "RD_VAR_ABC:${ABC}"

若使用3.0以前的老版本Rundeck,需要给Job1添加一个「Key/Value Data」类型的日志过滤器,匹配规则设置为^(RD_VAR_.*):(.*)$,即可自动捕获对应格式的变量。

  • 第二步:在Job2中添加调用Job1的「Job Reference」步骤时,找到配置项里的将子Job导出变量传递到父Job上下文(不同版本中文译法略有差异,英文对应选项为Export variables from the job to the parent job),勾选开启该选项。
  • 第三步:在Job2的后续内联脚本步骤中,直接通过$ABC即可读取到变量值,示例脚本:
#!/bin/bash
echo "捕获到Job1的ABC变量值为:$ABC"

方案2:3.4+版本可用的rd-set工具法

如果你的Rundeck版本在3.4及以上,可以直接用内置的rd-set命令注册全局变量,不需要额外配置日志过滤器,稳定性更高:

  • Job1内联脚本修改为:
#!/bin/bash
ABC="xyz"
echo "ABC=$ABC"
# 直接调用内置命令注册输出变量
rd-set ABC "$ABC"
  • 后续Job Reference的配置、Job2的变量读取逻辑和方案1完全一致。

常见避坑提示

  • 不要尝试直接在Job1里用export ABC=xyz传递变量:子Job脚本运行在独立的Shell会话中,普通环境变量不会跨会话透传。
  • 如果读取不到变量,先查看Job1的执行日志,确认变量导出的日志/rd-set命令已经正常执行,再检查Job Reference步骤的变量导出开关是否勾选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:36:39