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


99

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

freestyleはジェンキンスでプロジェクトを作成しました。

回答:


91

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

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

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

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


ナジェンドラに感謝します。ワークスペースクリーンアッププラグインを使用してこの問題を修正できます。
Karthik 2015年

ワークスペースをクリーンアップしないとどうなりますか?それはリモートURLから変更をフェッチするのですか、それとも同じものを何度も何度も構築していますか?
alphaguy

@alphaguy Jenkinsは、実行するビルドごとに新しいワークスペースを作成するため、ワークスペースを削除しないと、最終的にノードのスペースが不足します。
Miles Winther、

ワークスペースを再利用できますか?現在、gitサーバーから複製したコードをプッシュすると、ビルドが開始されます。これには長いプロセスが必要で、ビルドプロセスに追加が追加されます!最新のコミットを選択できますか?@MilesWinther
alphaguy

@alphaguy参照リポジトリを使用できます。回答はこちらをご覧ください:stackoverflow.com/a/9932036/6221831
Miles Winther

53

手動でクリーンアップしたい場合は、私のバージョンのjenkinsを使用している場合(追加のプラグインをインストールする必要はないようですが、知っている人がいます)、左側の列に「ワークスペース」リンクがあり、プロジェクトをクリックします。次に[ワークスペース]をクリックすると、左側の列の下にある[現在のワークスペースを消去]リンクが表示されます。 スクリーンショット


4
残念ながらわかりません。確かにプラグインではありませんか?
Joachim Breitner、2018

2
「ワークスペースクリーンアッププラグイン」は確かに「デフォルトで」インストールされているプラ​​グインの1つであるようです。しかし、それを削除した後でも、私はそのリンクをまだ持っており、それはまだ機能しているようです。だから...どこから来たのかわからない。V2.121.3
rogerdpack

2
これは機能しましたが、ワークスペースリンクを2回クリックする必要がありました。回答に含めることができる情報だと思います。
Gnafu

これはどのJenkinsバージョンですか?私はこのオプションを表示しないためです(おそらく私のものは古すぎます)。
Pedro Trujillo

他のバージョンでは
V2.121.3が不明

30

上記のソリューションの他に、より一般的な方法があります。最大のスペースコンシューマをLinuxマシンから直接削除します。以下の手順に従ってください。

  1. Jenkinsマシン(Putty)にログインします。 ここに画像の説明を入力してください
  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

ここに画像の説明を入力してください


3
なぜ反対票を投じたのかわからない。これは、Jenkins管理者にとっては良いオプションのように思えます。「読み取り専用」ユーザーには同意しないでください。
サイカット2017年

1.これは質問の答えにはなりません。2。JenkinsサーバーがWindowsで実行されています。
mjaggard 2017年

9
@mjaggard質問は他の誰かに尋ねられ、彼はそれがWindowsのみに関するものであるかについては言及しませんでした。また、ワークスペースをクリーンアップする方法を尋ねました(フロントエンド/クライアントに限定されません)。ここで明らかなことはありませんか?
2017年

4
@takiasに完全に同意します。質問に対する有効な回答のようです。そして、あなたがそれをするのに十分な許可を持っているなら、良いものです。
PhoneixS 2017

1
これは、ジェンキンス固有ではなく、「GNU / Linuxマシンのスペースをどのように回復するか」に対する答えです。
フェリペアルバレス

20

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

Jenkinsファイルに追加

cleanWs()

ビルドが完了すると、ワークスペースが削除されます


3
他の回答からプラグインをインストールしたので、この回答には本当に感謝していますが、これが私のセットアップで機能するための理由です。それに加えて、他の回答で同じプラグインへのリンクをたどりましたcleanWs()が、プラグインのランディングページにに追加する構文として表示されませんでしたJenkinsfile
Arthur Weborg

18

重要:ジョブが現在実行されていない限り、特定の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
ジョブがそれらのワークスペースを使用している可能性があるため、これは危険です。
aleb

13

以下のスクリプトを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")
  }
}

これは私にとっては機能しません。java.lang.NullPointerException:nullオブジェクトのプロパティ 'items'を取得できません。
Vincent Gerris 2017年

3

質問が現在のジョブのワークスペースのクリーンアップに関するものであるとすると、次のコマンドを実行できます。

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

2

したがって、コメントすることはできません。

Upenからの回答はうまくいきますが、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

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

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

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

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


3
リンクに含まれている情報をいくつか追加してください。リンクのみの回答は、SOで求めているものではありません。:)
Chilion

2
この追加は、この回答がまだカバーしていない情報ではありません。実際、それはずっと少ない
リアム

0

dir(またはファイル)を1つだけ削除したい場合は、Groovyを使用して、Jenkinsを管理→Scripts Consoleで、それを削除するスクリプトを実行できます。

たとえば、次のようにしてファイルを確認できます。

dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
  println(it)
}

そして、削除したいフォルダがある場合dh、次のコードを追加するだけです。

dh.deleteDir()

そして削除されます。

注:例に示されているパスはBitnami Jenkinsインストール用であり、実際のパスは異なる場合があります。


0

それを行うオプションがあります。構成->ビルド後のアクション
このオプションは、少なくともJenkinsバージョン2.236にデフォルトで付属しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.