web-dev-qa-db-ja.com

Jenkins / Hudsonのビルド履歴をクリアするにはどうすればよいですか?

最近、ハドソンビルドの1つの構成を更新しました。ビルド履歴は同期していません。ビルド履歴をクリアする方法はありますか?

お願いします

77
myusuf3

[Hudsonの管理/ディスクから構成を再読み込み]をクリックすると、Hudsonはすべてのビルド履歴データを再読み込みします。

ディスク上のデータが壊れている場合は、%HUDSON_HOME%\ jobs\<projectname>ディレクトリに移動し、ビルドディレクトリを本来の状態に復元する必要があります。次に、構成データをリロードします。

すべてのビルド履歴を削除する方法を尋ねる場合、UIを使用してビルドを1つずつ削除するか、%HUDSON_HOME%\ jobs\<projectnameに移動します=>ディレクトリとそこにあるすべてのサブディレクトリを削除します-それらはビルドに対応します。その後、変更を有効にするためにサービスを再起動します。

45
William Leara

スクリプトコンソール(Jenkinsの管理>スクリプトコンソール)とこのスクリプトのようなものを使用して、ジョブのビルド履歴を一括削除します https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy

このスクリプトは、一連のビルドのみを削除することを前提としています。特定のジョブのすべてのビルドを削除するには、これを使用します(テスト済み):

// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)

job.getBuilds().each { it.delete() }
// uncomment these lines to reset the build number to 1:
//job.nextBuildNumber = 1
//job.save()
96
rjohnston

この答えはジェンキンス向けです

  1. Jenkinsのホームページに移動→Jenkinsの管理Script Console

    Enter image description here

  2. そこで次のスクリプトを実行します。変化する copy_folderからyour project name

コード:

def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()

私の投稿

65

別のオプションがあります:cURLでビルドを削除します。

$ curl -X POST http://jenkins-Host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll

上記により、ジョブmyJobのビルド#1から#56が削除されます。

Jenkinsインスタンスで認証が有効になっている場合、次のようにユーザー名とAPIトークンを提供する必要があります。

$ curl -u userName:apiToken -X POST http://jenkins-Host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll

APIトークンは、Jenkinsの/me/configureページから取得する必要があります。 [Show API Token ...]ボタンをクリックして、ユーザー名とAPIトークンの両方を表示します。

編集:使用するJenkinsの構成またはバージョンによっては、これを機能させるために、上記のURLのdoDeleteAlldoDeleteに置き換える必要がある場合があります。

20
Erwan Legrand

プロジェクト構成を一時的に変更して、最後の1つのビルドのみを保存し、構成をリロードして(古いビルドを破棄する)、構成設定を目的の値に再度変更できます。

9
the_mandrill

Jenkins Scriptingを使用して、すべてのジョブのすべてのビルドを削除する方法は次のとおりです。

def jobs = Jenkins.instance.projects.collect { it } 
jobs.each { job -> job.getBuilds().each { it.delete() }} 
9
ort11

これは利用可能な最良のオプションです。

Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }

このコードはすべてのJenkins Jobビルド履歴を削除します。

4
Rahul khanvani

MultiBranchProject(パイプラインなど)のビルド履歴をクリアする場合は、Jenkinsホームページ→Jenkinsの管理→スクリプトコンソールに移動して、次のスクリプトを実行します。

def projectName = "ProjectName"
def project = Jenkins.instance.getItem(projectName)
def jobs = project.getItems().each {
  def job = it
  job.getBuilds().each { it.delete() }
  job.nextBuildNumber = 1
  job.save()
}
2
Marin Ivanov

スクリプトコンソールを使用する場合は、ジョブがフォルダーコンテナーにグループ化されているかどうかを考慮して、代わりに次を使用してみてください。

def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)

または

def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)
1
RampantBadger

ファイルシステムから直接削除することは安全ではありません。以下のスクリプトを実行して、すべてのジョブからすべてのビルドを(再帰的に)削除できます。

def numberOfBuildsToKeep = 10
Jenkins.instance.getAllItems(AbstractItem.class).each {
  if( it.class.toString() != "class com.cloudbees.hudson.plugins.folder.Folder" && it.class.toString() != "class org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
    println it.name
    builds = it.getBuilds()
    for(int i = numberOfBuildsToKeep; i < builds.size(); i++) {
        builds.get(i).delete()
      println "Deleted" + builds.get(i)
    }
  }
}```
1
Aytunc Beken

スクリプトコンソールを使用します。

ジョブがグループ化されている場合は、スラッシュを含む完全な名前を付けることができます。

getItemByFullName("folder_name/job_name") 
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()

または、次のように階層をトラバースします。

def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
1
ATrubka

%HUDSON_HOME%\jobs\<projectname>削除builds dirおよび削除lastStable, lastSuccessfulリンクし、nextBuildNumberファイルを削除します。

上記の手順を実行した後、UIから下のリンクに移動します
Jenkins-> Jenkinsの管理->ディスクから構成を再読み込み

必要に応じて行います

1
Manish Agrawal

ビルドをクリーンアップするもう1つの簡単な方法は、ジョブの最後に古いプラグインを破棄することです。保存するビルドの最大数を設定してから、ジョブを再度実行します。

https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin

1

案内する: %JENKINS_HOME%\jobs\jobName

ファイル「nextBuildNumber」を開き、番号を変更します。その後、Jenkins構成を再読み込みします。注:「nextBuildNumber」ファイルには、Jenkinsが使用する次のビルド番号が含まれています。

0
Nitish