Відповіді:
У Дженкінсі є спосіб очищення робочого простору. Ви можете очистити робочу область перед збіркою або після збірки.
Спочатку встановіть плагін для очищення робочої області .
Щоб очистити робочу область перед збіркою: У розділі Навколишнє середовище встановіть прапорець Видалити робочу область перед початком збірки.
Для того, щоб очистити робочий простір після складання: Під заголовком після складання Дії виберіть Видалити робочий простір , коли збірка проводиться з Add після складання Дії меню, що випадає.
Якщо ви хочете очистити його вручну, для мене з моєю версією 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
перерахує 10 найкращих каталогів, що їдять дисковий простір у / etc /
Зазвичай папка ./job/ або ./workspace/ може бути найбільшою папкою. Будь ласка, увійдіть всередину та видаліть потрібну вам базу (НЕ видаляйте всю папку).
rm -rf theFolderToDelete
Плагін очищення робочої області
У файл Дженкінса додати
cleanWs()
Це видалить робочу область після завершення збірки
cleanWs()
не був присутній на цільовій сторінці плагіна як синтаксис для додавання до мого Jenkinsfile
.
ВАЖЛИВО: Безпечно видалити робочу область для заданої роботи Дженкінса до тих пір, поки робота зараз не працює!
Примітка: Я припускаю , що ваш $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 та сортування для перерахування робочих областей у порядку від найбільшого до найменшого. Потім він використовує голову, щоб захопити перші 10:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Ви можете запустити наведений нижче сценарій в Manage Jenkins → Scripts Console для видалення робочих областей усіх завдань одним пострілом. Ми зробили це, щоб очистити місце у файловій системі.
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 працює чудово, але ні, якщо у вас є робота Дженкінса в трубопроводі, змішана з роботою у вільному стилі. Не існує такого методу, як 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 (або файл), ви можете скористатися Groovy і Manage Jenkins → Scripts Console, запустивши сценарій, який видаляє його.
Наприклад, ви можете переглянути файли за допомогою:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
А потім, коли у вас є папка, яку ви хочете видалити dh
, ви можете просто додати наступний код:
dh.deleteDir()
І його буде видалено.
Примітка: Шлях, показаний у прикладі, стосується інсталяції Bitnami Jenkins, ваш може бути іншим.
Є варіант зробити це. Налаштування -> Дії після збірки
Опція за замовчуванням принаймні у версії Jenkins 2.236