web-dev-qa-db-ja.com

宣言型Jenkinsパイプラインでチェックアウト前のステップを実行する方法はありますか?

Jenkins宣言型パイプライン コードを実行するpostディレクティブを提供afterステージが終了しました。コードを実行するのと同じようなものはありますかbeforeステージが実行されていますが、最も重要なのは、SCMチェックアウトの前ですか?

たとえば、次のようなものがあります。

pre {
    always {
        rm -rf ./*
    }
}

これにより、ソースコードがチェックアウトされる前に、ビルドのワークスペースがクリーンアップされます。

14
FrontSide

preはクールな機能のアイデアですが、まだ存在していません。 skipDefaultCheckoutおよびcheckout scm(デフォルトのチェックアウトと同じ)がキーです。

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('clean_workspace_and_checkout_source') {
      steps {
        deleteDir()
        checkout scm
      }
    }
    stage('build') {
      steps {
        echo 'i build therefore i am'
      }
    }
  }
}
21
burnettk

現時点ではpre-buildの手順はありませんが、探している目的のために、パイプラインジョブの構成とマルチブランチパイプラインジョブで実行できます。jenkinsfileの場所を定義するときに、その他の動作->リポジトリを一掃してクローンを強制します。

構築する前にワークスペースの内容を削除して、完全に新しいワークスペースを確保します。

Additional Behaviours: Wipe out repository & force clone

本当にすべてを削除してネットワークの使用量を節約したくない場合は、この他のオプションを使用できます:追加の動作->チェックアウト前にクリーンアップ

.gitignoreで指定されているものを含め、追跡されていないすべてのファイルとディレクトリを削除することにより、すべてのチェックアウトの前にワークスペースをクリーンアップします。また、追跡されたすべてのファイルをバージョン管理された状態にリセットします。これにより、ワークスペースが新しい空のディレクトリに複製してチェックアウトした場合と同じ状態になり、ビルドが前のビルドで生成されたファイルの影響を受けないようになります。

これはワークスペースを削除せず、リポジトリを元の状態にリセットし、変更がある場合は新しい変更をプルします。

Additional Behaviours: Clean before checkout

1
froblesmartin