Jenkins 項目構建之 常用的構建觸發器 與gitlab 配置webhook
一:Jenkins 項目構建常用的構建觸發器
1.1 觸發遠程構建
Trigger builds remotely .
通過URL加上相關指令,實現構建。優點在於我們可以使用命令或者代碼去執行,去觸發構建.
進入項目的配置頁面
在構建觸發器部分(Build Triggers)選擇觸發遠程構建(Trigger builds remotely (e.g., from scripts))
輸入自定義的token ,然后復制給出的URL
修改index.jsp 文件,並提交到gitlab(選做,只是為了看結果)
使用Jenkins的地址+復制的URL+自定義token,觸發遠程構建
在項目頁面,可以看到自動構建了一個新工程
訪問tomcat的8080端口,可以看到我們修改的首頁內容
1.2 其他工程構建后觸發
Build after other projects are build
某些環境的構建,相互之間彼此依賴,所以,有些環境必須先安裝。對於大型項目而言,會有多個工程需要構建,此時,就可以編排工程的構建順序,我們可以安排環境工程先構建。
創建一個pre_project的前置工程
配置項目web_demo_pipeline, 在前置項目pre_project構建后,自動觸發構建
修改index.jsp文件,構建前置項目
前置工程pre_project構建成功后,會自動觸發web_demo_pipeline 的構建
1.3 定時構建
Build periodically
定時字符串從左往右分別為: 分 時 日 月 周
一些定時表達式的例子:
- 每30分鍾構建一次:H代表形參 H/30 * * * * 10:02 10:32
- 每2個小時構建一次: H H/2 * * *
- 每天的8點,12點,22點,一天構建3次: (多個時間點中間用逗號隔開) 0 8,12,22 * * *
- 每天中午12點定時構建一次 H 12 * * *
- 每天下午18點定時構建一次 H 18 * * *
- 在每個小時的前半個小時內的每10分鍾 H(0-29)/10 * * * *
- 每兩小時一次,每個工作日上午9點到下午5點(也許是上午10:38,下午12:38,下午2:38,下午
- 4:38) H H(9-16)/2 * * 1-5
修改項目配置,選擇定時構建
1.4輪詢SCM
Poll SCM
輪詢SCM,是指定時掃描本地代碼倉庫的代碼是否有變更,如果代碼有變更就觸發項目構建。
Jenkins會定時掃描本地整個項目的代碼,增大系統的開銷
修改項目的配置,選擇輪詢SCM
修改代碼,提交gitlab
掃描到代碼倉庫變化,自動構建
二: gitlab 配置webhook 鈎子服務
2.1 gitlab 開啟 webhook 功能
使用root 賬戶登錄gitlab后台, 點擊扳手模樣的Admin Area --->Settings --->Network--->Outbound requests
進入后,再勾選"Allow requests to the local network from web hooks and services"
2.2 jenkins 下載插件,配置構建觸發器
Jenkins在下載插件頁面,搜索 gitlab,下載 GitLab 和 Generic Webhook Trigger Plugin 插件
Jenkins 配置項目的構建觸發器為Build when a change is pushed to GitLab. 並復制后面的URL
2.3 gitlab 在項目中添加webhook
Projects-->Explore projects--->選擇項目--->Settings--->Integrations
2.4 進行測試
當前添加webhook頁面--->點擊Test--->Push evects
2.5 webhook報錯解決
如果報錯 Hook executed successfully but returned HTTP 403 . 則 webhook服務成功,但是因為權限不夠,沒有Jenkins的訪問權限
在Jenkins頁面,Manage Jenkins --> Confifure System--->
去除 Enable authentication for '/project' end-point 的勾選,不用認證,再將下方的Gitlab connections 刪除
再回到之前的測試頁面,再次進行測試
2.6 進行webhook 構建
更改開發環境代碼,提交
Jenkins自動構建並發布