根据 Gitlab 规则设置变量
Set variables depending on Gitlab rules
我们有 2 个环境(开发、生产)。默认情况下,我们部署到生产环境,但如果分支名称或提交消息以 dev 开头,我们将部署到开发环境。
我创建变量(app_url 和 app_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:
部分有一些条件逻辑。
我们有 2 个环境(开发、生产)。默认情况下,我们部署到生产环境,但如果分支名称或提交消息以 dev 开头,我们将部署到开发环境。
我创建变量(app_url 和 app_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:
部分有一些条件逻辑。