如何在Rundeck自定义步骤中读取当前作业的其他步骤信息?
在Rundeck自定义步骤中访问作业步骤信息的方法
可以的,你可以通过两种主要方式在Rundeck自定义步骤中获取当前作业的后续步骤名称、类型及参数:
1. 利用Rundeck内置环境变量(脚本步骤首选)
Rundeck会给脚本步骤自动注入多个环境变量,其中RD_WORKFLOW_STEPS是包含所有作业步骤的JSON数组,配合RD_STEP_INDEX(当前步骤的索引,从0开始)就能筛选出后续步骤。
示例Python脚本:
import os import json # 读取所有步骤的JSON数据 steps_json = os.environ.get('RD_WORKFLOW_STEPS') if not steps_json: print("无法获取步骤信息") exit(1) steps = json.loads(steps_json) current_idx = int(os.environ.get('RD_STEP_INDEX', 0)) # 提取当前步骤之后的所有步骤 next_steps = steps[current_idx + 1:] for step in next_steps: print(f"步骤名称: {step.get('name', '未命名')}") print(f"步骤类型: {step.get('type', '未知类型')}") print(f"步骤参数: {step.get('arguments', {})}") print("---")
2. 调用Rundeck API获取完整作业信息
如果是自定义插件步骤,或者脚本步骤无法使用环境变量,可以调用Rundeck的作业详情API来获取所有步骤数据。
示例Bash脚本(需要提前配置API令牌):
# 获取当前作业ID和步骤索引 JOB_ID="$RD_JOB_ID" CURRENT_STEP="$RD_STEP_INDEX" # 调用API获取作业详情,解析后续步骤 curl -s -H "X-Rundeck-Auth-Token: YOUR_API_TOKEN" "http://your-rundeck-server:4440/api/42/job/$JOB_ID" | jq ".workflow.steps[$CURRENT_STEP+1:]"
注意事项
RD_STEP_INDEX从0开始计数,所以后续步骤的索引是当前索引加1及以后。- API版本号(示例中的42)需要匹配你的Rundeck版本,不同版本的API响应结构可能略有差异。
- 使用API方式时,确保执行步骤的用户或服务账号有足够的权限访问作业详情。
内容的提问来源于stack exchange,提问作者Shatazone
相关产品推荐
相关产品推荐

