variables - 为仅针对一个管道运行的作业动态保存 GitLab 变量
问题描述
我正在尝试为 Maven 项目自动化 DefectDojo 模板。我需要在 DefectDojo 实例中创建一个产品并存储创建的产品的 ID。
我为仅运行一次的作业编写了一个脚本(创建项目时使用一个管道,然后将其删除,因为它没用)。
因此,我无法使用.env
工件将获得的 ID 传递到其他阶段,因为该作业不再运行。
实际上,我想使用运行一次的作业将 PRODUCT_ID 动态分配为 GitLab 变量。这可能吗 ?
解决方案
您仍然可以将其传递给其他作业,也可以将其用作工件并将其传递给以后的作业或管道。如果需要,您还可以考虑将其保存为项目变量。您可以在稍后阶段将环境变量从一个作业传递到另一个作业。这些变量不能用作 CI/CD 变量来配置管道,但它们可以在作业脚本中使用。
在作业脚本中,将变量另存为.env file
. 将 .env 文件另存为 artifacts:reports:dotenv artifact。通过使用依赖项或需求关键字在稍后阶段设置作业以接收工件。然后,后面的作业可以在脚本中使用该变量。例如,使用 dependencies 关键字:
build:
stage: build
script:
- echo "BUILD_VERSION=hello" >> build.env
artifacts:
reports:
dotenv: build.env
deploy:
stage: deploy
script:
- echo "$BUILD_VERSION" # Output is: 'hello'
dependencies:
- build
例如,使用 needs 关键字:
build:
stage: build
script:
- echo "BUILD_VERSION=hello" >> build.env
artifacts:
reports:
dotenv: build.env
deploy:
stage: deploy
script:
- echo "$BUILD_VERSION" # Output is: 'hello'
needs:
- job: build
artifacts: true
推荐阅读
- fortran - 在fortran中传递数组的问题
- reactjs - Auth0 电子邮件白名单规则阻止用户登录过于严格
- spring-batch - 如果 JdbcBatchItemWriter 中存在 RunTimeException,为什么事务没有回滚
- javascript - Dto 自定义验证
- django - Django - 如何缓存所有url前缀的模板
- python - 用于时间序列预测的变压器
- amazon-rds - 如何使用 boto3 RDS 客户端 python 在 AWS lambda 中运行 RDS SQL Server 选择查询?
- c - 如何在C中规范化路径(删除所有重复的'/')
- http - 你可以发出一个http请求并将Referer值伪造为某个任意网站吗?
- json - 在 Flutter 中从 json 文件自动生成类和成员