Оболочка pipenv в Jenkins возвращает ошибку termios.error: (25, «Несоответствующий ioctl для устройства») - PullRequest
0 голосов
/ 02 января 2019

У меня проблема с моим Jenkins: когда я запускаю задание, Jenkins выполняет следующие действия:

1 - pipenv install -r requirements.txt
2 - pipenv shell 

На этом шаге отображается эта ошибка:

+ pipenv shell
17:26:04 Loading .env environment variables…
17:26:04 Launching subshell in virtual environment…
17:26:04 Traceback (most recent call last):
17:26:04   File "/usr/local/bin/pipenv", line 11, in <module>
17:26:04     sys.exit(cli())
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/click/core.py", line 764, in __call__
17:26:04     return self.main(*args, **kwargs)
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/click/core.py", line 717, in main
17:26:04     rv = self.invoke(ctx)
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/click/core.py", line 1137, in invoke
17:26:04     return _process_result(sub_ctx.command.invoke(sub_ctx))
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/click/core.py", line 956, in invoke
17:26:04     return ctx.invoke(self.callback, **ctx.params)
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/click/core.py", line 555, in invoke
17:26:04     return callback(*args, **kwargs)
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
17:26:04     return ctx.invoke(f, obj, *args, **kwargs)
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/click/core.py", line 555, in invoke
17:26:04     return callback(*args, **kwargs)
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/cli/command.py", line 390, in shell
17:26:04     pypi_mirror=state.pypi_mirror,
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/core.py", line 2184, in do_shell
17:26:04     shell.fork_compat(*fork_args)
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/shells.py", line 121, in fork_compat
17:26:04     c.interact(escape_character=None)
17:26:04   File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/pexpect/pty_spawn.py", line 761, in interact
17:26:04     mode = tty.tcgetattr(self.STDIN_FILENO)
17:26:04 termios.error: (25, 'Inappropriate ioctl for device')
17:26:04 Build step 'Execute shell' marked build as failure
17:26:05 Finished: FAILURE

I 'я искал эту ошибку, и все, что я нашел, не работает для меня, например:

1- Execute pipenv shell --fancy

2 - если я попадаю на машину Jenkins и запускаю оболочку pipenv, она проходит через

root@ip:~/.jenkins/workspace/Midhaz-Back-New-MR# pipenv shell
+ pipenv shell
Loading .env environment variables…
Launching subshell in virtual environment…
root@ip:~/.jenkins/workspace/Midhaz-Back-New-MR#  . /root/.local/share/virtualenvs/Midhaz-Back-New-MR-TllOp5eO/bin/activate
(Midhaz-Back-New-MR) root@ip:~/.jenkins/workspace/Midhaz-Back-New-MR# 

1 Ответ

0 голосов
/ 02 января 2019

Дженкинс - это неинтерактивная среда.Весь пользовательский ввод обнуляется, и это всего лишь консоль вывода.

Таким образом, вы не можете запустить интерактивную оболочку из нее без перенаправления стандартного ввода.

Возможно, вы хотите что-то неинтерактивное, но все жев вашей виртуальной среде, например:

pipenv run python my_script.py my_argument_1
...