我正在尝试自动化 Maven 项目的 DefectDojo 模板。 我需要在 DefectDojo 实例中创建一个产品并存储创建的产品的 ID。
我为一项仅运行一次的作业编写了一个脚本(创建项目时有一个管道,然后将其删除,因为它无用)。
因此,我无法使用
.env
工件将获得的 ID 传递到其他阶段,因为作业不再运行。
事实上,我想使用运行一次的作业动态分配 PRODUCT_ID 作为 GitLab 变量。这可能吗?
您仍然可以将其传递给其他作业,也可以将其用作工件并将其传递给以后的作业或管道。如果需要,您还可以考虑将其保存为项目变量。 您可以在稍后阶段将环境变量从一个作业传递到另一作业。这些变量不能用作 CI/CD 变量来配置管道,但可以在作业脚本中使用。
在作业脚本中,将变量保存为
.env file
。
将 .env 文件另存为 artifacts:reports:dotenv 工件。
在稍后阶段设置作业以使用依赖项或需求关键字接收工件。
后面的作业可以在脚本中使用该变量。
例如,使用依赖关键字:
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
例如,使用 need 关键字:
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
检查这个项目: https://gitlab.com/whitespots-public/pipelines
已经集成了很多工具+还有DefectDojo的替代系统,对于漏洞管理来说更虚构,更可靠