使用node执行shell脚本设置一键更新gitbook当github push

版权声明:本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接 如有问题, 可发送邮件咨询. https://blog.csdn.net/weixin_37865166/article/details/89431971

原文地址: https://dsx2016.com/?p=448

➢ gitbook更新问题

使用gitbook上传到github pages设置上传即更新

然而github只有公共库可以设置pages,私人仓库是不可以设置的.

➢ 云服务器部署

更新gitbookgithub后,仍然需要手动更新一次云服务器git

使用ssh远程到云服务器,不仅繁琐,还容易出错(项目比较多的话)

➢ 两种更新方案

有一种方案是github利用webhook实现push时项目自动部署

另一种方案是在node中使用shell脚本(这里采用访问某特定API的形式)

➢ shell脚本

文件名test.sh

更新git仓库

#!/bin/sh
git pull

➢ node执行系统命令

node中设置子进程执行系统命令

以下是express+node当访问/shell api的时候,执行shell脚本

// api设置
router.get(`/shell`, function(req, res) {
    // 子进程
    var exec = require("child_process").exec;
    //需要执行的命令字符串
    var cli = "sh ./shell/test.sh";
    // 执行命令
    exec(cli, { encoding: "utf8" }, function(err, stdout, stderr) {
        // 如果抛出错误
        if (err) {
            console.log(`err`, err);
            // 返回结果
            res.send({
                code: -1,
                data: `一些错误`,
                msg: err
            });
            return;
        }
        // 如果没有错误,则执行命令成功
        console.log("stdout >>>>>>>>>>>>> " + stdout);
        console.log("stderr >>>>>>>>>>>>> " + stderr);
        // 返回结果
        res.send({
            code: 0,
            data: `更新成功`,
            msg: `
            ${stdout}
            >>>>>
            ${stderr}
            `
        });
    });
});

➢ Tips

由于使用express+node返回静态Html,所以shell只是拉去最新的静态资源,网站就会更新.

如果设置到服务端的修改,那么还要加上pm2等指令,比如pm2 restart server.js

前置条件:linux服务器上设置了git令牌,不需要通过https或者ssh密码的形式pull

猜你喜欢

转载自blog.csdn.net/weixin_37865166/article/details/89431971