2015年1月6日 星期二

[Hook] Trigger Jenkins build/polling from Web hooks of old version GitLab (設定 GitLab Web hooks 觸發 Jenkins 事件)



前情提要

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 參數沒有用。



(以下要安裝 Gitlab Hook Plugin 才有用)

通知全部 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



4 則留言:

  1. 謝謝你的分享,有兩個問題請教:
    1.想請問在您文章中的第三張圖中的「authentication token」應該去那裡產生?

    2.我有在jenkins上找到一個plugin叫做「gitlab-hook」。感覺起來所做的事與您在本文中的設定是一樣的,所以這個外掛可裝可不裝嗎?

    謝謝您

    回覆刪除
    回覆
    1. 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


      第二個問題早上再回覆你喔!

      刪除
    2. Hi HongEn,

      那時候有嘗試過這個 Plugin,
      整理一下下午再回覆你。

      刪除
    3. 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

      希望有解答到你的疑惑~

      刪除