jenkins 設置 gitlab web hooks


背景

接口自動化期望代碼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. 找了安全同事幫忙配置后,還是不通(懷疑人生了),思考可以通過什么方法快速驗證網絡還是不通過呢?於是嘗試自己寫一個簡單接口驗證;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM