摘要:當(dāng)我們利用來(lái)托管項(xiàng)目時(shí),每次部署項(xiàng)目都要走同樣的流程,敲擊同樣的命令行,尤其的我們的項(xiàng)目更是無(wú)法忍受這種重復(fù)工作。
當(dāng)我們利用github來(lái)托管項(xiàng)目時(shí),每次部署項(xiàng)目都要走同樣的流程,敲擊同樣的命令行,尤其的我們的node項(xiàng)目更是無(wú)法忍受這種重復(fù)工作。
那到底有沒(méi)有一種可以解放我們雙手,當(dāng)我們提交代碼后,服務(wù)器自動(dòng)執(zhí)行我們已經(jīng)制定好的命令行,答案是我們可以利用Github自有的Webhooks。
WebhooksWebhooks是來(lái)監(jiān)測(cè)你在github上的各種事件,我們可以通過(guò)定制它來(lái)監(jiān)測(cè)一個(gè)push事件,每當(dāng)我們提交代碼時(shí)Webhooks會(huì)被觸發(fā),這是我們可以通過(guò)配置一個(gè)HOST POST請(qǐng)求到你所需要的地址。
如何配置找到你在Github上的項(xiàng)目地址上的Setting的Webhooks,如下圖配置:
項(xiàng)目配置編寫(xiě)執(zhí)行shell命令
在項(xiàng)目根目錄下新建deployed.sh文件,輸入你想在服務(wù)器上執(zhí)行的命令行,如:
cd /front/docs/ git pull origin master
編寫(xiě)執(zhí)行腳本
在項(xiàng)目根目錄下新建deployed.js文件
var http = require("http") var spawn = require("child_process").spawn var createHandler = require("github-webhook-handler") var handler = createHandler({ path: "/pushCode", secret: "12345678" }) http.createServer(function (req, res) { handler(req, res, function (err) { res.statusCode = 404; res.end("no such location") }) }).listen(3000) handler.on("error", function (err) { console.error("Error:", err.message) }) handler.on("push", function (event) { console.log("Received a push event for %s to %s", event.payload.repository.name, event.payload.ref) rumCommand("sh", ["./deployed.sh"], function (txt) { console.log(txt) }) }) function rumCommand(cmd, args, callback) { var child = spawn(cmd, args) var response = "" child.stdout.on("data", function (buffer) { response += buffer.toString() }) child.stdout.on("end", function () { callback(response) }) }nginx配置
執(zhí)行腳本跑在了3000端口,我們服務(wù)器對(duì)應(yīng)啟用到 3000 端口
upstream test { server 127.0.0.1:3000; } server { location /pushCode { proxy_pass http://test; proxy_redirect off; } }部署項(xiàng)目
首次部署到服務(wù)器時(shí),仍然是需要我們手動(dòng)執(zhí)行命令git pull項(xiàng)目,當(dāng)我們?cè)诜?wù)器上clone下我們的項(xiàng)目后,在本地嘗試修改下代碼,然后再次提交,可看到后臺(tái)的日志
再次查看Webhooks
表示已經(jīng)自動(dòng)觸發(fā)了接口,項(xiàng)目自動(dòng)化部署成功。
管理應(yīng)用在服務(wù)器上執(zhí)行node命令后,當(dāng)我們離開(kāi)服務(wù)器后,實(shí)際上程序進(jìn)程關(guān)閉了,所以我們利用pm2來(lái)管理我們的node進(jìn)程。
在項(xiàng)目根目錄下新建pm2.json
[{ "name": "test", "script": "deployed.js", "env_dev": { "NODE_ENV": "development" }, "env_production": { "NODE_ENV": "production" } }]
把所有的代碼推送上服務(wù)器,進(jìn)入服務(wù)器項(xiàng)目目錄,執(zhí)行
// 啟動(dòng)命令 pm2 start pm2.json // 查看是否啟動(dòng) pm2 list // 查看日志 pm2 logs
本文感謝SkyCai提供的思路。原文地址
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/97129.html
摘要:簡(jiǎn)介我們?cè)诓渴鹞覀兊膽?yīng)用時(shí)我們一般會(huì)尋求一些云平臺(tái)服務(wù)器部署當(dāng)然也可以直接在服務(wù)器里拉取遠(yuǎn)程倉(cāng)庫(kù)的代碼當(dāng)然我們也可以實(shí)現(xiàn)通過(guò)鉤子來(lái)實(shí)現(xiàn)服務(wù)器與遠(yuǎn)程倉(cāng)庫(kù)代碼的同步這樣一來(lái)我們?cè)诒镜靥峤还δ芊种У絺}(cāng)庫(kù)中倉(cāng)庫(kù)也會(huì)同步到服務(wù)器這樣我們就無(wú)需自己手動(dòng) 簡(jiǎn)介 我們?cè)诓渴鹞覀兊膚eb應(yīng)用時(shí) 我們一般會(huì)尋求一些云平臺(tái)服務(wù)器部署 當(dāng)然也可以直接在服務(wù)器里拉取遠(yuǎn)程倉(cāng)庫(kù)的代碼 當(dāng)然我們也可以實(shí)現(xiàn)通過(guò)Webh...
摘要:使用框架實(shí)現(xiàn)自動(dòng)部署項(xiàng)目為了方便開(kāi)發(fā)測(cè)試或項(xiàng)目部署至服務(wù)器不那么繁瑣,搞一個(gè)自動(dòng)部署的小輪子也是必要的。同時(shí)配置項(xiàng)目托管平臺(tái)的個(gè)人私鑰或項(xiàng)目公鑰,保證能直接拉取。 gohook Python 使用 Tornado 框架實(shí)現(xiàn) WebHook 自動(dòng)部署 Git 項(xiàng)目 為了方便開(kāi)發(fā)測(cè)試或項(xiàng)目部署至服務(wù)器不那么繁瑣,搞一個(gè)自動(dòng)部署的小輪子也是必要的。 小輪子需要涉及到 Coding 項(xiàng)目托管平...
摘要:的設(shè)計(jì)模式的設(shè)計(jì)模式以持續(xù)集成持續(xù)測(cè)試持續(xù)交付和持續(xù)部署為中心,自動(dòng)化協(xié)作和持續(xù)監(jiān)控是中使用的一些其他設(shè)計(jì)模式。持續(xù)集成持續(xù)集成是不斷地將源代碼集成到一個(gè)新的構(gòu)建或發(fā)布的過(guò)程,源代碼可以在本地存儲(chǔ)中,也可以在或中。 showImg(https://segmentfault.com/img/remote/1460000010452455); 識(shí)別二維碼報(bào)名活動(dòng) 8月19日,來(lái)自微軟、數(shù)人...
摘要:?jiǎn)卧獪y(cè)試一個(gè)合格的庫(kù)應(yīng)該包含完整的單元測(cè)試。是的支持版,和是一樣的,它能夠直接運(yùn)行為后綴的單元測(cè)試文件。在目錄下加入然后執(zhí)行即可看到單元測(cè)試結(jié)果。 這篇文章主要是講述如何使用 TypeScript 編寫(xiě)一個(gè)完善,包含測(cè)試、文檔、持續(xù)集成的庫(kù),涵蓋了編寫(xiě)整個(gè)庫(kù)所需要的技術(shù)和工具,主要涵蓋: 項(xiàng)目目錄骨架 TypeScript 配置 使用 jest 單元測(cè)試 使用 vuepress 編寫(xiě)...
閱讀 3680·2021-11-24 10:25
閱讀 2677·2021-11-24 09:38
閱讀 1303·2021-09-08 10:41
閱讀 3075·2021-09-01 10:42
閱讀 2726·2021-07-25 21:37
閱讀 2057·2019-08-30 15:56
閱讀 977·2019-08-30 15:55
閱讀 2814·2019-08-30 15:54