在Node.js的子进程上执行的Bash程序未显示echo

时间:2019-01-02 06:55:07

标签: node.js bash git

背景

我正在研究node.js + react项目。

我正在我的ubuntu服务器上制作自动部署系统,该系统具有我的来源。

因此,我制作了webhook.js服务器和deploy.sh文件。

webhook.js用于在我推送一些新的提交并执行deploy.sh bash程序时监听github的webhook发送的消息。

deploy.sh执行git pull origin master并重新启动服务器。

webhook.js

const secret = 'xxxxxxxx';

let http = require('http');
let crypto = require('crypto');

const exec = require('child_process').exec;

http.createServer(function(req, res){
  req.on('data', function(chunk){
    let sig = "sha1=" + crypto.createHmac('sha1', secret).update(chunk.toString()).digest('hex');

    if (req.headers['x-hub-signature'] == sig) {
      deploy(res);
    } else {
      console.log('un matched');
    }
  });
  res.end();
}).listen(8080);

function deploy(res){
  exec('/home/rpf5573/nodewebhook/deploy.sh', function(err, stdout, stderr){
    console.log('deploy.sh is called');
    if (err) {
      console.error(err);
      res.writeHead(404);
      return res.end();
    }
    res.writeHead(200);
    res.end();
  });
}

deploy.sh

cd /home/rpf5573/react-discovery-v2

echo "Pulling from Master" 

git pull origin master

echo "Pulled successfully from master"

echo "Restarting server..."

npm restart-server

echo "Server restarted Successfully"

那你怎么了?

我的deploy.sh剂量显示任何echo消息。 git pull origin master执行得很好,但仅回显消息不起作用!

如何查看回显消息?

这是因为deploy.sh是在其他shell上执行的吗?

0 个答案:

没有答案