coding 是什么?
類似github,應該說是封裝github功能的代碼管理平台,國內私有庫。
webhook是什么?
webhook是一種api概念,指的是請求來源不是前端,而是推送。使得請求更具有實時性,不需要一直輪詢。
我們使用的是coding提供的webhook服務,它監聽我們對代碼庫做的一些操作,事件觸發,然后發送指定請求,服務器接收請求然后做出對應操作。
1、coding 新增webhook,監聽push請求
coding上新增webhook完成之后,會發送一條測試請求,且如果有觸發條件,也會發送請求。
如果沒有設置好接受請求的項目,一般請求是不通的。
2、編寫接收請求服務器
webhook上的url調的就是我們這個服務器上的api。 這個服務器很簡單。網上代碼有很多版本,php版、node.js版、pyhon版。內容都是接收請求,然后執行shell命令。其實實現該功能即可,與語言無關。因為我上述的而語言都不會。
java編寫:
簡單構建一個web項目,接收請求,根據請求url執行對應的shell代碼。shell代碼一般內置在linux服務器的指定位置。
代碼片段:
****.sh里面寫的什么呢?
簡單的構建命令:
注意:在服務器上,要對指定用戶賦予該可執行文件的執行權力。
如:chmod 777 rebuild.sh;
3、為接受服務所在用戶授權,使其能夠拉取代碼,執行可執行文件
設置coding免密拉取代碼
免密拉取代碼也就是使用ssh公私鑰的形式進行交互。
拿到服務器用戶的公鑰:一般為用戶目錄下的.ssh/id_rsa.pub
如果沒有,則執行命令生成:
將用戶公鑰添加為項目的部署公鑰:
添加完之后,試試在服務器能不能免密拉取代碼。如果不能,仍要用戶名密碼,檢查你的代碼是否是以ssh方式進行git數據傳輸的。
基本就是這個樣子了。
編寫好接受服務器之后,注意測試外網是否可以訪問,需要nginx設置還是開放端口。修改對應好webhook中的url。注意shell文件是否運行報錯,是否有權限運行等等。