Jenkins:the input device is not a TTY
如果您在使用jenkins执行docker容器内命令时,使用的了-t
参数
1 | docker exec -it test_container bash build.sh |
可能会有如下报错
1 | the input device is not a TTY |
由于docker的-t
参数会为输出添加一个伪终端Allocate a pseudo-TTY
,所以jenkins无法捕捉到输出,您只需要去掉-t
参数即可
1 | docker exec -i test_container bash build.sh |
pseudo-TTY:在Linux中,TTY也许是跟终端有关系的最为混乱的术语。TTY是TeleTYpe的一个老缩写。Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,和古老的电报机区别并不是很大。之后,当计算机只能以批处理方式运行时(当时穿孔卡片阅读器是唯一一种使程序载入运行的方式),电传打字机成为唯一能够被使用的“实时”输入/输出设备。最终,电传打字机被键盘和显示器终端所取代,但在终端或TTY接插的地方,操作系统仍然需要一个程序来监视串行端口。一个getty“Get TTY”的处理过程是:一个程序监视物理的TTY/终端接口。对一个虚拟网络服务器(VNC)来说,一个伪装的TTY(Pseudo-TTY,即假冒的TTY,也叫做“PTY”)是等价的终端。当你运行一个xterm(终端仿真程序)或GNOME终端程序时,PTY对虚拟的用户或者如xterm一样的伪终端来说,就像是一个TTY在运行。“Pseudo”的意思是“duplicating in a fake way”(用伪造的方法复制),它相比“virtual”或“emulated”更能真实的说明问题。而在的计算中,它却处于被放弃的阶段。
tty也是一个Unix命令,用来给出当前终端设备的名称。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。
系列文章
jenkins的自动化配置
jenkins的tty问题
jenkins的反向代理配置
jenkins的java11问题
jenkins的私钥格式错误问题
jenkins的webhooks配置
jenkins设置任务超时⏱(多种方法:图文并茂🖼)
参考
- nginx配置禁特定路径下的反向代理
- nginx配置禁止访问目录或禁止访问目录下的文件
- nginx跨域处理
- 带你深入了解nginx基本登录认证(包含配置步骤)
- 使用htpasswd生成密码
- 使用openssl生成密码
- 使用python生成密码
- 你的nginx登录认证安全吗?
- 配置http基本验证(Basic Auth)
- Centos安装htpasswd_Nginx中使用htpasswd
- 带你深入了解nginx基本登录认证(包含所有配置步骤和深度解析)
- 带你深入了解nginx基本登录认证:使用htpasswd生成密码
- 带你深入了解nginx基本登录认证:使用openssl生成密码
- 带你深入了解nginx基本登录认证:使用python生成密码