Получение ошибки, если я использую docker build-arg в конвейере Дженкинса

#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 .