LoginSignup
1
1

More than 5 years have passed since last update.

JenkinsのPipelineでSVNのChangesが二重に記録される問題と対処法

Posted at

状況

JenkinsのPipelineを下記設定で作成してジョブを実行すると、変更履歴が1コミットに対して2つ記録されてしまう。

  • Pipeline script from SCM
  • SCMはSubversionを使う
  • プロジェクト直下にJenkinsfileを配置
  • JenkinsfileはDeclarative Pipeline構文

原因

「Pipeline script from SCM」でジョブを作成した場合、Jenkinsfile自体を更新するPipelineJobのワークスペースと、Jenkinsfileを実行するSandboxのワークスペースが別になっているっぽい。
それぞれのワークスペースでsvn updateが合計2回実行されて、そのぶん二重にChangesが記録されてしまう。

一応バグ報告は上がっているみたいだけどStatusがOPENのままなので解決していないみたい。
SCMにgitを使っている場合は発生しないのかな。

[JENKINS-38204] SVN plugin show all checkouts twice in pipeline project - Jenkins JIRA

対処法

Jenkinsfileに下記2つを設定する。

  • optionsディレクティブにskipDefaultCheckout()の設定を追加
  • stagesディレクティブの最初にcheckoutchangelog:false指定で実行

デフォルトのチェックアウト処理は細かい設定ができないので、それをskipして自前でチェックアウトするように設定する。checkoutの引数についてはscm変数が使えるのでそれを使うとシンプルに書ける。

pipeline {

    agent any

    options {
        skipDefaultCheckout()
    }

    stages {
        stage('checkout') {
            checkout changelog: false, scm: scm
        }

        stage('build') {
            sh './gradlew build'
        }

        // omitted...
    }
}

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1