關于node應用自動化部署的想法1.0

在我們本地開發(fā)好一個 NodeJS 項目,如果想要給別人看的話一般來說都是需要部署到服務器上面的部默。如果你使用 github 或者 coding 這里代碼托管的服務,只需要在服務器安裝好環(huán)境且安裝好 git 之后松捉,把項目 clone 下來然后使用 pm2 來啟動自己的 NodeJS 項目就行了啸箫。

但是,如果我更新了代碼到了遠程倉庫去了堂鲜,而服務器還是以前的老代碼,你還是需要登錄到服務器上面并且用 git 命令把最新的代碼拉下來护奈,在重啟一次項目缔莲。久而久之,如果更改代碼頻繁的話霉旗,每次都是需要自己登錄到服務器上手動部署也不是一個好辦法痴奏。

自動化部署.png

如上圖,博主要做兩個入口

1.一個自動化部署最新的代碼

2.一個客戶端專門手動部署歷史提交的代碼

博主1.0的初步想法是當我把編譯后的項目(記住是1.0做的是編譯后的處理)丟到coding中時,那么coding就有一條最新提交的記錄和代碼厌秒,這個時候webhook就會發(fā)出請求读拆,發(fā)送到當前test/pro/dev分支上,然后自動部署到環(huán)境中鸵闪。

本地服務(鉤子函數(shù))

當我把git庫建在本地的時候檐晕,我可以在git中寫一個鉤子函數(shù),創(chuàng)建post-receive ,或者任意action中定義操作辟灰。我們在post-receive中添加任意shell命令个榕,當我提交代碼的時候,git就會緊接著執(zhí)行post-receive中的命令芥喇。

#!/bin/sh
unset GIT_DIR
MYDIR=ipaiban-admin
cd mnt/work/$MYDIR
git pull
git checkout dev
...任意shell

本地服務缺點:
1.需要時間西采。不知道怎么搭建的同學,成本太高了
2.傳輸速度肯定不如coding继控,穩(wěn)定性也不如coding(如果說技術實力比coding好械馆,那就只能說好吧,博主只是個低級程序員武通,好想看看外面的世界O(∩_∩)O哈哈~)
3.沒有倉庫霹崎,提交歷史...現(xiàn)成的api

說到這里,大哥厅须,你就別造輪子了仿畸。
因為博主不打算用在本地服務上,所以就不多講解了朗和!

coding

coding就不多說了错沽,內(nèi)地版的github,有很多方便的功能眶拉,還有就是服務幾乎免費千埃。只是只能兩個項目私有!且有 WebHook 這種好東西忆植,怎么不拿來用一用呢放可。

WebHook

webhook,可以說類似于鉤子函數(shù)朝刊。只不過需要我們專門寫一個服務接受webhook的請求耀里!
這里會用到,代碼貼出來

const http = require('http')
var child_process = require('child_process');
const createHandler = require('coding-webhook-handler')
const handler = createHandler({
  path: '/',
  token: 'lucifer' // 在 coding 上面可以填寫一個 token
})
const rumCommand = (cmd, args, callback) => {
    const child = child_process.spawn(cmd, args)
    let response = ''
    child.stdout.on('data', buffer => response += buffer.toString())
    child.stdout.on('end', () => callback(response))
}

http.createServer((req, res) => {
  handler(req, res, function(err) {
    res.statusCode = 404
    res.end('no such location')
  })
}).listen(7777)

handler.on('error', err => {
  console.error('Error:', err.message)
})

handler.on('*', event => {
rumCommand('sh', ['./test.sh'], txt => {
      console.log("okokoko")
  })
})

在這個文件下有一個test.sh文件,就是專門執(zhí)行代碼拉取的

#/bin/sh
cd ../../troublemaker/
rm -rf web-pc-pro
git clone https://git.coding.net/troubleMakerTeam/web-pc-pro.git;
cd web-pc-pro;
cnpm install;
pm2 start test-web-pc-pro.js;
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拾氓,一起剝皮案震驚了整個濱河市冯挎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咙鞍,老刑警劉巖房官,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異续滋,居然都是意外死亡翰守,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門疲酌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜡峰,“玉大人,你說我怎么就攤上這事∈率荆” “怎么了早像?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肖爵。 經(jīng)常有香客問我卢鹦,道長,這世上最難降的妖魔是什么劝堪? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任冀自,我火速辦了婚禮,結(jié)果婚禮上秒啦,老公的妹妹穿的比我還像新娘熬粗。我一直安慰自己,他們只是感情好余境,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布驻呐。 她就那樣靜靜地躺著,像睡著了一般芳来。 火紅的嫁衣襯著肌膚如雪含末。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天即舌,我揣著相機與錄音佣盒,去河邊找鬼。 笑死顽聂,一個胖子當著我的面吹牛肥惭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播紊搪,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蜜葱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了耀石?” 一聲冷哼從身側(cè)響起笼沥,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娶牌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馆纳,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡诗良,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鲁驶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鉴裹。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出径荔,到底是詐尸還是另有隱情督禽,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布总处,位于F島的核電站狈惫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鹦马。R本人自食惡果不足惜胧谈,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荸频。 院中可真熱鬧菱肖,春花似錦、人聲如沸旭从。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽和悦。三九已至退疫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摹闽,已是汗流浹背蹄咖。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留付鹿,地道東北人澜汤。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像舵匾,于是被迫代替她去往敵國和親俊抵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理坐梯,服務發(fā)現(xiàn)徽诲,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 1.什么是 Git Hooks 如同其他許多的版本控制系統(tǒng)一樣吵血,Git 也具有在特定事件發(fā)生之前或之后執(zhí)行特定腳本...
    就叫yang閱讀 3,273評論 3 11
  • 2017年7月3日蹋辅,河南科技學院文法學院八名“大山小愛”大學生黨員暑期義務支教服務隊赴河南省輝縣市南村鎮(zhèn)劉家池村進...
    侯靜宇閱讀 248評論 0 1
  • 曾經(jīng)有一個女孩钱贯,她愛上了大海。 她甚至羨慕海的女兒侦另,能被大海擁抱秩命,能與這片無邊際的藍色共生死尉共。 周圍的海島居民都不...
    蠢淳閱讀 389評論 3 1