標籤:k&r 安裝 post請求 人生 commit img 返回 url pos
背景
介面自動化期望代碼push後觸發實現持續整合,代碼push後,自動化執行jenkins的job。
步驟準備工作
工具:jenkins,gitlab
jenkins需要安裝外掛程式:git plugin,gitlab hook plugin , gitlab plugin(有的外掛程式是內建的,缺什麼安裝什麼)
gitlab:確保有web hook許可權,這個跟公司的gitlab有關,入口settings下的web hooks如下:
確保gitlab跟jenkins的連通性
hook的大概原理其實很簡單:設定了web hooks後,當git項目觸發了event後會往你填寫的hooks URL發送一個post請求
那麼首先要確保gitlab跟jenkins伺服器的連通性
我這邊是在jenkins伺服器通過flask架構寫了一個測試的介面:
from flask import Flask,requestapp= Flask(__name__)@app.route("/test",methods=[‘GET‘, ‘POST‘])def hello():# return "Hello World!" print(request.data); return request.dataif __name__ == "__main__": app.run(host=‘0.0.0.0‘,debug=True,port=8080)
那麼通過POST請求訪問http://your-jenkins-server-ip:8080/test會返回你request的body資料
設定web hooks的URL為http://your-jenkins-server-ip:8080/test後儲存,
點擊“TEST HOOK”測試這個hook是否生效,正常的話,頁面提示200
設定jenkins
源碼管理設定
構建觸發器設定,這個URL是gitlab web hook那裡需要填寫的URL
設定完畢後,點擊儲存
設定gitlab的web hook
URL填寫jenkins上的那個URL,這裡的就是的http://your-jenkins-server-ip:port/project/smart
測試是否生效
在gitlab上對代碼進行update,然後commit;
去到jenkins查看job是否被執行:
小結
1. 需要弄清楚原理,是gitlab訪問設定的hook URL;
2. 當設定jenkins和gitlab都設定的沒問題,但TEST HOOK就是不通過的時候,需要思考為什麼有這種情況?於是懷疑是公司gitlab和自己搭建的jenkins網路不通;
3. 找了安全同事幫忙配置後,還是不通(懷疑人生了),思考可以通過什麼方法快速驗證網路還是不通過呢?於是嘗試自己寫一個簡單介面驗證;
jenkins 設定 gitlab web hooks