本身写了个项目。为小程序提供后端。之前都是用nodejs本身写工具的。前阵子经过同事了解到 git 有一些 hook 能够帮咱们作这些操做,更合理和方便。用了 git hook 能够实现提交代码以后自动在服务器上部署。而不用手动去作一些操做。因此就查阅学习了一波。node
实现上述需求大概思路是,在 push 代码的时候用回调一个脚本或者方法来执行一些部署的操做。其中能够用 git 的 post-receive
这个 hook 来实现 push 完的时候,调用 shell 脚本。
也能够用 git webhook 在 push
完成的时候调用一个接口。而后本身写个部署的工具,对外暴露一个部署接口,提供给 git webhook 来调用。
我本身用了 gogs。若是在界面中操做的话就是以下两张图:linux
在项目的 Settings 中找到 webhooks ,而后输入对外的 payload url 便可。git
或者在项目的 Settings 中找到 git hooks,而后编辑 post-receiveweb
而后,就出现了 shell 脚本输入的界面。shell
梳理了大概的思路,下面就是作。虽然图形界面操做方便,可是通过查阅资料发现,直接在git项目中建立 git hooks 更方便。具体细节以下:
进入项目目录,找到 hooks 目录。而后看到以下目录结构npm
默承认能不存在 post-receive 这个文件,咱们能够复制一份 post-receive.sample 文件重命名为 post-receive。
而后再 post-receive 文件中写一些部署操做的 shell 脚本就能够了。
当前,个人项目是一个后端项目。因此首先,咱们须要把本项目文件直接 clone 到服务器的一个目录下 命令以下:json
sudo git --work-tree=/目标目录 --git-dir=/一般是.git结尾的项目目录 checkout -f
根据实际状况就改为本身的目录结构便可。
其次,咱们须要 npm install 而后再 npm run build,并且,npm run build 还应该在 npm install 执行完毕以后再执行。因此命令以下:小程序
npm install && npm run build
固然,若是咱们须要使用 pm2 ,直接在 package.json 中定义 build script 以下便可:后端
接着咱们会发现,当前用户多是git用户在调用 shell 脚本。因此咱们要先切换用户。shell 里边切换用户怎么写呢?方法以下:服务器
sudo su - root <<EOF 命令1; 命令2; EOF
注意,su 后边有个 - ,不加这个短横线表明直接切换用户了。中间写咱们要切换用户后执行的命令就能够了。
好了,贴出整个脚原本show一下:
而后保存文件后,在本地提交下代码试一下,齐活,正常从新部署了。
这个折腾的过程当中,发现一些比较实用的 linux 命令,这里再强化下咯:
whoami
我是谁
whereis node
查找 node 在哪