带有变量的Gitlab CI拷贝文件



我在gitlab服务中有一个django存储库。我在我的VDS中使用gitlab CI运行器。我想在部署过程中复制一些文件,例如local_settings.py和仅在部署时填充变量,例如:

# $CI_PROJECT_NAME/$CI_PROJECT_NAME/deploy_templates/local_settings.py.tpl
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USERNAME': '$DB_USERNAME',
        'PASSWORD': '$DB_PASSWORD',
    },
}
# .gitlab-ci.yml
configure_project:
    script:
        - git clone $CI_BUILD_REPO
        - cp $CI_PROJECT_NAME/$CI_PROJECT_NAME/deploy_templates/local_settings.py.tpl $CI_PROJECT_NAME/$CI_PROJECT_NAME/local_settings.py

在我的项目中,我定义了DB_USERNAMEDB_PASSWORD安全变量。我怎样才能得到文件的值?我需要template指令从ansible

这可以使用envsubst命令实现。在.gitlab-ci.yml文件中,您可以执行以下操作:

configure_project:
    script:
        - git clone $CI_BUILD_REPO
        - envsubst < "$CI_PROJECT_NAME/$CI_PROJECT_NAME/deploy_templates/local_settings.py.tpl" > "local_settings.py.tpl.exported"
        - cp local_settings.py.tpl.exported $CI_PROJECT_NAME/$CI_PROJECT_NAME/local_settings.py

envsubst将替换环境变量的值,并且可以将输出重定向到另一个名为local_settings.py.tpl.exported的文件,您可以复制该文件。

最新更新