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
我通常对 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