Jenkins パイプラインの deleteDir、cleanWs、および 'WsCleanup' の違いは何ですか? 質問する

Jenkins パイプラインの deleteDir、cleanWs、および 'WsCleanup' の違いは何ですか? 質問する

これらはすべて言及されています(例えばこのSOの質問で) を使用していますJenkinsfile。ただし、一部は廃止されていたり、機能が若干異なっていたりするようです。どれを使用すればよいのか理解したいと思います。

これらのうち、deleteDir最もよく言及されるのは であり、他のものは Jenkins Workspace Cleanup プラグインを呼び出すための異なる構文にすぎないようです。

機能上の違いは何ですか?どちらがお勧めですか?

deleteDir()
cleanWs()
step([$class: 'WsCleanup'])

ベストアンサー1

公式ドキュメントより:

削除ディレクトリ: ワークスペースから現在のディレクトリを再帰的に削除します。現在のディレクトリとその内容を再帰的に削除します。シンボリック リンクとジャンクションは追跡されませんが、削除されます。ワークスペースの特定のディレクトリを削除するには、deleteDir ステップを dir ステップでラップします。

deleteDirつまり、ワークフローの基本手順プラグイン (Pipeline Plugin のコンポーネント)。

クリーン: ビルドが完了したらワークスペースを削除します。

それはからcleanWs()の新しいバージョンのようですstep([$class: 'WsCleanup'])ワークスペースクリーンアッププラグイン

私の理解では、deleteDirとの間にはcleanWs若干の違いがあります。 にcleanWsはより多くのオプション ( cleanWhenAbortedcleanWhenFailureなど) があり、より柔軟に使用できますが、ビルドが完了したときにのみ使用することをお勧めします (ビルド実行の開始時に使用できるかどうかはわかりません)。 一方、deleteDirビルド実行前に step を使用してワークスペースを消去できます。

更新1:
ビルド後のcleanWsステップではビルドステータスも考慮されるため、ビルド実行後にのみ使用する必要があります。
ただし、wsクリーンアッププラグインにもステップがあります。とのpreBuildCleanup両方の例(DSL)を確認できますpreBuildCleanupcleanWsプラグインページ

更新2:
@aaron-d-marasco は、docker イメージでは使用しない方が良いと指摘しましたdeleteDir。詳細については、この未解決のバグ

おすすめ記事