我正试着把
nodejs
每当我在github上更新代码时,该脚本就会自动更新我在AWS服务器上的代码。脚本使用
网状挂钩
。以下代码是调用的脚本
webhook_server.js
由于某些原因,每当我尝试运行脚本时,都会出现以下错误:
Error writing to log file: Error: EACCES: permission denied, open '/home/ubuntu/webhook-handler/webhook_server.log'
由于这是一个权限问题,我认为以下命令可以解决问题,但问题仍然存在:
sudo chmod 755 /home/ubuntu/webhook-handler
sudo chmod 644 /home/ubuntu/webhook-handler/webhook_server.log
以下是内容
webhook_server.js
文件
const express = require('express');
const bodyParser = require('body-parser');
const { exec } = require('child_process');
const fs = require('fs');
const app = express();
const port = 3002;
const logFile = '/home/ubuntu/webhook-handler/webhook_server.log';
const log = (message) => {
const timestamp = new Date().toISOString();
try {
fs.appendFileSync(logFile, `${timestamp} ${message}\n`);
} catch (err) {
console.error(`Error writing to log file: ${err}`);
}
};
app.use(bodyParser.json());
app.post('/webhook', (req, res) => {
log('\n===========================');
log('Received a webhook event');
// Verify the event is a push event
if (req.body.ref === 'refs/heads/main') {
log('Push event on main branch detected');
// Execute the script to update the code
exec('/home/ubuntu/update_code.sh', (error, stdout, stderr) => {
if (error) {
log(`Error executing script: ${error.message}`);
return res.status(500).send({ message: 'Error executing script' });
}
log(`stdout: ${stdout}`);
log(`stderr: ${stderr}`);
res.status(200).send({ message: 'Script executed successfully' });
});
} else {
log('Not a push event on main branch');
res.status(400).send({ message: 'Not a push event on main branch' });
}
});
app.listen(port, () => {
log(`Webhook handler listening at http://localhost:${port}`);
});