Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pipenv shell in Jenkins return the issue termios.error: (25, 'Inappropriate ioctl for device')

I have a problem with my Jenkins that when I run a Job, Jenkins follow these steps:

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

At this step is showing this error:

+ 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've searched for this error and everything I found doesn't work for me, for instance:

1- Execute pipenv shell --fancy

2 - If I get in Jenkins machine and run pipenv shell it goes through

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# 
like image 478
Henrique Fleury Avatar asked Jan 02 '19 20:01

Henrique Fleury


1 Answers

Jenkins is a non-interactive environment. All user input is nullified, and it's just an output console.

So you cannot run an interactive shell from it without redirection of the standard input.

You probably want something non-interactive but still in your virtual environment like:

pipenv run python my_script.py my_argument_1
like image 68
Jean-François Fabre Avatar answered Sep 20 '22 10:09

Jean-François Fabre