web-dev-qa-db-ja.com

Jenkinsワークスペースをクリーンアップする方法はありますか?

Jenkinsのワークスペースをクリーンアップするにはどうすればよいですか?バージョン管理ツールとしてAccuRevを使用しています。

Jenkinsでfreestyleプロジェクトを作成しました。

65
Karthik

Jenkinsのワークスペースをクリーンアップする方法があります。ビルド前またはビルド後にワークスペースをクリーンアップできます。

まず、 Workspace Cleanup Plugin をインストールします。

ビルド前にワークスペースをクリーンアップするには:ビルド環境、の下にあるチェックボックスをオンにしますビルド開始前にワークスペースを削除します。

ビルド後にワークスペースをクリーンアップするには:見出しの下でビルド後のアクションを選択しますビルド完了時にワークスペースを削除からビルド後のアクションを追加 =ドロップダウンメニュー。

76
Nagendra Singh

手動でクリーンアップしたい場合は、私のバージョンのジェンキンスで追加のプラグインをインストールする必要はないようですが、左の列に「ワークスペース」リンクがあり、プロジェクトをクリックしてください。 [ワークスペース]で、[現在のワークスペースをワイプアウト]リンクが左側の列のその下に表示されます。 screenshot

42
rogerdpack

上記のソリューションに加えて、より「一般的な」方法があります-Linuxマシンから最大のスペース消費者を直接削除します。以下の手順を実行できます。

  1. Jenkinsマシン(PuTTY)へのログイン enter image description here
  2. jenkinsのインストールパスにcd

Ls -lartを使用して隠しフォルダーもリストします。通常、jenkinインストールは.jenkins /フォルダーに配置されます。

[xxxxx ~]$ ls -lart

drwxrwxr-x 12 xxxx  4096 Feb  8 02:08 .jenkins/
  1. フォルダーのスペースをリストする

Use df -hはディスク領域を高レベルで表示します

du -sh ./*/は、現在のパスの各サブフォルダーの合計メモリをリストします。

du -a /etc/ | sort -n -r | head -n 10は、/ etc /のディスク容量を消費している上位10個のディレクトリをリストします

  1. 古いビルドまたは他の大きなサイズのフォルダーを削除する

通常、。/ job /フォルダーまたは./workspace/フォルダーが最大のフォルダーになります。中に入り、必要に応じてベースを削除してください(フォルダー全体を削除しないでください)。

rm -rf theFolderToDelete

enter image description here

25
Kevin Li

Jenkinsの管理スクリプトコンソールで以下のスクリプトを実行して、すべてのジョブのワークスペースを一度に削除できます。これは、ファイルシステムのスペースをクリーンアップするために行いました。

import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
  // check that job is not building
  if(!item.isBuilding()) {
    println("Wiping out workspace of job "+item.name)
    item.doDoWipeOutWorkspace()
  }
  else {
    println("Skipping job "+item.name+", currently building")
  }
}
10
Upen

ワークスペースクリーンアッププラグイン

Jenkinsファイルに追加

cleanWs()

これにより、ビルドが完了した後にワークスペースが削除されます

6
waranlogesh

重要:ジョブが現在実行されていない限り、特定のJenkinsジョブのワークスペースを削除しても安全です!

注:$JENKINS_HOMEがデフォルトの/var/jenkins_homeに設定されていると仮定しています。

1つのワークスペースをクリーンアップする

rm -rf /var/jenkins_home/workspaces/<workspace>

すべてのワークスペースをクリーンアップする

rm -rf /var/jenkins_home/workspaces/*

いくつかの例外を除き、すべてのワークスペースをクリーンアップします

これはgrepを使用してホワイトリストを作成します。

ls /var/jenkins_home/workspace \ 
  | grep -v -E '(job-to-skip|another-job-to-skip)$' \
  | xargs -I {} rm -rf /var/jenkins_home/workspace/{}

最大10個のワークスペースをクリーンアップする

これはduおよびsortを使用して、ワークスペースを最大から最小の順にリストします。次に、headを使用して最初の10個を取得します。

du -d 1 /var/jenkins_home/workspace \
  | sort -n -r \
  | head -n 10 \
  | xargs -I {} rm -rf /var/jenkins_home/workspace/{}
2

上記のオプションが表示される前に、このプラグインをインストールする必要があります

ワークスペースクリーンアッププラグイン

このプラグインは、すべてのジョブ構成にチェックボックスを追加して、ステップ(ソース管理を含む)が実行される前にワークスペース全体を削除できるようにします

これは、ビルドの実行方法を保証するために、常に既知のポイントから開始することを確認するのに役立ちます

1
Keir

したがって、コメントは許可されていません。

pen からの答えは問題なく機能しますが、Jenkins Pipeline JobsとFreestyle Jobsが混在している場合はうまくいきません。パイプラインジョブにはDoWipeWorkspaceなどのメソッドはありません。そこで、これらをスキップするためにスクリプトを変更しました。

import hudson.model.*
import org.jenkinsci.plugins.workflow.job.WorkflowJob

// For each project
for(item in Hudson.instance.items) {
  // check that job is not building
  if(!item.isBuilding() && !(item instanceof WorkflowJob))
  {
    println("Wiping out workspace of job "+item.name)
    item.doDoWipeOutWorkspace()
  }
  else {
    println("Skipping job "+item.name+", currently building")
  }
}

必要に応じて、ジョブ名でフィルタリングすることもできます:item.getDisplayName().toLowerCase().contains("release")

1
achschneid

現在のジョブのワークスペースのクリーニングに関する質問であると仮定すると、次を実行できます。

test -n "$WORKSPACE" && rm -rf $WORKSPACE/*
0
aleb