Невозможно запустить скрипт Python внутри докера из конвейера jenkins. - PullRequest
0 голосов
/ 22 февраля 2019

Я создал пакет python (для автоматизации этапов сборки в jenkins), который можно установить с помощью pip.Также я создал dockerfile, который будет клонировать пакет python из github, выполнить установку pip и экспортировать путь, по которому исполняемые файлы (точки входа, как бы вы их ни называли) установлены в контейнере (пример: ~ / .local /бин).Вот так выглядит мой dockerfile.

FROM ros:melodic-ros-core-stretch
RUN apt-get update && apt-get -y install python-pip
RUN git clone <private-repo-with-personal-access-token>
RUN pip install <package-name>
RUN export PATH=~/.local/bin:$PATH 

Итак, я построил этот образ, запустил контейнер и набрал один из исполняемых файлов (точек входа), который печатает hello world.Работает отлично.Никаких проблем по этому поводу.Переходя к общей картине, я хочу назвать этот исполняемый файл (точки входа) в конвейере jenkins.У меня изначально была проблема с этим, а затем я узнал, что конвейер jenkins при установке с образом докера запускается поверх контейнера, но использует рабочее пространство, выделенное для jenkins, которое будет / var / lib / jenkins / workspace.Вот как выглядит мой конвейерный скрипт jenkins

pipeline {
    agent {
         docker {
              args '--network host -u root:root'
              image '<private-docker-hub-image>'
              registryCredentialsId 'docker-credentials'
              registryUrl 'https://registry.hub.docker.com'
         }
    }
    stages {
        stage('Test') {
            steps {
                sh 'test-build'
            }
        }
    }
}

Это ошибка, которую я получаю.

Started by user Automated Build Environment
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/First_item
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] withDockerRegistry
$ docker login -u <docker username> -p ******** https://registry.hub.docker.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /var/lib/jenkins/workspace/First_item@tmp/251189be-62eb-4134-84ca-d70190ab080f/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[Pipeline] {
[Pipeline] sh
+ docker inspect -f . <private-dockerhub-image>

Error: No such object: <private-dockerhub-image>
[Pipeline] sh
+ docker inspect -f . registry.hub.docker.com/<private-dockerhub-image>
.
[Pipeline] withDockerContainer
Jenkins does not seem to be running inside a container
$ docker run -t -d -u 125:130 --network host -u root:root -v /var/lib/jenkins:/var/lib/jenkins -w /var/lib/jenkins/workspace/First_item -v /var/lib/jenkins/workspace/First_item:/var/lib/jenkins/workspace/First_item:rw,z -v /var/lib/jenkins/workspace/First_item@tmp:/var/lib/jenkins/workspace/First_item@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** registry.hub.docker.com/<private-dockerhub-image> cat
$ docker top ab1f2ec9b503f9b916ee96943dc849acc90716f7543b4841ff3901b7a65aea54 -eo pid,comm
[Pipeline] {
[Pipeline] stage (hide)
[Pipeline] { (Test)
[Pipeline] sh
+ test-build
/var/lib/jenkins/workspace/First_item@tmp/durable-7cb108f7/script.sh: 1: /var/lib/jenkins/workspace/First_item@tmp/durable-7cb108f7/script.sh: test-build: not found
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
$ docker stop --time=1 ab1f2ec9b503f9b916ee96943dc849acc90716f7543b4841ff3901b7a65aea54
$ docker rm -f ab1f2ec9b503f9b916ee96943dc849acc90716f7543b4841ff3901b7a65aea54
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // withDockerRegistry
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE

Мой вопрос: как работает rosdep, bloom-generate и несколько других скриптов?(Достаточно знать, что это сценарии, установленные как часть другого пакета pip в ~ / .local / bin в операционной системе робота), которые работают в конвейере, но не сценарии, которые я установил через pip.Я был бы очень признателен за помощь в указании того, что мне не хватает.

Спасибо.Помощь очень ценится.

1 Ответ

0 голосов
/ 23 февраля 2019

Извините.Решение было действительно простым.Ошибка, которую я совершил, заключалась в том, что я обновил файл dockerfile и создал новый образ, перенес его в dockerhub, но забыл обрезать и обновить последнюю копию в экземпляре, где работал мастер Jenkins.Так что в основном мой докер-хаб позволял просто сказать версию.101, и локальный компьютер, на котором я создал файл dockerfile и образ докера, имел версию.101. Но мастер Дженкинс был в т.52.Так что, хотя я и внес изменения, обновленный образ не был вытащен мастером Дженкинс, и бум!Это была глупая ошибка с моей стороны.Я благодарю каждого из вас, кто помогает мне здесь.МИР ВНЕ!

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