2011-11-03 15 views
29

私はジェンキンスを使用して自分のプロジェクトで毎日のタスクを実行していますが、実行するたびに、Jenkinsは20MBのディレクトリを格納しますPROJECT_HOME/builds、すべてのプロジェクトのディスクには膨大な容量(いくつかのJenkinsタスクでは10GB)があります。Jenkinsの空き容量が「builds」ディレクトリを削除しています

前回の実行結果を保存することはあまり重要ではないので、もし私が知りたいのは、Jenkinsがその情報を保存しないと言う方法があるということです。

誰かがJenkinsが古い実行の結果を保存するのを避ける方法を知っていますか?

+0

http://stackoverflow.com/a/42220002/6549532 –

答えて

39

プロジェクトの設定ページに移動すると、「古いビルドを破棄する」というチェックボックスが表示されます。これを有効にすると、ビルドを保持する日数と保持するビルドの最大数の両方を指定できます。

+0

の下にリストされているジョブのビルドを削除するには、以下のGroovyスクリプトを実行します私は実際に空き容量の不足のために構成を変更することができなかったので、システムに乗って手動で古いビルドを削除する必要がありました。 – ThomasW

+0

私はこれをまだ使用していませんが、Jenkinsマシン上のすべてのビルドで(など)1つの場所 https:// wikiからビルド数を指定できるConfiguration Slicing Pluginが見つかりました。ジェンキンス - シー。org/display/JENKINS/Configuration + Slicing + Plugin –

+1

@jwernernyこれをチェックしたら、強制的に破棄操作を実行しますか? – Carlos

5

私の場合は、ビルドに失敗したときに空き領域がなくなったことに気づいただけで、古いビルドのいくつかをクリアして空き領域を解放する必要があります。最初にjwernernyが言及したように古いビルドを破棄するように設定を変更すると、古いビルドのクリーンアップを開始するビルドを開始する必要があります。空き領域がないためにビルドが再び失敗する可能性がありますが、ビルド後のクリーンアップが実行され、古いビルドは破棄されます。ジェンキンスあなたにスクリプトを実行する:

def jobs = Hudson.instance.items 

jobs.findAll{it.logRotator}.each { 
    println("JOB : "+ it.name) 
    try { 
    println(it.logRotator.perform(it)) 
    } catch (Exception e) { 
    println("It didn't work: "+ e) 
    } 
} 

注:あなたがすることなく、ジェンキンスさんは、すべての古いビルドを破棄したい場合は

-1

実際、自分でフォルダを削除することは本当に良いとは思えません。

専門家にお伝えください。 Discard Old Builds Pluginまだ試しましたか?

「あなたは機能を 『破棄古いビルド』 デフォルトよりも詳細に構築する方法を破棄するように設定することができます。構築し、日の#以外に、 あなたはキープ/破棄するようにビルド・ステータスを指定することができます。古いビルドについて、あなたは ビルドを維持する間隔を構成することができます(月に1回、10回に1回、 がビルドされます...)また、ログファイルサイズを使用して、古い を削除するかどうかを決定できます。

1

は、プロジェクトに設定します。ジェンキンスScriptlerコンソールから

1

は、すべてのビュー私の場合は

import jenkins.model.Jenkins 

hudson.model.Hudson.instance.getView('<ViewName>').items.each() { 
    println it.fullDisplayName 


def jobname=it.fullDisplayName 
def item = hudson.model.Hudson.instance.getItem(jobname) 
def build = item.getLastBuild() 
if (item.getLastBuild() !=null) 
    { 
Jenkins.instance.getItemByFullName(jobname).builds.findAll { it.number <= build.getNumber() }.each { it.delete() } 

} 
} 
関連する問題