Проблема передачи аргумента через jenkins в скрипт оболочки - PullRequest
1 голос
/ 04 ноября 2019

У меня есть удаленный компьютер XXXX, на этом удаленном компьютере есть докер, в котором есть скрипт, как показано ниже

docker exec -i $docker_container_id python /test/script.py $param1 $param2 /host/test/

Он успешно выполняется, когда я запускаю его с удаленного компьютера

У меня запущен jenkins на моей локальной машине, я пытаюсь выполнить ту же команду на удаленной машине

Шаги, которым я следовал,

1) Создан проект фристайла
2) Этопараметризовал проект и выбрал три строки docker_container_id, param1, param2
3) раздел «сценарий предварительной сборки оболочки» имеет следующий сценарий

echo $docker_container_id
        docker exec -i $docker_container_id python /test/script.py $param1 $param2 /host/test/

echo выводится с идентификатором контейнера, но параметры не выбираютсяскорее я получаю эту ошибку

echo $docker_container_id 
docker exec -i $docker_container_id python /host/base/ci/src/automated_tests.py $param1 $param2 /host/test/
test_container_id

1) Таким образом, параметры не передаются внутри команды docker, но она работает для 'echo'

2) Когда я пытаюсь выполнить следующееКоманда (т.е.) параметры двойной кавычки передаются, но я получаю следующую ошибку:

"docker exec -i $docker_container_id python /test/script.py $param1 $param2 /host/test/"

Ошибка:

echo $docker_container_id 
"docker exec -i base_test python /host/base/ci/src/automated_tests.py $BRANCH $DATE /host/base/"
bash: line 4: docker exec -i test_container_id python /host/base/ci/src/automated_tests.py param1 param2 /host/test/: No such file or directory
test

Удивительно, но теперь аргументы передаются, но я получаюt ошибка «Нет такого файла или каталога»

1 Ответ

0 голосов
/ 04 ноября 2019

с docker exec -i docker_container_id "python /app/test.py $param1 $param2 /host/test/" он ищет $param1 на хосте, а не внутри контейнера. также ваша команда не кажется корректной, используйте bash с exec docker_container_id. чтобы справиться с обоими значениями, попробуйте

export param1=test && export param2=test2 && docker exec -i $docker_container_id bash -c "python /app/test.py $param1 $param2 /host/test"

Кроме того, дважды проверьте оболочку выполнения Jenkins, передает ли она переменную, и докер может использовать эти переменные из параметров Jenkins. если есть проблема в стоимости, передайте их как ENV в команду docker exec.

docker exec -e BRANCH=$BRANCH -i base_test bash -c "python /app/test.py $BRANCH $DATE /host/base/"

Также вы можете направить команду ssh без ssh-pluging.

enter image description here

И последнее: дважды проверьте значение в скрипте, а не в Jenkins UI.

В ходе обсуждения мы также отмечаем, что это была проблема с отображением Jenkins, и значение было правильно использовано вКонтейнер, так что лучше проверить в сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...