如何让pm2和jenkins运行'sudo npm start'?

时间:2017-10-30 11:01:20

标签: node.js ubuntu jenkins pm2

我已经添加了jenkins用户以获得所有权限。

jenkins ALL=(ALL) NOPASSWD: ALL

还将pm2全局安装,pm2需要运行命令

sudo npm start

因为构建过程需要创建一些目录,如果我在app1目录中运行sudo npm start它完全正常,但是使用pm2命令会抛出访问错误

sudo pm2 start config.js

config.js

  module.exports = {
      apps : [{
        name   : "app1",
        cwd : "./my-dir/app1,
        script : "sudo npm",
        args : "start"
      },{
        name   : "app2",
        cwd : "./my-dir/app2",
        script : "npm",
        args : "start"
      }]
    }

pm2权限或用户权限是否有误?

1 个答案:

答案 0 :(得分:1)

不是使用所有 sudo 权限运行命令,而是创建您希望授予应用的最少权限的用户。

您已经将 jenkins 设置为使用 sudo 而没有密码,因此您可以使用以下命令以具有最低权限的其他用户身份从 jenkins 运行 pm2

sudo su - username -c 'pm2 start config.js'

以上命令将以指定用户身份运行