5

この質問は基本的にはthis oneと同じですが、私はSubversionを使用していますが、プラグインのアップデートでは私のためのトリックはありません。SVNのジェンキンスパイプラインスクリプトでの変更ログの重複

私はJenkinsfileスクリプトにマルチブランチパイプライン設定をロードしており、チェンジログはそれぞれ新しいcheckout scmに複製されます。

nodeブロック内に割り当てられた複数のワークスペースを使用しているため、それぞれのチェックアウトが新しく呼び出されており、変更ログの複製が少し面倒になっています。

答えて

5

同じ問題に直面しています。

SVNプラグインの修正がリリースされるまで、私は次のことを行っています。

currentBuild.getChangeSets().clear() 
checkout scm 

注意:「インプロセススクリプト承認」ページからスクリプト呼び出しを承認する必要があります。

これにより、Jenkins Jobの変更履歴がクリアされます。チェンジログは、 'checkout scm'コールによって再び満たされます。 更新:下記の編集を確認してください。この「ソリューション」は動作しません、再起動後に削除リビジョンをバック追加されるため、...私はなぜ得るが、...しません

EDIT:

OK今私は新しい方法を見つけました:

for(i = 0; i < scm.getLocations().length; i++) { 
     def location = scm.getLocations()[i] 
     def svn_url = location.remote 
     checkout changelog: false, poll: false, scm: [$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[credentialsId: '252ad9ab-2f39-46f5-a77a-6196d1679dee', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: svn_url]], workspaceUpdater: [$class: 'UpdateWithRevertUpdater']] 
    } 

資格情報を正しく取得するには、「パイプライン構文」ページを使用する必要があります。 私はちょうど

checkout changelog: false, scm 

を使用してみましたが、それは動作しませんでした。したがって、上記の長いバージョンを使用する必要があります。

+0

回避策を提案してくれてありがとう、私は休日から仕事に戻ったらすぐに試してみます。 –

+0

Jenkinsが再起動された場合、チェンジセットを再構築して、以前削除したビルドをビルドに追加するように見えます。( アップデートと再起動後にちょうど発見されました... –

+0

ok私は新しい作業方法を見つけました。上記を参照してください。 –

3

Ben Herfurthさんの答えが良いです、私はちょうど1つの作業機能でそれを包み込もうとしたので、私は最終的な適応を投稿します。私はチェックアウトに一つだけのSVNリポジトリを持っているよう

この機能は私のために動作し、他のすべて(例えばパスワード)がすでに設定されています:

def checkout(){ 
    def svnLocation = scm.locations[0] 
    checkout(changelog: false, scm: [$class: 'SubversionSCM', locations: [svnLocation], workspaceUpdater: [$class: 'UpdateWithCleanUpdater']]) 
} 

を私はどこでも、私は新鮮を必要とする、これにコールをドロップ作業コピー。

node('linux') {   
    checkout() 
    // ... run ITs on linux ... 
} 

node('windows') { 
    checkout() // doesn't duplicate changelog anymore 
    // ... run ITs on windows .... 
} 

これが他の人に役立つと願っています。

3

むしろよりSCMクラスを再定義し、一つはまだ元の「SCM」オブジェクトを参照し、そうような変更ログを無効にすることができ:

checkout(changelog: false, scm: scm) 

無効にしながら、これは「チェックアウトSCM」の意図behviourを保持します変更ログの生成。

+0

今、おかげで働いています:) 私は答えを書いたときに戻って動作しませんでした。 –