前情提要
1. 在 GitLab 的 Web Hooks 中,有四種 event 可以選擇。2. 在 Jenkins 中,build event trigger 和 polling event trigger 的差異在於,polling 會在檢查到有更新才 build。
GitLab
步驟 3.
只跑特定 Job
For triggering build event
http://User:password@your_jenkins_url/job/your_jenkins_job_name/build?token=token_in_jenkins_job_settings
User 和 password 是 Jenkins 上的使用者帳號(第一個字母要大寫)、密碼,
並且這個使用者的權限至少要有 Overall 的 Read 和 Job 的 Read,如下圖。
token_in_jenkins_job_settings 則為在 Jenkins 端的設定 (Job -> Configure -> Build Triggers),如下圖。
http://User:password@your_jenkins_url/job/your_jenkins_job_name/build?token= token_in_jenkins_job_settings&cause=testingHook
可以多帶一個參數 cause,內容為備註內容,到 Jenkins 會顯示如下圖。
For triggering polling event
http://User:password@your_jenkins_url/job/your_jenkins_job_name/polling?token=token_in_jenkins_job_settings
同 build event triggering,只有後面 build 換成 polling,
另外,在 polling event trigger 帶 cause 參數沒有用。
通知全部 Jobs,讓 Jenkins 自行尋找跟這次 event 的 ref (通常是分支) 有相關的 Job
For triggering build event
http://your_jenkins_url/gitlab/build_now
For triggering polling event
http://your_jenkins_url/gitlab/notify_commit
上面這兩支 API 也可以帶參數設定,文件參考:
https://github.com/elvanja/jenkins-gitlab-hook-plugin
https://github.com/elvanja/jenkins-gitlab-hook-plugin
謝謝你的分享,有兩個問題請教:
回覆刪除1.想請問在您文章中的第三張圖中的「authentication token」應該去那裡產生?
2.我有在jenkins上找到一個plugin叫做「gitlab-hook」。感覺起來所做的事與您在本文中的設定是一樣的,所以這個外掛可裝可不裝嗎?
謝謝您
Hi,第一個問題的 authentication token 是由自己定喔!
刪除假設在 Jenkins 裡面設定為「guuueons」,則呼叫 API 的方式:
http://User:password@your_jenkins_url/job/your_jenkins_job_name/build?token= token_in_jenkins_job_settings&cause=testingHook
中的「token_in_jenkins_job_settings」就是「guuueons」。
舉例:
User: testUser
Password: testPassword
My Jenkins Url: 127.0.0.1
My Jenkins Job Name: Test_Job
Token in Jenkins Job Settings: guuueons
呼叫的 API 則為
http://TestUser:testPassword@127.0.0.1/job/Test_Job/build?token=guuueons&cause=testingHook
第二個問題早上再回覆你喔!
Hi HongEn,
刪除那時候有嘗試過這個 Plugin,
整理一下下午再回覆你。
Hi HongEn,
刪除Gitlab Hook Plugin 的部分,也可以做到類似的效果喔~
我的文章中,前半部是不需要裝 Gitlab Hook Plugin 就可以做的,
最後一個部分是裝 Gitlab Hook Plugin 才可以做的,
包括
http://your_jenkins_url/gitlab/build_now
http://your_jenkins_url/gitlab/notify_commit
(文章中已補上需要安裝 Gitlab Hook Plugin 的提醒)
Gitlab Hook Plugin 的 API 還可以帶參數,
文件在 https://github.com/elvanja/jenkins-gitlab-hook-plugin
希望有解答到你的疑惑~