回答:
ジェンキンスのワークスペースをクリーンアップする方法があります。ビルド前またはビルド後にワークスペースをクリーンアップできます。
まず、Workspace Cleanup Pluginをインストールします。
ビルド前にワークスペースをクリーンアップするには:[ ビルド環境]で、[ビルドを開始する前にワークスペースを削除する]チェックボックスをオンにします。
ビルド後にワークスペースをクリーンアップするには:[ ビルド後のアクション]という見出しの下で、[ ビルド後のアクションの追加 ]ドロップダウンメニューから[ビルドが完了したらワークスペースを削除]を選択します。
手動でクリーンアップしたい場合は、私のバージョンのjenkinsを使用している場合(追加のプラグインをインストールする必要はないようですが、知っている人がいます)、左側の列に「ワークスペース」リンクがあり、プロジェクトをクリックします。次に[ワークスペース]をクリックすると、左側の列の下にある[現在のワークスペースを消去]リンクが表示されます。
上記のソリューションの他に、より一般的な方法があります。最大のスペースコンシューマをLinuxマシンから直接削除します。以下の手順に従ってください。
ls -lartを使用して隠しフォルダーも一覧表示します。通常、jenkinインストールは.jenkins /フォルダーに配置されます
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
ディスク容量を高レベルで表示する
du -sh ./*/
現在のパスの各サブフォルダーの合計メモリを一覧表示します。
du -a /etc/ | sort -n -r | head -n 10
/ etc /のディスク領域を使用している上位10個のディレクトリをリストします
通常、。/ job /フォルダーまたは./workspace/フォルダーを最大のフォルダーにすることができます。中に入って、必要に応じてベースを削除してください(フォルダー全体を削除しないでください)。
rm -rf theFolderToDelete
cleanWs()
が、プラグインのランディングページにに追加する構文として表示されませんでしたJenkinsfile
。
重要:ジョブが現在実行されていない限り、特定のJenkinsジョブのワークスペースを削除しても安全です。
注:$JENKINS_HOME
がデフォルトに設定されていると想定しています/var/jenkins_home
。
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/{}
これは、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/{}
以下のスクリプトを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")
}
}
したがって、コメントすることはできません。
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")
上記のオプションが表示される前に、このプラグインをインストールする必要があります
このプラグインは、すべてのジョブ構成にチェックボックスを追加して、ステップ(ソース管理を含む)が実行される前にワークスペース全体を削除できるようにします
これは、ビルドがどのように実行されるかを保証するために、常に既知のポイントから開始することを確認するのに役立ちます。
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インストール用であり、実際のパスは異なる場合があります。