Jenkinsで古いビルドを削除する

Jenkinsを利用していると、実行済みのビルドがどんどん溜まっていってストレージを圧迫するため、定期的に古いビルドを削除する必要があります。

個別のビルドについては、ビルドの詳細ページから「Delete build ‘#xxx’」をクリックして削除できますが、一つ一つ実行するのは手間です。

そういう時はスクリプトコンソールを利用すると便利です。スクリプトコンソールは文字通りJenkins上でスクリプト(Groovy)を実行することができる機能で、「Jenkinsの管理」画面からアクセスすることができます。

特定のジョブのビルドをすべて削除する

jobName変数に削除したいジョブ名を設定し、次のスクリプトを実行します。

def jobName = "<ジョブ名>"  
def job = Jenkins.instance.getItem(jobName)  
job.getBuilds().each {
  it.delete()
}  

すべてのジョブについて古いビルドを削除する

MAX_BUILDS定数に、各ジョブにおいて残したい最新のビルドの数を設定し、次のスクリプトを実行します。

// 残すビルド数を設定
MAX_BUILDS = 20

for (job in Jenkins.instance.items) {
  def recent = job.builds.limit(MAX_BUILDS)
  for (build in job.builds) {
    if (!recent.contains(build)) {
      build.delete()
    }
  }
}
Top