これらはすべて言及されています(例えばこのSOの質問で) を使用していますJenkinsfile
。ただし、一部は廃止されていたり、機能が若干異なっていたりするようです。どれを使用すればよいのか理解したいと思います。
これらのうち、deleteDir
最もよく言及されるのは であり、他のものは Jenkins Workspace Cleanup プラグインを呼び出すための異なる構文にすぎないようです。
機能上の違いは何ですか?どちらがお勧めですか?
deleteDir()
cleanWs()
step([$class: 'WsCleanup'])
ベストアンサー1
公式ドキュメントより:
削除ディレクトリ: ワークスペースから現在のディレクトリを再帰的に削除します。現在のディレクトリとその内容を再帰的に削除します。シンボリック リンクとジャンクションは追跡されませんが、削除されます。ワークスペースの特定のディレクトリを削除するには、deleteDir ステップを dir ステップでラップします。
deleteDir
つまり、ワークフローの基本手順プラグイン (Pipeline Plugin のコンポーネント)。
クリーン: ビルドが完了したらワークスペースを削除します。
それはからcleanWs()
の新しいバージョンのようですstep([$class: 'WsCleanup'])
ワークスペースクリーンアッププラグイン。
私の理解では、deleteDir
との間にはcleanWs
若干の違いがあります。 にcleanWs
はより多くのオプション ( cleanWhenAborted
、cleanWhenFailure
など) があり、より柔軟に使用できますが、ビルドが完了したときにのみ使用することをお勧めします (ビルド実行の開始時に使用できるかどうかはわかりません)。 一方、deleteDir
ビルド実行前に step を使用してワークスペースを消去できます。
更新1:
ビルド後のcleanWs
ステップではビルドステータスも考慮されるため、ビルド実行後にのみ使用する必要があります。
ただし、wsクリーンアッププラグインにもステップがあります。とのpreBuildCleanup
両方の例(DSL)を確認できますpreBuildCleanup
cleanWs
プラグインページ。
更新2:
@aaron-d-marasco は、docker イメージでは使用しない方が良いと指摘しましたdeleteDir
。詳細については、この未解決のバグ。