通过在父管道上构建的 docker 映像运行自动测试管道

问题描述 投票:0回答:1

我有不同的 gitlab 存储库用于开发和自动测试,因此我有不同的 gitlab 管道用于开发和自动测试。现在,开发管道在将代码合并到主分支后运行。该管道构建并将 docker 映像推送到存储,并在运行管道后运行测试。现在我每次都会覆盖图像。 我想创建管道,在将开发代码合并到主分支之前运行。该管道应构建 docker 映像并通过该映像运行测试的管道。但我不知道,如何传输到在父管道构建的测试管道 docker 映像?

docker gitlab-ci gitlab-ci-runner autotest
1个回答
0
投票

在构建图像的上游管道中,您可以执行以下操作:

  1. 构建您的图像,用
    $CI_PIPELINE_ID
    标记它(您也可以使用
    CI_COMMIT_SHA
    或类似的其他东西)并将其推送到您的注册表
  2. 触发下游项目管道,将标签作为变量传递

下游项目:

  1. 使用变量拉取镜像
  2. 测试一下

所以,你的上游 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

请参阅:下游管道了解更多信息

© www.soinside.com 2019 - 2024. All rights reserved.