Jenkinsタスクの大量修正の技術を共有する


スクリプトコマンドでJenkinsタスクを一括修正します。
最近、筆者のチームのJenkinsがいるサーバーはよくハードディスクの空間が足りないと言います。調べてみると、多くのタスクが「古い構築を捨てる」という設定をしていません。すべてのチームに連絡して、自分のJenkinsタスクが古い構築を捨てる設定されているかどうかを確認します。
最初に思い付いたのはJenkinsのAPIを使って大量修正のすべてのJenkinsタスクを実現することです。私はこの解決策に不満を持っています。Googleを通じて、同じ問題があることが分かりました。彼が使っているもっと「テクニック」の方式:Jenkinsスクリプトコマンドラインで、Grouvyコード操作Jenkinsタスクを実行します。
総じて言えば、二歩だけです。
メニューに入ります。システム管理-->スクリプトコマンドライン
入力ボックスに下記のコードを貼り付けます。

import jenkins.model.Jenkins
import hudson.model.Job
import jenkins.model.BuildDiscarderProperty
import hudson.tasks.LogRotator
//        
Jenkins.instance.allItems(Job).each { job ->

if ( job.isBuildable() && job.supportsLogRotator() && job.getProperty(BuildDiscarderProperty) == null) {
 println " \"${job.fullDisplayName}\"    "

 job.addProperty(new BuildDiscarderProperty(new LogRotator (2, 10, 2, 10)))
 println "$job.name    "
}
}
return;

/**

LogRotator       :
daysToKeep: If not -1, history is only kept up to this days.
numToKeep: If not -1, only this number of build logs are kept.
artifactDaysToKeep: If not -1 nor null, artifacts are only kept up to this days.
artifactNumToKeep: If not -1 nor null, only this number of builds have their artifacts kept.
**/
スクリプト
スクリプトコマンドラインの紹介
スクリプトコマンドライン(Jenkins Script Consone)は、Jenkinsの特性であり、Jenkins masterとJenkins agentの実行時に環境で任意のGrouvyスクリプトを実行することができます。これは、Jenkinsをオフすることや、オペレーティングシステムコマンドrm-rf/を実行することなど、スクリプトコマンドラインにおいて任意のことができることを意味します。
以上のように、インターフェースを使用してGrouvyスクリプトを実行するほか、Jenkins HTTP API:/scriptによって実行することができる。具体的な操作は公式文書を参照してください。
問題:コードの実行が完了したら、タスクの修正が持続化されましたか?
私達のコードjob.addProperty(new BuiildDisccarder Property(new LogRotator(2,10,2,10))が実行されると、この修正は最終的にファイルシステムに持続化されましたか?hudson.model.Jobのソースコードを見てみます。addProperty方法の背後には持続化があります。

public void addProperty(JobProperty<? super JobT> jobProp) throws IOException {
((JobProperty)jobProp).setOwner(this);
properties.add(jobProp);
save();
}
結び目
この文章は大量に修正した「古い建物を捨てる」という構成だけを紹介しています。他の構成も修正したいなら、hudson.model.Jobソースを参考にしてもいいです。
読者の皆様には、Jenkinsスクリプトコマンドラインは両刃の剣です。操作前に、影響範囲をよく考えてください。必要があれば、事前にバックアップを取ってください。
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考となる学習価値を持っています。質問があれば、メッセージを書いて交流してください。ありがとうございます。