最近、ハドソンビルドの1つの構成を更新しました。ビルド履歴は同期していません。ビルド履歴をクリアする方法はありますか?
お願いします
[Hudsonの管理/ディスクから構成を再読み込み]をクリックすると、Hudsonはすべてのビルド履歴データを再読み込みします。
ディスク上のデータが壊れている場合は、%HUDSON_HOME%\ jobs\<projectname>ディレクトリに移動し、ビルドディレクトリを本来の状態に復元する必要があります。次に、構成データをリロードします。
すべてのビルド履歴を削除する方法を尋ねる場合、UIを使用してビルドを1つずつ削除するか、%HUDSON_HOME%\ jobs\<projectnameに移動します=>ディレクトリとそこにあるすべてのサブディレクトリを削除します-それらはビルドに対応します。その後、変更を有効にするためにサービスを再起動します。
スクリプトコンソール(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()
この答えはジェンキンス向けです
コード:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
別のオプションがあります: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のdoDeleteAll
をdoDelete
に置き換える必要がある場合があります。
プロジェクト構成を一時的に変更して、最後の1つのビルドのみを保存し、構成をリロードして(古いビルドを破棄する)、構成設定を目的の値に再度変更できます。
Jenkins Scriptingを使用して、すべてのジョブのすべてのビルドを削除する方法は次のとおりです。
def jobs = Jenkins.instance.projects.collect { it }
jobs.each { job -> job.getBuilds().each { it.delete() }}
これは利用可能な最良のオプションです。
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
このコードはすべてのJenkins Jobビルド履歴を削除します。
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()
}
スクリプトコンソールを使用する場合は、ジョブがフォルダーコンテナーにグループ化されているかどうかを考慮して、代わりに次を使用してみてください。
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
または
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)
ファイルシステムから直接削除することは安全ではありません。以下のスクリプトを実行して、すべてのジョブからすべてのビルドを(再帰的に)削除できます。
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)
}
}
}```
スクリプトコンソールを使用します。
ジョブがグループ化されている場合は、スラッシュを含む完全な名前を付けることができます。
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()
%HUDSON_HOME%\jobs\<projectname>
削除builds
dirおよび削除lastStable, lastSuccessful
リンクし、nextBuildNumber
ファイルを削除します。
上記の手順を実行した後、UIから下のリンクに移動します
Jenkins-> Jenkinsの管理->ディスクから構成を再読み込み
必要に応じて行います
ビルドをクリーンアップするもう1つの簡単な方法は、ジョブの最後に古いプラグインを破棄することです。保存するビルドの最大数を設定してから、ジョブを再度実行します。
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
案内する: %JENKINS_HOME%\jobs\jobName
ファイル「nextBuildNumber」を開き、番号を変更します。その後、Jenkins構成を再読み込みします。注:「nextBuildNumber」ファイルには、Jenkinsが使用する次のビルド番号が含まれています。