GitLab CI 运行 docker 其他 Repository 的容器

GitLab CI run docker container of other Repository

我通常对 GitLab CI 主题还比较陌生,不幸的是我还不能自己测试,所以这更多是一种理论上的尝试。 我想在我的主项目的 CI 管道中从我在 Gitlab 中的其他项目之一启动一个 Docker 容器。 这个Container(我现在叫它Mock-Container)是在对应项目的GitLab CI pipeline中创建和发布的,包含各种mocked服务。 在我想要 运行 Mock-Container 的项目中,它应该能够在 GitLab CI.

中启动该容器

我知道可以在同一管道的不同阶段使用项目的构建,例如此处:

variables:
  DOCKER_HOST: tcp://docker:2376
  DOCKER_TLS_CERTDIR: "/certs"
  CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
  CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest

例如,如果 CONTAINER-IMAGE-Variables 中使用的 $CI_REGISTRY_IMAGE 是否可能:

registry.gitlab.com/foo/bar/mainproject

在此处添加一个变量,例如:

MOCK_CONTAINER_IMAGE: registry.gitlab.com/foo/bar/mockproject:latest

所以我可以在测试阶段的服务列表中使用它:

build:
  stage: build
  image: quay.io/podman/stable
  script:
    - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY --log-level=debug
    - podman build --format docker --pull -t $CONTAINER_TEST_IMAGE .
    - podman push $CONTAINER_TEST_IMAGE

test:
  stage: test
  image:
    name: postman/newman
    entrypoint: [ "" ]
  services:
    - name: $CONTAINER_TEST_IMAGE
      alias: main-project
    - name: $MOCK_CONTAINER_IMAGE
      alias: mock-container
  ...

这是否可能或是否有更好的方法来实现。

如果您要求在 .gitlab-ci.yml 文件中使用另一个容器的注册表 URL 设置一个变量,如下所示:

variables:
  MOCK_CONTAINER_IMAGE: registry.gitlab.com/foo/bar/mockproject:latest

那么是的,你可以。您可以根据需要在文件的不同阶段使用该变量。如果您想从注册表中拉取此映像,您也可以在一个阶段执行此操作。

查看此参考以获取更多信息:https://docs.gitlab.com/ee/ci/yaml/#variables