jenkinsでビルド番号をリセットする方法は?


90

JenkinsとGradleを使用してJavaプロジェクトをビルドしています。

プロジェクトをビルドするたびに、Jenkins画面に新しいビルド番号が表示されます。

以下は私のJenkinsビルド情報です:

Success > Console Output  #96   03-Jan-2014 15:35:08    
Success > Console Output  #95   03-Jan-2014 15:27:29     
Failed > Console Output  #94    03-Jan-2014 15:26:16     
Failed > Console Output  #93    03-Jan-2014 15:25:01     
Failed > Console Output  #92    03-Jan-2014 15:23:50     
Success > Console Output  #91   03-Jan-2014 12:42:32    
Success > Console Output  #90   03-Jan-2014 12:02:45

Jenkinsのビルド番号を次のようにリセットしたい:

Success > Console Output  #1    03-Jan-2014 12:02:45

Jenkinsでビルド番号をリセットするにはどうすればよいですか?

回答:


161

groovyスクリプトコンソールから簡単に実行できます。http:// your-jenkins-server / scriptに移動します。 スクリプトウィンドウで次のように入力します。

item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
item.updateNextBuildNumber(1)

6
またはcli経由java -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \ 'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'
ykhrustalev 2016年

3
これは間違いなく最良の答えです。番号を設定するだけの場合は、削除ループも必要ありません。
ニック

何らかの理由で、これは最新のビルドでのみ削除を実行しますが、以下は私にとってはうまくecho "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
いき

初心者の質問..正確な仕事の名前をどうやって知るか。
Ammar Mujeeb 2017

@AmmarMujeebがJenkinsダッシュボードに移動すると、そこにジョブ名が表示されます。/var/lib/jenkins/jobs/Linuxで移動することもでき、ディレクトリの名前には正確なジョブ名があります
rickrizzo 2017

62

ここから

ハドソンの仕事の名前がFooBarであるとすると、

  • FooBarの名前をFooBarに変更-コピー
  • FooBarから「既存のジョブをコピー」オプションを使用してFooBarという名前の新しいジョブを作成します-コピー
  • FooBarを削除-コピー

35
  • 最初にワークスペースをワイプアウトし、以前のビルドを削除します。
    • サーバーで、ジョブディレクトリに移動します。'var / lib / jenkins / jobs / myJob'は、ワークスペースとビルドディレクトリ、およびポーリングファイル、lastSuccessful、lastStableファイルなどを削除します。config.xmlとlastBuildNumberのみが必要です。
    • service jenkinsstopなどを使用してjenkinsをシャットダウンします
    • nextBuildNumberというファイルを編集し、現在のビルド番号の代わりに1を挿入します
    • ジェンキンスを再起動し、 サービスジェンキンスを起動します
    • jenkinsにログインし、ジョブに移動してビルドを押します。ジョブ#1の構築を開始する必要があります

1
これはとても役に立ちました。ありがとう。

23

次のビルド番号を設定したい場合は、そのためのプラグイン「NextBuildNumber」があります。ただし、必要なビルド番号である1は現在のビルド番号よりも小さいため、これはあなたのケースでは機能しません。

ここでは、最初に以前のすべてのビルドを消去する必要があります。この簡単なスクリプトを実行することでこれを行うことができます -> Jenkinsの管理->スクリプトコンソールに移動します

// 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() }

これで、次のビルド番号を1に設定して、ビルドを実行できます。1から始まります。:)その単純な。

更新-Jenkinsには、これを最も簡単な方法で実行するためのPurge JobHistoryプラグインがあります。詳細については、ページをチェックアウトしてください-https ://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


6

より一般的にビルド番号をNN必ずしも1ではない)にリセットするには:

  • 既存のビルドを削除しますbuildNumber >= N
  • 編集しProgram Files (x86)/Jenkins/jobs/yourjob/nextBuildNumberます。含まれている番号をに設定しNます。
  • Jenkinsから、を選択しますManage Jenkins -> Reload Configuration from Disk

「ディスクから構成をリロード」を選択する前に、この欠陥を必ずお読みください-issues.jenkins-ci.org/browse/JENKINS-32984
user3181500 2017

6

受け入れられた答えを拡張して、すべてのプロジェクトに対して一度にそれを行う方法は次のとおりです。

Jenkins.instance.allItems.each() { 
  item -> item.builds.each() { 
    build -> build.delete()
  }
  item.updateNextBuildNumber(1)
}  

4

@antweissの優れた回答の延長として、実際にはさらに先に進むことができます...

ビルド履歴全体を削除する必要はありません。削除したくない場合は、時間を前のポイントにロールバックするだけです。

resetNumberTarget = 14
item = Jenkins.instance.getItemByFullName("Project Name [from project Dashboard]")
//println(item)

item.builds.each() { build ->
  //println(build)
  //println(build.number)

  if(build.number >= resetNumberTarget)
  {
    //println("About to Delete '" + build + "'")    
    build.delete()  
  }
}

item.updateNextBuildNumber(resetNumberTarget)

ダミーランが必要な場合は、実際に実行せずに、実行内容を確認するにはbuild.delete()item.updateNextBuildNumber(resetNumberTarget)行と行をコメントアウトして、さまざまな印刷コマンドのコメントを解除します。


ドキュメント:これらのオブジェクトの詳細を見つけるのは困難でしたが、私は次のことを特定しました。


1

nexBuildNumberプラグインを使用するか、nexBuildNumberファイルを変更してビルド番号をリセットできます。実行する必要のある手順は次のとおりです。

  • に移動し.jenkins/Jobs/<YourJobName>/build/、このフォルダーのバックアップを取り(将来使用する必要がある場合)、ビルドフォルダーを削除ます。

注:古いビルドをクリーンアップすると、ビルド履歴が失われ、Jenkinsダッシュボードで使用できなくなります。

  • 構成をリロードします(Jenkins-> Manage Jenkins)。
  • Next Build Numberプラグインを使用するかnextBuildNumber、jobディレクトリ内のファイルを変更して、次のビルドバージョンを1に設定します。

0

私はこれを行う簡単な方法を見つけました。

  1. 作業スペースを一掃します。
  2. Jenkinsに保存されている各ビルドに移動し、削除します。
  3. ビルド番号を1に設定してからビルドします。

Jenkinsは前のビルドを使用して次のビルド番号を決定します。入力したビルド番号が前のビルド番号よりも小さい場合、Jenkinsは自動的にビルド番号を前のビルドよりも大きくします。だからここで私たちはただ



-1

すべてのジョブのビルド番号をリセットするには:

Jenkins.instance.getAllItems(AbstractProject.class).each {
    item = Jenkins.instance.getItemByFullName(it.fullName)
    //THIS WILL REMOVE ALL BUILD HISTORY
    item.builds.each() { build ->
        build.delete()
    }
    item.updateNextBuildNumber(1)
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.