解决Jenkins执行sudo命令时报错

在Jenkins的使用过程中,如果在脚本中使用到sudo命令,就有可能出现如下的错误:

sudo: no tty present and no askpass program specified

这是因为Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行异常。

解决方案

  1. 在Jenkins宿主服务器上运行如下命令

    1
    sudo visudo
  2. 在文件末尾加上一行

    1
    jenkins ALL=(ALL) NOPASSWD: ALL
  3. 保存文件(注意保存时修改文件名,后缀不要加上默认的.tmp,即可覆盖原文件)

    1
    Ctrl+O
  4. 退出编辑

    1
    Ctrl+X
  5. 重启Jenkins服务

    1
    sudo /etc/init.d/jenkins restart

    参考