【发布时间】:2022-01-20 21:26:15
【问题描述】:
我在我的项目中使用 gitlab-ci。我已经为 gitlab 容器注册表创建了一个 image 和 push。
为了创建一个图像并将其注册到gitlab container registry,我创建了一个Dockerfile。
Dockerfile:
...
ENTRYPOINT [ "scripts/entry-gitlab-ci.sh" ]
CMD "app"
...
entry-gitlab-ci.sh:
#!/bin/bash
set -e
if [[ $@ == 'app' ]]; then
echo "Initialize image"
rake db:drop
rake db:create
rake db:migrate
fi
exec "$@"
图像将被成功创建,但是当 gitlab-runner 拉取并执行创建的图像时,不会运行 **entry-gitlab-ci** 脚本。
问题是什么?
【问题讨论】:
-
当你在 GitLab CI 中运行这个图像时会发生什么?您观察到什么行为,是否有错误?你期待什么行为?我不希望在 gitlab CI 中运行时你的“if”条件会被捕获。能否提供一个可复现的 dockerfile 和作业配置?
-
我希望在 gitlab-runner 拉取图像并运行它时打印“初始化图像”。并且“如果”条件正常。
-
您将图像用于您的工作还是作为服务?如果您将它用作工作的
image:,则您将无法捕获if条件,因为GitLab 会覆盖提供给容器的命令。