1. 程式人生 > >jenkins 設置 gitlab web hooks

jenkins 設置 gitlab web hooks

.com logs 安裝 col ret run 提示 __main__ 人生

背景

接口自動化期望代碼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,request
app= Flask(__name__)

@app.route("/test",methods=[GET, POST])
def hello():
#       return "Hello World!"
        print(request.data);
        return request.data

if __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