1

В настоящее время я работаю над переносом почти 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

Спасибо!

0