Я пытаюсь автоматизировать сборку докеров в конвейере Jenkins. В моем файле dockerfile я в основном создаю приложение узла. В моей установке npm у меня есть несколько частных репозиториев git, которые нуждаются в привязках к ОС и поэтому должны быть установлены в контейнере. Когда я запускаю это вручную, я передаю свои ключи ssh (id_rsa) в файл dockerfile, который используется для установки npm. Теперь моя проблема в том, что при выполнении этой задачи в конвейере jenkins я буду настраивать ssh-agent (плагин Jenkins). Извлечь приватный ключ из ssh-agent не удастся. Как передать ssh-agent в файл dockerfile.

РЕДАКТИРОВАТЬ 1:

Я частично работал с этим:

Docker Build Command:
DOCKER_BUILDKIT=1 docker build --no-cache -t $DOCKER_REGISTRY_URL/$IMAGE_NAME:v$BUILD_NUMBER --ssh default . &&

Затем в файле Docker:

Это отлично работает:

RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -vvvT -o StrictHostKeyChecking=no" 
git clone git@github.com:****

Странно то, что это не работает:

RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -vvvT -o StrictHostKeyChecking=no" npm install git+ssh//git@github.com:****

Я чувствую, что это как-то связано с StrictHostKeyChecking=no

0
Vigilante 14 Окт 2020 в 22:42

1 ответ

Лучший ответ

Я, наконец, заставил его работать, используя пользователя ROOT в файле dockerfile и установив кеш npm на root. Проблема заключалась в том, что git использовал папку /root/.ssh, в то время как npm использовал другой путь - /home/.ssh, поскольку его кеш npm был установлен в /home/.ssh

Для тех, кто все еще борется, это конфигурация, которую я использовал

Команда сборки Docker:

DOCKER_BUILDKIT=1 docker build --no-cache -t test --ssh default . &&

Докерфил:

USER root

RUN apt-get update && \
    apt-get install -y \
        git \
        openssh-server \
        openssh-client
RUN mkdir -p -m 600 /root/.ssh && ssh-keyscan github.com >> /root/.ssh/known_hosts && echo "Host *\n  StrictHostKeyChecking no" > /root/.ssh/config
RUN echo "Check ssh_config" && cat /root/.ssh/config
RUN rm -rf node_modules
RUN npm config set cache /root
RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -vvvT" npm install
2
Vigilante 21 Окт 2020 в 02:54