GitLab CI中有一种方法可以将configure
个环境变量从一个阶段转移到下一个阶段吗?我正在寻找类似于job artifacts功能的东西,仅用于环境变量而不是文件。
假设我正在extern "C" {
/* Your JNI functions */
}
阶段配置构建,并希望将结果存储为(秘密的,受保护的)环境变量,以供下一阶段使用。我可以保护文件中的配置并将它们存储为工作工件,但是我担心文件中提供的秘密比每个人都可以下载的更多。
答案 0 :(得分:7)
自Gitlab 13起,您可以像这样inherit environment variables:
build:
stage: build
script:
- echo "BUILD_VERSION=hello" >> build.env
artifacts:
reports:
dotenv: build.env
deploy:
stage: deploy
script:
- echo $BUILD_VERSION # => hello
dependencies:
- build
注意:您应该首先在Gitlab Rails console中启用此功能:
Feature.enable(:ci_dependency_variables)
答案 1 :(得分:1)
目前还没有此功能,但此主题已有issue。
我的建议是将变量保存在文件中并对其进行缓存,因为这些变量无法下载,并且会在完成作业时删除。
如果您想100%确定可以手动删除它。请参阅clean_up
阶段。
e.g。
cache:
paths:
- save_file
stages:
- job_name_1
- job_name_2
- clean_up
job_name_1:
script:
- (your_task) >> save_file
job_name_2:
script:
- cat save_file | do_something_with_content
clean_up:
script:
- rm save_file
when: always
答案 2 :(得分:1)
您要为此使用Artefacts
。
stages:
- job_name_1
- job_name_2
- clean_up
job_name_1:
script:
- (your_task) >> save_file
artifacts:
paths:
- save_file
# Hint: You can set an expiration for them too.
job_name_2:
needs:
- job: job_name_1
artifacts: true
script:
- cat save_file | do_something_with_content
答案 3 :(得分:-1)
设置-> CI / CD -> 变量,您可以在其中添加敏感的环境。
如果环境是由上一阶段生成的,并且不太敏感,则可以肯定使用工件。 (在这种情况下,所有有权访问该存储库的用户都应该能够下载环境并阅读它们)
在敏感环境是自动生成的情况下,我想某些第三方系统可用于支持生成后的发送环境,并在以后的阶段中获取它们,例如