#docker #jenkins #jenkins-pipeline #jenkins-groovy
Вопрос:
Мне нужно использовать ssh-ключ хоста внутри докера , для этой цели у меня есть докер сборки, такой как
docker build -t example --build-arg ssh_prv_key="$(cat ~/.ssh/id_rsa)" -f dockerfile-dev .
если мы используем прямую команду docker , она работает нормально, но если я использую внутри конвейерного скрипта Дженкинса, то получаю ошибку ниже
Running in Durability level: MAX_SURVIVABILITY
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 92: expecting '}', found 'ssh_prv_key' @ line 92, column 116.
ev:${GIT_COMMIT} "--build-arg ssh_prv_ke
Ниже приведен шаг, который я использовал в трубопроводе Дженкинса
sh "docker build -t ${service_name}-dev:${GIT_COMMIT} --build-arg ssh_prv_key="$(cat ~/.ssh/id_rsa)" -f dockerfile-dev ."
И файл docker используется, как показано ниже
ARG ssh_prv_key
# Authorize SSH Host
# Add the keys and set permissions
RUN mkdir -p /root/.ssh
RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa amp;amp;
chmod 600 /root/.ssh/id_rsa
Ответ №1:
Я решил аналогичную проблему следующим образом:
Трубопровод Дженкинса
sh "cp ~/.ssh/id_rsa id_rsa"
sh "docker build -t ${service_name}-dev:${GIT_COMMIT} -f dockerfile-dev ."
sh "rm id_rsa"
Докерфайл
# Some instructions...
ADD id_rsa id_rsa
# Now use the "id_rsa" file inside the image...
Комментарии:
1. ошибка ниже, и уже добавлен sh «cp ~/.ssh/id_rsa id_rsa» в конвейере Дженкинса Шаг 5/22 : ДОБАВИТЬ id_rsa id_rsa amp;amp; chmod 600 /root/.ssh/id_rsa ДОБАВИТЬ не удалось: файл не найден в контексте сборки или исключен .dockerignore: stat amp;amp;: файл не существует
2. Прежде чем оскорблять строку, попробуйте добавить команду отладки, например
RUN ls -la
.