首页 > 解决方案 > 如何使用 ci.yml 声明要在 python 中使用的环境变量?

问题描述

-在 gitlab-ci.yml

variables:
  SECRET_KEY: secret_key
  DB_NAME: somedb_name
  DB_USER: postgres
  DB_HOST: mdillon-postgis
  DB_PORT: 5432
  DB_PASSWORD: ''

-在django中

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': os.getenv('DB_NAME'),
        'USER': os.getenv('DB_USER'),
        'PASSWORD': os.getenv('DB_PASSWORD'),
        'HOST': os.getenv('DB_HOST'),
        'PORT': os.getenv('DB_PORT'),
    }
}

运行管道时,Django 似乎没有选择 CI 上声明的变量。如何在测试中正确声明 env 变量?

标签: pythondjangocontinuous-integrationgitlab-ci

解决方案


任何人都有同样的困惑。以下是步骤:

  1. 转到设置 > CI/CD > 变量。添加变量和值:
  DB_NAME: your_db_name
  DB_USER: postgres
  DB_HOST: mdillon-postgis (or whatever service you are using)
  DB_PORT: 5432
  DB_PASSWORD: <leave it blank>
  1. 在 gitlab-ci.yml
  POSTGRES_DB: $DB_NAME
  POSTGRES_USER: $DB_USER
  POSTGRES_PASSWORD: $DB_PASSWORD
  DATABASE_URL: postgres://postgres:@mdillon__postgis:5432/$DB_NAME
  1. 在 django 中
DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': os.getenv('DB_NAME'),
        'USER': os.getenv('DB_USER'),
        'PASSWORD': os.getenv('DB_PASSWORD'),
        'HOST': os.getenv('DB_HOST'),
        'PORT': os.getenv('DB_PORT'),
    }
}

推荐阅读