根据Gitlab规则设置变量



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

我通过gitlab GUI创建变量(app_urlapp_url_dev(:

我使用gitlab规则来更改deployement的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,而不是开发url:

app_url: ${app_url_dev}
app_url: app_url_dev

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

正如Brennan在上面的评论中所说,随着变量扩展现在在rules:variables块中工作,有些事情可能已经发生了变化。

以下是对我有效的方法:

variables:
DEPLOY_KEY: "$DEPLOY_KEY_DEV" # global fallback
deploy:
stage: deploy
script:
- bash ./deploy.sh
rules:
- if: $DEPLOY_ENV == "production" # can use trigger variables for evaluation
variables:
DEPLOY_KEY: "$DEPLOY_KEY_PROD" # can expand project variables into other variables
- if: $DEPLOY_ENV == "staging"
variables:
DEPLOY_KEY: "$DEPLOY_KEY_STAGING"

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

对于app_url,您可以考虑使用environment:url:部分,这是变量展开的工作方式。但是你不能在rules:内部使用它。

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

相关内容

  • 没有找到相关文章