一千萬個為什麽

搜索

詹金斯管道和存儲拉請求生成器不工作公關創建/更新



以下是實現使用Jenkins管道所需的要求,我是Jenkins管道的新蜂。

  • 完成開發工作並將其更改推送後 Bitbucket用戶創建一個拉取請求。
  • 為了批準拉取請求,我們需要至少一次成功 詹金斯建立。因此我們只想得到build的結果 代碼檢入拉取請求。
  • 創建/更新拉取請求時,Jenkins將被觸發 自動進行真正的持續集成。
  • 構建結果應報告給Bitbucket。

用於正常自由泳項目的上述過程的已使用“隱藏拉取請求生成器”和隱藏通知器

我們需要使用Jenkins管道遷移類似的功能,所以創建了jenkins作業如下。

enter image description here

用於檢出PR分支和觸發器構建的管道腳本如下所示

node {
    stage('Checkout') {         
        checkout(
        [
            $class: 'GitSCM',
            extensions: [               
                [$class: 'CleanCheckout'],              
            ],
            branches: [
                [name: '']
            ], 
            userRemoteConfigs: 
            [[
                credentialsId: 'id', 
                url: 'repourl.git'
                refspec: ('+refs/pull-requests/*/from:refs/remotes/origin/pr/*/from'), 
                branch: ('origin/pr/${pullRequestId}/from')
            ]]
        ])
    }

    stage('Build') {    
        sh 'make'
    }
    stage('notify') {
    step([$class: 'StashNotifier'])
        try {
           //Do stuff
            currentBuild.result = 'SUCCESS'     
        } catch(err) {
            currentBuild.result = 'FAILED'
        }
    step([$class: 'StashNotifier'])
   }

}

盡管當我創建/更新PR時我已經完成了上述配置,但構建並不會在jenkins中自動觸發。我猜從隱藏到jenkins的通知沒有發生,因為我們在自由樣式項目中指定了“origin/$ {pullRequestId}/from 。但是我沒有這個選項來指定管道作業。

嘗試了幾個選擇如下。

Instead of stash Pull Request Builder i tried with just "Poll SCM" project and specified cron job to trigger as "H/2 * * * *". Upon commits the job is triggered at jenkins. It means that for every commit the jenkins job gets triggered. But Jenkins should trigger the job when PR is created/updated.

我在這裏肯定缺少一些東西,這對詹金斯管道來說可能是基本的和新的。

任何暗示實現所需的行為?

轉載註明原文: 詹金斯管道和存儲拉請求生成器不工作公關創建/更新

一共有 2 個回答:

在groovy腳本中,您需要以不同於bash的方式引用環境變量。

所以這條線可能會造成麻煩:

branch: ('origin/pr/${pullRequestId}/from')

嘗試使用:

branch: ('origin/pr/' + env.pullRequestId + '/from')

為了擴大上述答案 - 嘗試使用:

branch: "origin/pr/${pullRequestId}/from"

因為在groovy中,對於簡單的字符串(即單引號內的字符串)沒有進行字符串插值。有關詳細信息,請參閱 http://groovy-lang.org/syntax.html#_string_interpolation 在那。