根据 Gitlab 规则设置变量

Set variables depending on Gitlab rules

我们有 2 个环境(开发、生产)。默认情况下,我们部署到生产环境,但如果分支名称或提交消息以 dev 开头,我们将部署到开发环境。

我创建变量(app_urlapp_url _dev) 通过 gitlab GUI : (Project => Settings => CI/CD => Variables)

我使用 gitlab 规则更改部署的 app_url 变量。脚本 deploy.py(以及许多其他脚本)正在使用 app_url 变量。

gitlab-ci代码为:

Tags:
  stage: Deploy code
  rules:
  #    - if: $CI_COMMIT_REF_NAME == "main" && $CI_COMMIT_MESSAGE =~ /^dev/
      - if: $CI_COMMIT_REF_NAME == "main" && $CI_COMMIT_BRANCH =~ /^dev/
        variables:
          app_url: $app_url_dev
  script:
  - Python deploy.py 

问题是我从来没有在 app_url 中得到 app_url_dev 的值。我尝试了其他组合,但我总是得到生产 url 而不是开发者:

app_url: ${app_url_dev}
app_url: app_url_dev

但我总是得到 app_url 而不是 app_url_dev。 有人可以帮忙吗?

rules:variables: 部分没有进行变量扩展。您只能为变量设置简单的文本值。

对于 app_url,您可以考虑使用 environment:url: section,这是变量扩展的地方。但是你不能在 rules:.

内部使用它

或者在 script: 部分有一些条件逻辑。