Gitlab流水线是否支持动态用户输入?合并请求触发时能否弹出输入框?
GitLab流水线与合并请求中获取用户输入的方案
一、流水线中动态获取用户输入
GitLab支持通过手动作业(Manual Jobs)结合流水线变量实现动态获取用户输入,完全适配你的业务场景,具体流程如下:
- 先配置一个自动执行的作业,调用GET API获取transport id列表并输出到流水线日志,供用户查看可选ID。
- 创建一个手动触发的作业,在配置里定义可输入的变量(比如
TRANSPORT_ID),用户触发该作业时,GitLab会弹出输入框,支持手动输入或选择预设选项。 - 在手动作业中,使用用户输入的
TRANSPORT_ID调用导入API完成操作。
示例CI配置片段:
stages: - fetch-transports - import-object fetch_transports: stage: fetch-transports script: # 调用API获取并打印transport id及描述 - curl -s "https://your-api-domain/transports" | jq '.[] | {id: .transport_id, desc: .description}' import_object: stage: import-object when: manual variables: TRANSPORT_ID: description: "请输入或选择目标transport ID(可参考fetch_transports作业日志)" value: "" options: # 若有固定常用ID可在此列出,动态ID可让用户手动输入 - "transport-1001" - "transport-2002" script: # 使用用户输入的ID调用导入API - curl -X POST "https://your-api-domain/import" -H "Content-Type: application/json" -d '{"transport_id": "'"$TRANSPORT_ID"'"}'
二、合并请求触发时获取用户输入
GitLab没有合并请求触发流水线时直接弹出输入窗口的原生功能,但可以通过两种间接方式实现:
- 利用合并请求备注:要求用户在合并请求中添加指定格式的备注(比如
transport-id: xxx),流水线初始作业解析备注内容提取ID,再执行后续导入操作。 - 结合手动作业:合并请求触发流水线后,先自动执行获取transport列表的作业,随后暂停在手动导入作业,引导用户在流水线界面输入ID后继续执行。
三、补充说明
- 若要实现动态选项列表(即从API拉取的transport id自动作为可选值),GitLab原生不支持直接配置,但可通过自定义脚本生成CI配置,或提前调用GitLab CI/CD API将选项注入流水线变量。
- 手动作业的输入内容会被记录在流水线变量中,可追溯输入历史。
内容的提问来源于stack exchange,提问作者Mani
相关产品推荐
相关产品推荐

