GO 使用Webhook 實現github 自動化部署

来源:https://www.cnblogs.com/phpper/archive/2020/05/25/12951970.html
-Advertisement-
Play Games

通常大家開發大部分是本地git push 提交,伺服器上git pull 手動更新。git 可以使用webhook實現自動部署。webhook是倉庫平臺的一個鉤子事件,通過hook 鉤子監聽代碼,回調通知(通知地址就是你在各個git倉庫平臺中填寫的webhook地址,一般在你的某個項目倉庫如mypr ...


通常大家開發大部分是本地git push 提交,伺服器上git pull 手動更新。git 可以使用webhook實現自動部署。
webhook是倉庫平臺的一個鉤子事件,通過hook 鉤子監聽代碼,回調通知(通知地址就是你在各個git倉庫平臺中填寫的webhook地址,
一般在你的某個項目倉庫如myproject.git裡面的設置中)倉庫平臺填寫的地址。
其實原理流程就是:

所以自動部署主要實現方式就是:

- 修改代碼 push

- github(其他倉庫平臺)發送請求給你的網站伺服器

- 網站伺服器收到更新請求,執行自動部署腳本

- 自動部署腳本執行代碼拉取,打包,修改文件等動作完成網站的更新部署

1. 下載github-webhook工具:

wget http://img.sgfoot.com/github-webhook1.4.1.linux-amd64.tar.gz

2. 運行github-webhook 安裝

tar -zxvf github-webhook1.4.1.linux-amd64.tar.gz
cp github-webhook /usr/bin/
chmod u+x /usr/bin/github-webhook

3.運行方式

預設埠: 2020,可以更改, http的路由: /web-hook
有效訪問地址: http://ip:2020/web-hook
-b 是shell腳本路徑參數
-s 是github webhook設置的密碼

參數說明:

# 非後臺運行
github-webhook -b [shell腳本路徑] -s [github webhook設置的密碼]

# 後臺運行
nohup github-webhook -b [shell腳本路徑] -s [github webhook設置的密碼] & 

# 定嚮日志輸出
nohup github-webhook -b ~/sh/你的腳本.sh -s hook密碼 >> ~/logs/webhook.log 2>&1 &

特性介紹

  • 直接運行二進位文件
  • 自定義腳本路徑
  • 自定義密碼
  • 自定義埠. 0 ~ 65535
  • 安靜模式
GLOBAL OPTIONS:
   --bash value, -b value    Execute the script path. eg: /home/hook.sh
   --port value, -p value    http port (default: 2020)
   --secret value, -s value  github hook secret
   --quiet, -q               quiet operation (default: false)
   --verbose, --vv           print verbose (default: false)
   --help, -h                show help (default: false)
   --version, -v             print the version (default: false)
翻譯:
GLOBAL OPTIONS:
   --bash value, -b value    Execute the script path. eg: /home/hook.sh 自定義腳本
   --port value, -p value    http port (default: 2020) 自定義埠,預設6666
   --secret value, -s value  github hook secret 自定義密碼, 不允許為空
   --verbose, --vv           print verbose (default: false) 列印更多詳細信息
   --quiet, -q               quiet operation (default: false) 安靜模式,預設關閉. -q 開啟,不輸出任何信息
   --help, -h                show help (default: false) 
   --version, -v             print the version (default: false)

上面介紹基本參數使用。好了,言歸正傳:

部署腳本編寫,該 shell 腳本的主要目的是從 github 拉取代碼,腳本內容很簡單,只做了目錄的簡要判斷,

代碼目錄存在則更新,不存在則克隆倉庫,工作目錄和倉庫名稱、地址請換成大家自己的。

cd ~/  
mkdir sh 
vim webhook.sh

webhook.sh:

#!/bin/bash

cd /www/wwwroot/Golang/src

if [ ! -d "easy-gin" ]; then
  git clone https://github.com/fantasylxh/easy-gin
fi

cd easy-gin
git pull

配置github webhook

  • 填寫你伺服器的地址, http://ip:2020/web-hook
  • 設置的密碼必須與伺服器運行github-webhook -s設置的密碼一致.

 

 

啟動本地的sh腳本:
github-webhook -b ~/sh/webhook.sh -s webhook123 >> ~/logs/webhook.log 2>&1 &

 
註意:這的webhook123 是我githup中webhook設置滴密碼。

確認githup webhook連接是否正常:

測試webhook是否生效

git push後, 就可以看到github推送的信息,比如本地我新增push一個文件:

 執行Commit->push 之後,我們再看伺服器代碼是否自動更新:

 

到此:webhook 通訊正常。 sh腳本沒有驗證當前分支,只做了簡單的pull,可以帶上-f 強制更新,有興趣的博友可以完善下sh。

歡迎拍磚留言。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄:andorid jar/庫源碼解析 Apktool.jar: 作用: 1、用於對APK文件進行解包,成可以讀的smali和xml,png等資源文件。 2、同時,把解碼之後的數據,重新打包成APK文件。 慄子: 使用命令的方式使用 1、apktool d xxx.apk // 解碼 apk文件 ...
  • 一,JavaScript是什麼? 1,JavaScript簡稱:js,是一種瀏覽器解釋型語言,嵌套在HTML文件中交給瀏覽器解釋執行。主要用來實現網頁的動態效果,用戶交互及前後端的數據傳輸等。 2,JavaScript 組成 1,核心語法 - ECMAScript (ES5-ES6) 規範了Java ...
  • 在開發大型Web應用或複雜交互的網站,不免會遇到一些頁面性能瓶頸的問題。本篇介紹一下如何利用Chrome的性能面板分析網站的性能瓶頸,應該對你有所幫助。 註意,為了減少一些Chrome插件對性能評估產生噪音,最好打開隱身模式訪問頁面進行測試。 將Chrome切換到隱身模式,然後打開該頁面進行測試: ...
  • 在組件特定時期,觸發的條件,統稱為生命周期; + 組件生命周期分為三部分: 組件創建階段 :組件創建階段的生命周期函數,有一個顯著的特點:創建階段的生命周期函數,組件一生只執行一次; componentWillMount:組件將要被掛載,此時還沒有開始渲染虛擬dom render:第一次開始渲染真正 ...
  • # 6.動畫 - 1. transition 過渡 transition-property:all;//監聽屬性 transition-duration:1s;//過渡時間 transition-timing-function:linear;//運動速率 transition-delay:1s;// ...
  • 老實說,在實際編程中,訪問者設計模式應用的並不多,至少我是這樣認為的,因為它的主要使用場景並不多。那麼肯定會有人問,訪問者模式的主要使用場景是什麼呢?繼續往下看便知。新聞聯播看多了之後首先要說的是,設計模式中的“訪問者”和現實生活中的“訪問者”其本質是一回事。雖然設計模式中的不太熟悉,但現實生活中的 ...
  • MMU存在的意義 [導讀] 本文從記憶體管理的發展歷程角度層層遞進,介紹MMU的誕生背景,工作機制。而忽略了具體處理器的具體實現細節,將MMU的工作原理從概念上比較清晰的梳理了一遍。 MMU誕生之前: 在傳統的批處理系統如DOS系統,應用程式與操作系統在記憶體中的佈局大致如下圖: 應用程式直接訪問物理內 ...
  • [導讀] 前文描述了棧的基本概念,本文來聊聊堆是怎麼會事兒。RT Thread 在社區廣受歡迎,閱讀了其內核代碼,實現了堆的管理,代碼設計很清晰,可讀性很好。故一方面瞭解RT Thread內核實現,一方面可以弄清楚其堆的內部實現。將學習體會記錄分享,希望對於堆的理解及實現有一個更深入的認知。 註,文 ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...