Как я могу скопировать файлы из вспомогательного контейнера GitLab Runner в контейнер сборки? - PullRequest
4 голосов
/ 13 февраля 2020

Настройка

Я настроил GitLab Runner с KubernetesExecutor и хочу создать пользовательский образ помощника, который добавляет некоторые дополнительные файлы в контейнер сборки.

Текущая настройка довольно проста c:

  • A Dockerfile, который добавляет некоторые файлы (start.sh и Dockerfile) в контейнер.
  • A start.sh файл, который присутствует в вспомогательное изображение. Это должно выполняться при запуске помощника.

Код

start. sh

#!/bin/bash

printenv > /test.out  # Check whether the script is run.
cp /var/Dockerfile /builds/Dockerfile  # Copy file to shared volume.

exec "$@"

Dockerfile

FROM gitlab/gitlab-runner-helper:x86_64-latest

ADD templates/Dockerfile /var/Dockerfile
ADD start.sh /var/run/start.sh

ENTRYPOINT ["sh", "/var/run/start.sh"]

Общий объем между контейнерами: /builds. Поэтому я хотел бы скопировать /var/Dockerfile в /builds/Dockerfile.

Проблема

Не могу найти способ (даже) запустить start.sh, когда помощник изображение выполнено. Используя kubectl exec -it pod-id -c build bash и kubectl exec -it pod-id -c helper bash, я проверяю, созданы ли файлы. Когда я запускаю start.sh (вручную) из последней команды, файлы копируются. Однако ни /test.out, ни /builds/Dockerfile недоступны при первоначальном входе в образ помощника.

Попытки

  • Я пытался настроить другой CMD (/var/run/start.sh), но, похоже, он просто не запускает файл sh.
...