Как установить PYTHONPATH в Jenkins на docker - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в Jenkins, поэтому я следую этому уроку: https://www.jenkins.io/doc/tutorials/build-a-python-app-with-pyinstaller/#setup -Wizard

Когда я строил проект, этапы сборки и тестирования не встретили проблем, но на этапе доставки произошла ошибка.

Это журнал:

+ pwd   
+ docker run -v /var/jenkins_home/jobs/python/workspace/8/sources:/src cdrx/pyinstaller-linux:python3 'pyinstaller -F add2vals.py'
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
pyinstaller -F add2vals.py
131 INFO: PyInstaller: 3.6
132 INFO: Python: 3.7.5
134 INFO: Platform: Linux-4.19.76-linuxkit-x86_64-with-debian-wheezy-sid
135 INFO: wrote /src/add2vals.spec
140 INFO: UPX is available.
Traceback (most recent call last):
  File "/root/.pyenv/versions/3.7.5/bin/pyinstaller", line 8, in <module>
    sys.exit(run())

  File "/root/.pyenv/versions/3.7.5/lib/python3.7/site-packages/PyInstaller/__main__.py", line 114, in run

    run_build(pyi_config, spec_file, **vars(args))

  File "/root/.pyenv/versions/3.7.5/lib/python3.7/site-packages/PyInstaller/__main__.py", line 65, in run_build

    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)

  File "/root/.pyenv/versions/3.7.5/lib/python3.7/site-packages/PyInstaller/building/build_main.py", line 734, in main

    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))

  File "/root/.pyenv/versions/3.7.5/lib/python3.7/site-packages/PyInstaller/building/build_main.py", line 681, in build

    exec(code, spec_namespace)

  File "/src/add2vals.spec", line 17, in <module>

    noarchive=False)

  File "/root/.pyenv/versions/3.7.5/lib/python3.7/site-packages/PyInstaller/building/build_main.py", line 191, in __init__

    raise ValueError("script '%s' not found" % script)

ValueError: script '/src/add2vals.py' not found

script returned exit code 1

Я сравнил его с журналом из учебника и, кроме версии python, есть еще одно отличие:

snippet of log from tutorial

В системе конфигурации Jenkin я уже добавил глобальную переменную для PYTHONPATH. enter image description here

Есть ли какие-то настройки, которые мне не хватает?

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

Я изменил изображение, содержащее журнал в реальном журнале, моя ошибка. Также я не использовал Dockerfile, я следовал инструкциям в руководстве, где он использовал Jenkinsfile, где он загружает изображения для каждой стадии, как указано.

Я не включил шаги на этапе сборки и тестирования, так как нет проблема в их исполнении.

stage('Build') {
    agent {
        docker {
            image 'python:3.7.5'
        }
    }
}
stage('Test') {
        agent {
            docker {
                image 'qnib/pytest'
            }
        }
}
stage('Deliver') {
            agent any
            environment {
                VOLUME = '$(pwd)/sources:/src'
                IMAGE = 'cdrx/pyinstaller-linux:python2'
            }
            steps {
                dir(path: env.BUILD_ID) {
                    unstash(name: 'compiled-results')
                    sh "docker run --rm -v ${VOLUME} ${IMAGE} 'pyinstaller -F add2vals.py'"
                }
            }
            post {
                success {
                    archiveArtifacts "${env.BUILD_ID}/sources/dist/add2vals"
                    sh "docker run --rm -v ${VOLUME} ${IMAGE} 'rm -rf build dist'"
                }
            }
        }

1 Ответ

0 голосов
/ 28 апреля 2020

Укажите рабочий каталог контейнера с помощью опции -w следующим образом

sh "docker run --rm -v ${VOLUME} ${IMAGE} -w /src 'pyinstaller -F add2vals.py'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...