We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
以前部署都是直接 github page 或整包丟到 nas 上 (靜態用Nginx開啟 8080 port; nodejs 則是 ssh 到 機器上 node index.js), 每次更新一次版本都要做一次重複的動作, 實在是太麻煩了, 所以找找看有沒有實現 CI/CD 的方案, 大致看了一下有兩個不錯的服務可以用
node index.js
CI/CD
部署最方便, 只要下指令 now, 就可以完成部署, 而且可以加入 now.json 去執行 package.json 的 script, 但必須把 server 端的code 寫成 lambda (server less) 架構, 所以先不考慮, 之後再研究這種架構有什麼好處
now
now.json
lambda (server less)
其實部署也算方便, 而且 heroku 看到 package.json 就會知道部署的是 nodejs, 並執行 npm run build && npm run start, 這也算是直接完成了 CI/CD, 不過當初部署完才發現免費版無法在部署的機器上對外發出 request (付費版也有流量限制), GG
npm run build && npm run start
最後... 還是把程式部署在自己的機器上比較方便, 那就自己來實現 CI/CD
git init 是建立一個普通的倉儲, git init --bare 則是建立前者 .git 資料夾裡面的東西, 並且是不能瀏覽或修改倉儲內的東西的
git init
git init --bare
.git
$ cd volume1/HelloGit #這名字有點憨 $ mkdir deploy.git $ cd deploy.git $ git init --bare
$ cd hooks $ cp post-update.sample post-update $ chmod 777 post-update $ vi post-update
先隨便 echo 測試看看
#!/bin/sh unset GIT_DIR echo "done~~~~~~" exit 0
$ git remote add deploy root@ip:/volume1/HelloGit/deploy.git $ git push deploy master
看到 done~~~~~, 看來是成功了
$ cd ~/www $ git clone /volume1/HelloGit/deploy.git $ chmod 777 -R ../deploy
pm2
pm2 (performance manager) 是一個管理 nodejs server 運行狀態的一個模組, 可以幫你管理附負載平衡, 實現 hot reload 等等的功能
$ npm install -g pm2
測試是否安裝成功
$ pm2 -v
post-update
#!/bin/sh unset GIT_DIR NowPath=`pwd` DeployPath="/volume1/homes/b3589481400/www/deploy" cd $DeployPath git add . -A && git stash git pull origin master npm install npm run build pm2 restart all cd $NowPath echo "deploy success !" exit 0
之後本地端再改個東西 push 一次
這時發生了問題... npm & pm2 command not found !!??
npm & pm2 command not found
後來找到這篇 解答
把 #!/bin/sh 改成 #!/bin/bash -l
#!/bin/sh
#!/bin/bash -l
-l 參數的意思是執行指令時, 是在login 的 shell 裡執行, 以此例來說就是繼承 b3589481400 這個使用者的路徑和 shell 設定值, 這樣就能使用 npm 等等的指令了
npm
...再 push 一次試試看
大功告成 !!
The text was updated successfully, but these errors were encountered:
No branches or pull requests
用 git hook 實現自動化部署
前言
以前部署都是直接 github page 或整包丟到 nas 上 (靜態用Nginx開啟 8080 port; nodejs 則是 ssh 到 機器上
node index.js
), 每次更新一次版本都要做一次重複的動作, 實在是太麻煩了, 所以找找看有沒有實現CI/CD
的方案, 大致看了一下有兩個不錯的服務可以用now.sh
部署最方便, 只要下指令
now
, 就可以完成部署, 而且可以加入now.json
去執行 package.json 的 script, 但必須把 server 端的code 寫成lambda (server less)
架構, 所以先不考慮, 之後再研究這種架構有什麼好處heroku
其實部署也算方便, 而且 heroku 看到 package.json 就會知道部署的是 nodejs, 並執行
npm run build && npm run start
, 這也算是直接完成了CI/CD
, 不過當初部署完才發現免費版無法在部署的機器上對外發出 request (付費版也有流量限制), GG自己實現 git hook
最後... 還是把程式部署在自己的機器上比較方便, 那就自己來實現
CI/CD
在 nas 上初始化 git 倉儲
git init
是建立一個普通的倉儲,git init --bare
則是建立前者.git
資料夾裡面的東西, 並且是不能瀏覽或修改倉儲內的東西的設置 hook
$ cd hooks $ cp post-update.sample post-update $ chmod 777 post-update $ vi post-update
先隨便 echo 測試看看
在本地端加入 remote server repo
看到 done~~~~~, 看來是成功了
在根目錄部署點 clone server repo
部署的機器上安裝
pm2
pm2 (performance manager) 是一個管理 nodejs server 運行狀態的一個模組, 可以幫你管理附負載平衡, 實現 hot reload 等等的功能
測試是否安裝成功
修改
post-update
之後本地端再改個東西 push 一次
這時發生了問題...
npm & pm2 command not found
!!??後來找到這篇 解答
把
#!/bin/sh
改成#!/bin/bash -l
-l 參數的意思是執行指令時, 是在login 的 shell 裡執行, 以此例來說就是繼承 b3589481400 這個使用者的路徑和 shell 設定值, 這樣就能使用
npm
等等的指令了...再 push 一次試試看
大功告成 !!
The text was updated successfully, but these errors were encountered: