当前位置: 首页 > 后端技术 > Node.js

使用githook实现nodejs项目自动部署

时间:2023-04-03 17:09:31 Node.js

需求场景我自己写了一个项目。为小程序提供后端。以前都是用nodejs自己写工具。前段时间通过同事了解到git有一些hooks可以帮助我们做这些操作,比较合理方便。有了githook,代码提交后可以自动部署到服务器上。而不是手动进行一些操作。于是查了一下研究了一波。需求分析实现上述需求的大致思路是在推送代码的时候回调一个脚本或者方法来进行一些部署操作。其中git的post-receivehook可以用来在推送结束时调用shell脚本。也可以在推送完成后使用gitwebhook调用接口。然后自己写一个部署工具,对外暴露一个部署接口,提供给gitwebhook调用。我自己用gogs。如果在界面中操作,就是下面两张图:在项目的Settings中找到webhooks,然后输入外部payloadurl。或者在项目的Settings中找到githooks,然后编辑post-receive,然后出现shell脚本输入界面。具体的实现细节已经梳理了大概的思路,下面就是动手了。图形界面虽然操作简单,但是查阅资料后直接在git项目中创建githooks更方便。具体如下:进入工程目录,找到hooks目录。然后看到下面的目录结构中可能默认不存在post-receive文件,我们可以复制一个post-receive.sample文件,重命名为post-receive。然后在post-receive文件中写一些部署操作的shell脚本。目前,我的项目是一个后端项目。所以首先,我们需要将这个工程文件直接clone到服务器的一个目录下。命令如下:sudogit--work-tree=/targetdirectory--git-dir=/通常以.git结尾的项目目录checkout-f根据实际情况可以改成自己的目录结构。其次,我们需要npminstall,然后npmrunbuild,npminstall完成后要执行npmrunbuild。所以命令如下:npminstall&&npmrunbuild当然,如果我们需要使用pm2,我们可以直接在package.json中定义构建脚本如下:然后我们会发现当前用户可能是git用户调用shell脚本。所以我们必须先切换用户。如何在shell中切换用户?方法如下:sudosu-root<