最近、ハドソンビルドの1つの構成を更新しました。ビルド履歴が同期していません。ビルド履歴をクリアする方法はありますか?
どうぞよろしくお願いします
最近、ハドソンビルドの1つの構成を更新しました。ビルド履歴が同期していません。ビルド履歴をクリアする方法はありますか?
どうぞよろしくお願いします
回答:
[ハドソンの管理] / [ディスクから構成を再読み込み]をクリックすると、ハドソンはすべてのビルド履歴データを再読み込みします。
ディスク上のデータが混乱している場合は、%HUDSON_HOME%\ jobs \ < projectname >ディレクトリに移動し、ビルドディレクトリを想定どおりに復元する必要があります。次に、構成データをリロードします。
すべてのビルド履歴を削除する方法を尋ねているだけの場合は、ビルドが少ない場合はUIから1つずつ削除するか、%HUDSON_HOME%\ jobs \ <プロジェクト名>ディレクトリに移動してすべてのビルドを削除します。そこにサブディレクトリがあります-それらはビルドに対応しています。その後、変更を有効にするためにサービスを再起動します。
スクリプトコンソール([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トークンは/me/configure
、Jenkinsのページからフェッチする必要があります。[APIトークンを表示...]ボタンをクリックするだけで、ユーザー名とAPIトークンの両方が表示されます。
編集:1を交換する必要がある場合がありますdoDeleteAll
によってdoDelete
構成や使用ジェンキンスのバージョンに応じて、この作業を行うために上記のURLで。
プロジェクト構成を一時的に変更して、最後の1つのビルドのみを保存し、構成を再ロードして(古いビルドを破棄する必要があります)、構成設定を目的の値に再度変更できます。
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()
}
これは利用可能な最良のオプションです。
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
このコードは、すべてのJenkinsジョブビルド履歴を削除します。
スクリプトコンソールの使用。
ジョブがグループ化されている場合は、スラッシュを付けてフルネームを付けることができます。
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()
ファイルシステムから直接削除することは安全ではありません。以下のスクリプトを実行して、すべてのジョブからすべてのビルドを(再帰的に)削除できます。
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つの簡単な方法は、ジョブの最後にDiscard OldPluginを追加することです。保存するビルドの最大数を設定してから、ジョブを再実行します。
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
%HUDSON_HOME%\jobs\<projectname>
remove builds
dirに 移動してlastStable, lastSuccessful
リンクを削除し、nextBuildNumber
ファイルを削除します。
上記の手順を実行した後、UI
Jenkins-> Manage Jenkins-> Reload Configuration fromDiskから以下のリンクに移動します
必要に応じて行います
スクリプトコンソールメソッドを使用している場合は、代わりに次を使用して、ジョブがフォルダーコンテナにグループ化されているかどうかを考慮してください。
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
または
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)