web-dev-qa-db-ja.com

Jenkinsの「ビルド開始前にワークスペースを削除する」と「リポジトリを消去してクローンを強制する」の違いは?

Jenkins job-dslプラグインをテストしています。 「ビルドを開始する前にワークスペースを削除する」設定が有効になっている既存のプロジェクトがあります。

次のDSLが定義されています。

job("$basePath/my-project") {
    scm {
        git {
            remote {
                name('Origin')
                url('[email protected]:my-organisation/my-project.git')
            }
            branch('*/develop')
            extensions {
                wipeOutWorkspace()
                submoduleOptions {
                    recursive()
                }
            }
        }
    }
}

これは実際には同じではない構成を提供するようで、「リポジトリを消去してクローンを強制する」オプションが表示されます。これらのオプションは最終的に本当に同じものですか、それとも異なる動作がありますか?

14
Wim Deblauwe

一般に、両方のオプションに違いはありません。

それらは異なるプラグインによって提供されます:

  • リポジトリを消去してクローンを強制するGitプラグイン の一部であり、gitプラグインの拡張としてのみ適しています
  • ビルドを開始する前にワークスペースを削除するWorkspace Clean Plugin の一部です

Workspace Clean PluginとGit Pluginの主な違い:

  • Git SCMのみにバインドされていません
  • Antファイルパターンを使用して、一部のファイルまたはディレクトリのみを削除できます。
11
CSchulz

Gitプラグインの「リポジトリを消去してクローンを強制する」オプションの重要な動作は、「サブディレクトリにチェックアウト」オプションで選択したリポジトリサブディレクトリのみを削除することです。ワークスペースの残りの部分はそのままになります。これは、私が知る限り、ドキュメントには記載されていません。

「削除するファイルのパターン」の詳細設定セクションでクローンサブディレクトリを指定することにより、Workspace Cleanupプラグインで同様の動作を実現できます。

最終結果はまったく同じですが、私の観察では、Gitプラグインの削除はWorkspace Cleanupプラグインよりも5秒高速でした。

1
mikewaters