Artifactory: преобразование удаленного репо в локальное репо

Мой работодатель некоторое время неправильно использовал Bintray в качестве нашего двоичного репозитория. Вместо этого мы, наконец, переходим на Artifactory и закрываем Bintray. Но это кажется почти невыполнимой задачей. Невозможно экспортировать репозитории Bintray в zip-архив. Загрузка репозиториев означает загрузку каждого файла вручную из пользовательского интерфейса или через их API. Я пробовал два подхода к автоматизации:

1) wget для сканирования нашего лотка следующим образом: wget -e robots = off -o ~ / wget.log -w 1 -m -np --user --password "https: //.bintray.com", который дал все файлы в репозиториях. Но это решает только половину проблемы. Я не мог понять, как импортировать файлы в репозиторий в artifactory (все репозитории имеют размер более 100 Мб каждый и поэтому не могут быть загружены по какой-то причине).

2) Я настроил репозитории Bintray как удаленные репозитории и включил Active Replication. Кажется, сейчас это сработало. Но я не знаю, будут ли они удалены при перемещении учетной записи Bintray или даже если они будут храниться в Artifactory. Поэтому я хотел бы преобразовать удаленное репо в локальное, чтобы убедиться, что оно постоянно хранится в артефакте, есть ли способ сделать это? Если да, то как?


person kschnack    schedule 30.06.2017    source источник


Ответы (1)


Я постараюсь ответить на оба ваших вопроса ниже.

  1. Что значит нельзя загружать больше 100 МБ? Какую версию Artifactory вы используете? Локальная установка или установка через SaaS? Как вы пытаетесь загрузить свои файлы в Artifactory? Вы пробовали импортировать контент с помощью функции импорта Artifactory? (Админ -> Импорт и экспорт -> Импорт репозитория) Похоже, вы используете пользовательский интерфейс для загрузки, и если да, то вы можете настроить максимальный размер загрузки на странице Админ -> Общая конфигурация.
  2. Если вы имеете в виду, что у вас есть весь контент из Bintray, кэшированный в кэше удаленного репозитория в Artifactory, просто используйте опцию «Копировать» или «Переместить» и переместите контент в локальный репозиторий. Это гарантирует, что весь контент будет храниться локально.
person Ariel    schedule 02.07.2017
comment
Чтобы уточнить, операции копирования / перемещения - это дешевое копирование / перемещение, поскольку фактический контент не передается, а только указатели в базе данных. Чтобы скопировать / переместить контент, просто перейдите в браузер дерева в пользовательском интерфейсе Artifactory и щелкните правой кнопкой мыши кеш удаленного репозитория - ›Копировать / Переместить. - person Ariel; 02.07.2017
comment
Это означает, что когда у вас есть удаленное репо, и вы пытаетесь перенести его в локальное репо, он будет переносить только то, что находится в кеше удаленного репо? (Мне это кажется нормальным, но не уверен) - person lvthillo; 18.09.2017
comment
точно, Artifactory не может перемещать контент, которого у него нет. Таким образом, он переместит только кешированные артефакты. - person Ariel; 18.09.2017
comment
Спасибо, у нас есть Artifactory OSS и Artifactory PRO, нам нужно перенести локальное репо из oss, но мы не можем переместить локальное репо в локальное репо в нашем PRO Artifactory, потому что это OSS (не имеет этой функции). Мы можем только тянуть (на PRO), но это возможно только для удаленных репозиториев. Значит, невозможно использовать это решение и после этого переместить наш удаленный репозиторий на Artifactory PRO в локальный репозиторий? - person lvthillo; 18.09.2017
comment
Я знаю функцию импорта / экспорта, но репо необходимо синхронизировать, пока не будет завершена полная миграция некоторых заданий jenkins. - person lvthillo; 18.09.2017
comment
Вы можете использовать опцию инкрементного резервного копирования и импортировать в новый экземпляр только измененный репозиторий. Это означает, что запустите процесс резервного копирования с опцией инкремента, как только это будет сделано, импортируйте данные в новый экземпляр, после того, как будет выполнен полный импорт, снова запустите инкрементное копирование и импортируйте измененный репозиторий. В этом есть смысл? - person Ariel; 18.09.2017
comment
@Ariels, спасибо, я вижу, это не настоящая функция импорта / экспорта, а действительно резервное копирование. У меня есть один большой репозиторий, который на самом деле содержит несколько репо. Возможно, это не совсем правильный подход, но это означает, что в первый раз выполняется резервное копирование всего репо, а во второй раз выполняется резервное копирование только новых пакетов, которые теперь находятся внутри этого репо? Автоматически или работает только на уровне репозитория? - person lvthillo; 19.09.2017
comment
у нас будет одно репо со 100 различными подпапками и пакетами. Мы перенесем это репо, адаптируем задания jenkins для 5 из 100 вложенных папок, поэтому 5 из них будут содержать новые пакеты, а остальные по-прежнему будут созданы в старом репо. Затем мы переместим текущее состояние 5 других пакетов и снова адаптируем некоторые задания Jenkins для развертывания в этом новом репо вместо старого. Так что нам действительно нужен инкрементный новый импорт + сохранение новых пакетов, созданных в новом репо. - person lvthillo; 19.09.2017
comment
да. именно это и означает инкремент. Если это решило ваш вопрос, подумайте о том, чтобы отметить ответ как правильный, чтобы другие знали, что он сработал для вас. - person Ariel; 19.09.2017
comment
Я воссоздал этот сценарий. Единственная проблема: я повторно развертываю существующий артефакт в нашем новом Artifactory. Когда я делаю новый импорт нашей инкрементной резервной копии из старого в моем новом артефакте, он перезаписывает этот повторно развернутый артефакт обратно в содержимое из нашего старого артефакта. Кажется, он проверяет не контрольную сумму, а только имя файла? (пример: новое содержимое для text1.txt в Artifactory, но этот файл существует с другим содержимым в старом Artifactory, выполняется новый импорт = старое содержимое text1.txt возвращается в наш новый Artifactory - контрольная сумма была другой). - person lvthillo; 27.09.2017