背景:
我们使用自托管 Docker 容器来运行 GitlabCI 作业,以构建/测试移动项目。为此,我们有一个基于自定义
Dockerfile
构建的自定义 Docker 映像,然后在 Artifact Registry 上发布,随后用于我们所有独立移动项目中的容器。
我们想要在 GitlabCI 上运行的每个移动项目都有自己的
.gitlab-ci.yml
文件,我们在其中指定所有项目特定的构建阶段以及应用于前面提到的所有构建阶段的图像(就像 官方文档),位于文件的开头(不是生产代码,仅用于演示目的):
image: eu.gcr.io/android-build-image:1.0.0
问题:
我们希望在容器初始化期间将每个项目的
.gitlab-ci.yml
文件中的运行时变量传递到 Docker 容器,以便我们可以在运行任何类型的项目特定构建步骤之前在 Dockerfile
内配置一些主机 ENV 。怎么才能实现呢?
因此创建一个dockerfile:
FROM eu.gcr.io/android-build-image:1.0.0
COPY ./yourentrypoint.sh /yourentrypoint.sh
ENTRYPOINT ["bash", "/yourentrypoint.sh"]
yourentrypoint.sh
可能看起来像这样:
#!/bin/bash
if something; then
export ENV=something
fi
exec "$@"
请参阅 https://docs.docker.com/build/guide/intro/ 和 https://mywiki.wooledge.org/BashGuide/Parameters#Variable_Types .
构建并发布该 docker 镜像 - 请参阅 https://docs.gitlab.com/ee/ci/docker/using_docker_build.html 、 https://docs.gitlab.com/ee/ci/docker/using_kaniko。 html 和 https://docs.gitlab.com/ee/user/packages/container_registry/ ,另请参阅 https://docs.gitlab.com/ee/ci/docker/using_docker_images.html .
然后在
image:
中使用您的图像。您可以考虑 docker inspect eu.gcr.io/android-build-image:1.0.0
从您的入口点执行原始图像入口点。