我有不同的 gitlab 存储库用于开发和自动测试,因此我有不同的 gitlab 管道用于开发和自动测试。现在,开发管道在将代码合并到主分支后运行。该管道构建并将 docker 映像推送到存储,并在运行管道后运行测试。现在我每次都会覆盖图像。 我想创建管道,在将开发代码合并到主分支之前运行。该管道应构建 docker 映像并通过该映像运行测试的管道。但我不知道,如何传输到在父管道构建的测试管道 docker 映像?
在构建图像的上游管道中,您可以执行以下操作:
$CI_PIPELINE_ID
标记它(您也可以使用 CI_COMMIT_SHA
或类似的其他东西)并将其推送到您的注册表下游项目:
所以,你的上游 CI 配置可能是这样的:
build:
script:
- docker build -t $MY_REGISTRY/$MY_IMAGE:$CI_PIPELINE_ID .
- docker push $MY_REGISTRY/$MY_IMAGE:$CI_PIPELINE_ID
trigger_tests:
needs: [build]
trigger: path/to/my-testing-project
variables:
UPSTREAM_TAG: $CI_PIPELINE_ID
strategy: depend
然后在下游测试项目CI配置:
test_upstream:
script:
- docker pull $MY_REGISTRY/$MY_IMAGE:$UPSTREAM_TAG
- make test
请参阅:下游管道了解更多信息