マルチブランチワークフローを使用すると、チェックアウトするコマンドは次のようになります。
checkout scm
Jenkinsにクリーンチェックアウトを実行するように指示する方法が見つかりません。 「クリーン」とは、バージョン管理されていないすべてのファイルをワークスペースから削除する必要があることを意味します。
これが元の質問に答えるかどうかはわかりませんが(ワークスペースにいくつかのファイルを残すつもりかどうかはわかりませんでした)、最初にワークスペースを削除しないのはなぜですか?これにより、クリーンなチェックアウトが可能になります:
stage ('Clean') {
deleteDir()
}
stage ('Checkout') {
checkout scm
}
私は同じ問題に遭遇し、これが私の回避策です。チェックアウト用に新しいscmオブジェクトを作成し、CleanBeforeCheckoutを使用して拡張機能を拡張しました。しかし、私はブランチやuserRemoteConfigsのような他の構成を維持しました。
checkout([
$class: 'GitSCM',
branches: scm.branches,
extensions: scm.extensions + [[$class: 'CleanBeforeCheckout']],
userRemoteConfigs: scm.userRemoteConfigs
])
新しいオブジェクトを作成する必要があるため、まだ完全ではありません:(
まず、フリースタイルジョブの場合のように、ワークフロージョブにワークスペースがあると想定することはできません。実際、ワークフロージョブは複数のワークスペースを使用できます(node
またはws
ブロックごとに1つ)。
とはいえ、私が提案するのは一種のハッキーです。チェックアウトの前にscmオブジェクトを変更して、CleanCheckout
拡張機能を設定します(そこでいくつかの呼び出しを承認する必要があります)。
import hudson.plugins.git.extensions.impl.CleanCheckout
scm.extensions.replace(new CleanCheckout())
checkout scm
しかし、私はクリストファー・オアの提案を好みます。checkout
(sh 'git clean -fdx'
)の後にシェルステップを使用します。