GitLab CI如何基于用户输入配置条件判断以触发Ansible Tower模板
GitLab CI 基于用户输入触发Ansible Tower任务配置方案
实现逻辑说明
该场景完全可以通过rules:if搭配when语法实现,和你熟悉的Jenkins参数化构建中通过参数判断是否执行下游任务的逻辑完全一致,核心逻辑如下:
- 为需要条件执行的Job配置可交互输入变量,用于接收用户是否执行重启的确认参数
- 通过
rules:if判断输入变量的值,只有符合条件时才会加载对应Job - 对应Job内直接编写
tower-cli执行命令即可
完整配置示例
# 建议提前在项目CI/CD变量中配置tower-cli所需认证信息:TOWER_HOST、TOWER_USERNAME、TOWER_PASSWORD stages: - deploy - optional_operation # 常规部署任务示例,可根据你的实际业务调整 deploy_prod: stage: deploy script: - echo "常规业务部署逻辑执行" only: - main # Ansible Tower 服务重启条件任务 restart_service_via_tower: stage: optional_operation variables: # 定义用户可输入的变量,支持下拉选择限制输入范围 RESTART_SERVICE: value: "NO" description: "是否执行服务重启?可选值:YES/NO" options: - "NO" - "YES" script: - echo "开始触发Ansible Tower重启任务" - tower-cli job launch --job-template 替换为你的实际模板ID/名称 rules: # 仅当用户输入RESTART_SERVICE为YES时,该Job才会生效 - if: $RESTART_SERVICE == "YES" when: manual # 手动触发,若需要无需二次确认直接执行可改为always allow_failure: false
注意事项
- 变量判断区分大小写,建议通过
options配置下拉选项限制用户输入范围,避免因大小写不匹配导致判断失效 - tower-cli认证信息不要明文写在yml文件中,统一存放在项目「设置 - CI/CD - 变量」中,配置后可直接在Job中调用
- 若使用的GitLab版本低于14.2,不支持Job级别的输入变量配置,可将
RESTART_SERVICE配置为流水线全局启动变量,rules:if判断逻辑无需调整
内容的提问来源于stack exchange,提问作者Unixquest945
相关产品推荐
相关产品推荐

