如何基于GitLab分支名称动态显示变量下拉选项?
实现分支动态控制GitLab CI变量选项及默认值
可以实现,通过GitLab CI的分支匹配规则结合变量重定义就能搞定,具体配置如下:
# 全局基础变量定义(可选,也可直接在job内定义) variables: HOST_NAME: description: Select a host name to deploy value: web-server-dev-01 options: - web-server-dev-01 - web-server-dev-02 - web-server-dev-03 - web-server-prod-01 - web-server-prod-02 - web-server-prod-03 # 示例部署任务,核心逻辑在rules里的分支匹配与变量重定义 deploy_job: script: - echo "Deploying to $HOST_NAME" rules: # 匹配dev分支时,重定义HOST_NAME的默认值和可选列表 - if: '$CI_COMMIT_BRANCH == "dev"' variables: HOST_NAME: description: Select a host name to deploy value: web-server-dev-01 options: - web-server-dev-01 - web-server-dev-02 - web-server-dev-03 # 匹配master分支时,重定义HOST_NAME的默认值和可选列表 - if: '$CI_COMMIT_BRANCH == "master"' variables: HOST_NAME: description: Select a host name to deploy value: web-server-prod-01 options: - web-server-prod-01 - web-server-prod-02 - web-server-prod-03 # 其他分支可按需添加规则,或设置when: never禁止触发 - when: never
关键说明
- 利用
rules里的if条件精准匹配分支,在对应分支规则下重定义HOST_NAME的value和options,直接覆盖全局配置 - dev分支触发时,变量下拉仅显示3个dev结尾的服务器,默认值固定为
web-server-dev-01 - master分支触发时,变量下拉仅显示3个prod结尾的服务器,默认值固定为
web-server-prod-01 - 若有其他分支需求,可继续添加对应
if规则,或通过when: never限制非目标分支触发该任务
内容的提问来源于stack exchange,提问作者Rafiq
相关产品推荐
相关产品推荐

