gitlab - 根据环境设置 CI/CD 变量
问题描述
我们有多个环境(暂存、生产......),我不想将数据库密码等敏感信息放在代码库中。为此,我想使用 GitLab CI/CD 提供的环境变量。
但是我不知道如何告诉 GitLab 根据我的环境运行一组不同的变量。
到目前为止我所做的:
1- 创建环境:通过 UI(项目 => 操作 => 环境:这里我创建了 2 个环境,STAGING
并且PRODUCTION
2- 通过 UI 创建变量(项目 => 设置 => CI/CD => 变量:在这里我创建了DB_PASSWORD
两次变量(当然分配了不同的值),一个环境范围设置为STAGING
,另一个设置为PRODUCTION
.
现在我想做的是运行我的项目的管道。所以我去Project => CI/CD => Pipelines => Run Pipeline在这里我希望 GitLab CI 询问我是否想使用为 STAGING 或 PRODUCTION 设置的变量集运行我的管道,但它没有。
我应该如何告诉 GitLab 我想使用DB_PASSWORD变量运行我的管道,该变量的值对应于我想要定位的环境?
解决方案
您需要在 gitlab-ci.yml 文件中指定环境,请参见此处
来自官方 gitlab 文档的示例:
stages:
- test
- build
- deploy
test:
stage: test
script: echo "Running tests"
build:
stage: build
script: echo "Building the app"
deploy_staging:
stage: deploy
script:
- echo "Deploy to staging server"
environment:
name: staging
url: https://staging.example.com
only:
- master
在此示例中,运行deploy_staging
环境时设置为staging
,因此您可以访问为环境定义的变量,如下所示:
deploy_staging:
stage: deploy
script:
- echo "Deploy to staging server"
environment:
name: staging
url: https://staging.example.com
variables:
DB_PASS: ${DB_PASSWORD} # which is your defined variable within Gitlab CI
only:
- master
推荐阅读
- python - 如何在我的 kivy 应用程序中打开键盘?
- json - Gatling 的 jsonPath 默默地将空对象转换为“空”字符串
- reactjs - 在 Netlify 上部署 react 应用程序成功并已发布,但未找到页面
- shell - 使用 wget 时 URL 中的通配符
- .net-core - 如何在动作过滤器的 OnActionExecuted 中获取请求参数
- python - 在python中的某个基数中迭代
- angular - Angular 10 - canActivate Guard 在手动输入时阻止导航以更正 URL
- sql - 在 SQL Server 的表中保留一系列值
- c# - 捕获异步文件下载异常的方法
- vim - 为什么vim总是卡住?