本身寫了個項目。爲小程序提供後端。之前都是用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 在哪