В настоящее время я работаю над переносом почти 80 серверов jenkins для нашей компании на один сервер jenkins. Я уже выяснил, как это будет выглядеть, когда мы перенесем рабочие места, однако получить рабочие места оказалось довольно сложно.
В настоящее время у меня есть команда rsync, которая выполняет все задания и сборки и работает нормально, но на раздутых серверах она больше не работает:
sshpass -p '*****' \
rsync -rmvptgolD \
--exclude='*/archive/*' \
--include='legacyIds' \
--include='nextBuildNumber' \
--include='last*Build' \
--include='log' \
--include='*.txt' \
--include='*.html' \
--include='build.xml' \
--include='changelog.xml' \
--include='config.xml' \
--include='*/' \
--exclude='*' \
-e 'ssh -o StrictHostKeyChecking=no -l user' \
user@server:/var/lib/jenkins/jobs/ \
/<destination>/jobs
да, я знаю, что sshpass
небезопасен, эти серверы были созданы задолго до моего времени, и мы не можем добавить ключи к ним, чтобы сделать это безопасным соединением, сейчас я застрял с частью sshpass
.
Эта команда rsync прекрасно работает на серверах jenkins, у которых не так много заданий / сборок, но я столкнулся с тем, что заставил меня сократить информацию, которая, как мы уверены, больше никому не нужна.
Я столкнулся с одним сервером, который имеет более 5000 рабочих мест, и каждый из них имеет около 50 000 сборок, что является излишним, таким образом приводя цели ниже
Конечная цель - скопировать:
Все вакансии и последние 10 сборок для каждой работы
ИЛИ ЖЕ
Все задания и последняя неудачная сборка и последняя успешная сборка для каждой работы
Мой главный вопрос: как добавить какой-то фильтр rsync, чтобы он включал только последние 10 подкаталогов? или что-то типа того. ИЛИ сохранить символические ссылки И скопировать эту ссылку как отдельный объект?
это пример структуры папок сервера Jenkins:
jenkins/
config.xml
jobs/
Job1/
config.xml
builds/
1/
build.xml
archive/
log
2/
build.xml
archive/
log
3/
build.xml
archive/
log
4/
build.xml
archive/
log
n/
build.xml
archive/
log
lastFailedBuild/ -> 3/
lastSuccessfulBuild/ -> 4/
Job2/
...
Где каталоги build/ [0-9] */ - это идентификатор сборки в jenkins.
Любая помощь была бы очень признательна, я быстро посмотрел на опцию -L, но похоже, что она удаляет символическую ссылку, то же самое с -K и -k
Спасибо!