根据环境设置 CI/CD 个变量
Set CI/CD variables depending on environment
我们有多个环境(暂存、生产...),我不想将数据库密码等敏感信息放入代码库中。为此,我想使用 GitLab CI/CD.
提供的环境变量
但是我不知道如何根据我的环境告诉 GitLab 运行 一组不同的变量。
到目前为止我做了什么:
1- 创建环境:通过 UI (Project => Operations => Environments :我在这里创建了 2 个环境,STAGING
和 PRODUCTION
2- 通过 UI 创建变量 (Project => Settings => CI/CD => Variables : 这里我创建了变量 DB_PASSWORD
两次(当然分配了不同的值),一次将 environment scope 设置为 STAGING
,另一次设置为 PRODUCTION
.
现在我想做的是 运行 我的项目管道。所以我转到 Project => CI/CD => Pipelines => 运行 Pipeline 在这里我希望 GitLab CI 问我是否愿意到 运行 我的管道,为 STAGING 或 PRODUCTION 设置了一组变量,但它没有。
我应该如何告诉 GitLab 我想 运行 我的管道使用 DB_PASSWORD 变量,其值对应于我想要的环境目标?
你需要在你的gitlab-ci.yml文件中指定环境,见here
来自官方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
我们有多个环境(暂存、生产...),我不想将数据库密码等敏感信息放入代码库中。为此,我想使用 GitLab CI/CD.
提供的环境变量但是我不知道如何根据我的环境告诉 GitLab 运行 一组不同的变量。
到目前为止我做了什么:
1- 创建环境:通过 UI (Project => Operations => Environments :我在这里创建了 2 个环境,STAGING
和 PRODUCTION
2- 通过 UI 创建变量 (Project => Settings => CI/CD => Variables : 这里我创建了变量 DB_PASSWORD
两次(当然分配了不同的值),一次将 environment scope 设置为 STAGING
,另一次设置为 PRODUCTION
.
现在我想做的是 运行 我的项目管道。所以我转到 Project => CI/CD => Pipelines => 运行 Pipeline 在这里我希望 GitLab CI 问我是否愿意到 运行 我的管道,为 STAGING 或 PRODUCTION 设置了一组变量,但它没有。
我应该如何告诉 GitLab 我想 运行 我的管道使用 DB_PASSWORD 变量,其值对应于我想要的环境目标?
你需要在你的gitlab-ci.yml文件中指定环境,见here
来自官方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