2015-09-30 95 views
1

我花了幾天的時間嘗試不同的方法來在接受合併請求時獲取Jenkins觸發器。不幸的是,我無法在我們的系統上得到任何東西。我嘗試過不同的插件,從Jenkins的一面觸發GitLab,但他們似乎也不工作。添加參數化的字符串並將標記添加到URL的末尾,我已經嘗試過所有 - 可能不正確的順序,我不確定。如何觸發Jenkins在接受GitLab合併請求後啓動構建

我想要一個很好的配置,告訴我我需要設置哪些設置以及使用哪些插件。我已經上傳了大部分webhook和合並請求插件的插件,但沒有一個真正起作用。

然後,接下來的問題是如何調試從GitLab傳遞給Jenkins的內容?你看看系統日誌嗎?這裏似乎有很多東西,並且與/var/log/Jenkins/jenkins.log文件相同。

任何幫助/建議非常感謝。

GitLab版本:7.12.2 詹金斯版本:1.620

+0

你使用的是GitLab社區版還是企業版?如果您使用的是Enterprise Edition,則可以按照以下文檔進行操作: http://docs.gitlab.com/ee/integration/jenkins.html它具有關於配置Jenkins CI服務的說明。不幸的是,Community Edition沒有這項服務。 –

回答

0

我知道這是一個老問題,但這裏是我的設置使用declarative pipelines上GitLab CE 12年8月13日和詹金斯2.46.2這樣做,和Gitlab插件1.4.5和Gitlab鉤子插件1.4.2。這些步驟也可能適用於最新版本。

  • 兩個單獨的管道作業
    • 第一任務是專門爲MR建立
    • 第二個是用於主分支/回購其中MR被合併到
  • 兩種作業有生成觸發器「生成當更改被推送到GitLab」啓用
    • MR作業有foll由於事件已啓用
      • 合併請求事件(和推動重建源和目標)
    • 主作業不僅具有推送事件觸發有效
    • 評論(以及一些評論),但也有在高級選項來過濾分支(我只用主的名字)

然後,管道腳本這個樣子 MR

checkout ([ 
     $class: 'GitSCM', 
     branches: [[name: "${env.gitlabSourceNamespace}/${env.gitlabSourceBranch}"]], 
     extensions: [ 
     [$class: 'PruneStaleBranch'], 
     [$class: 'CleanCheckout'], 
     [ 
      $class: 'PreBuildMerge', 
      options: [ 
     fastForwardMode: 'NO_FF', 
      mergeRemote: env.gitlabTargetNamespace, 
      mergeTarget: env.gitlabTargetBranch 
      ] 
     ] 
     ], 
     userRemoteConfigs: [ 
     [ 
      name: env.gitlabTargetNamespace, 
      url: env.gitlabTargetRepoSshURL 
     ], 
     [ 
      name: env.gitlabSourceNamespace, 
      url: env.gitlabSourceRepoSshURL 
     ] 
     ] 
     ]) 

checkout([ 
     $class: 'GitSCM', 
     branches: [[name: '*/master']], 
     extensions: [ 
     [$class: 'PruneStaleBranch'], 
     [$class: 'CleanCheckout']], 
     userRemoteConfigs: [[url: '<my-git-url>']]]) 

這給了我兩份工作。 MR作業依賴於GitLab插件來定義檢出,合併和構建的源和目標回購和分支。主工作只會建立主倉庫。

最後一步是在GitLab中配置webhooks以進行回購。當您在GitLab一個網絡掛接,它會要求提供以下信息:

  • 端點URL(這是在詹金斯任務中發現了下生成觸發部分)
  • 活動(符合從詹金斯作業到事件這裏)
  • SSL驗證(取決於你和你的網絡配置)

而且你應該做的事!