Каков идеальный способ развертывания модулей на фабрике?

Заявление об ограничении ответственности - Я новичок в коконодах. Это может быть очень глупый вопрос для большинства разработчиков iOS.

Артефакционная документация ссылка для загрузки cocoapods достаточно пояснительный и легко понятный. Я выполнил эти шаги и попытался загрузить хорошо известный модуль (ABCustomUINavigationController) в свой собственный локальный экземпляр artifactory.

В разделе документации по развертыванию написано  введите описание изображения здесь

Я использую веб-интерфейс для развертывания модуля (в формате .tar.gz) в артефакте. Я сделал это следующим образом:  введите описание изображения здесь

Это идеальный способ развертывания модулей? Кроме того, если я хочу загрузить xcodeproj (выходные данные сборки) модуля вместе с файлом .podspec, тогда как мне следует пойти об этом?

Спасибо.


person Aryak Sengupta    schedule 05.05.2016    source источник


Ответы (2)


Я вижу, вы загрузили сам модуль в папку .specs вашего репо, именно здесь Artifactory хранит index, который клиент pod позже извлекает, когда вы используете pod repo-art add или pod repo-art update. Хотя нет никаких ограничений в отношении места для размещения самих модулей, я бы держал их вне папки .specs, чтобы все было организовано для себя.

Что касается выходных данных сборки - CocoaPod обычно содержит исходный код (и, возможно, другие ресурсы), который может включать проект, а не выходные данные сборки проекта, поэтому я не уверен, в чем преимущество загрузки дополнительного контента (например, сборки продукты) вместе с ним и отделены от него.

В любом случае клиент pod обрабатывает стручки путем поиска подходящей записи в индексе (т.е. всего, что находится под .specs в вашем репо), которая удовлетворяет требуемой версии, определенной в Podfile вашего проекта, а затем с использованием адреса в этом индексном файле ( что в нашем случае указывает на Artifactory), чтобы загрузить требуемый Pod.

Другими словами, все остальное, что вы помещаете в репозиторий, кроме пода с архивированием, игнорируется как Artifactory, так и клиентом pod.

person danf    schedule 05.05.2016
comment
Спасибо за подробный ответ. Итак, если я правильно вас понял, я могу развернуть файл .podspec только в артефакте под .specs в моем репо? Просьба уточнить! - person Aryak Sengupta; 05.05.2016
comment
Вам не нужно развертывать .podspec файл, поскольку он уже содержится в pod (tar.gz файле), который вы загрузили, или, по крайней мере, должен быть - это соглашение, и Artifactory извлекает его для вас и помещает в папку .specs - - ›Все, что вам нужно сделать, это развернуть pod, и он будет автоматически помечен тегами и доступен для клиента. Место, куда вы загружаете в, не должно быть папкой .specs - выберите другое место, которое вам подходит. - person danf; 05.05.2016
comment
Спасибо. Я понял. Да, я загрузил весь пакет в формате .tar.gz, и файл .podspecs автоматически помещается в папку .specs. На самом деле мне нужно развернуть файл .framework в артефакте вместе с файлом .podspecs вместо развертывания всего модуля в артефакте. Можете ли вы помочь мне с этим? - person Aryak Sengupta; 06.05.2016
comment
Я действительно не понимаю, чего вы пытаетесь достичь с помощью этого, клиент pod работает не так ... клиент модуля загружает pods, открывает их и, возможно, выполняет другие действия, которые вы определили в файле .podspec для интеграции содержащегося кода в нем с вашим проектом xcode, который хочет использовать pod. он не может обрабатывать необработанные .framework файлы - только если они являются частью pod, и вы, например, использовали директиву use_frameworks!. - person danf; 06.05.2016

Для пользователей MAC:

Шаг 1:

brew install gnu-tar 

Причина: По умолчанию mac использует tar для архивирования и имеет проблемы с артефактом jFrog

Использование:

gtar czvf swift-sdk.tar.gz *
gtar czvf testPOD.tar.gz testPOD/testPOD/* testPOD/testPOD.podspec

Примечание. Убедитесь, что ненужные файлы не заархивированы. Например, если .git присутствует в zip-архиве, это создает множество проблем.

Шаг 2:

Перейдите по официальной ссылке и видео https://www.jfrog.com/confluence/display/RTF/CocoaPods+Repositories#app-switcher.

Некоторые из полезных команд:

Чтобы добавить репозиторий спецификации на локальный компьютер:

pod repo-art add cocoapods-local "http://localhost:8081/artifactory/api/pods/cocoapods-local"

Для обновления репо:

pod repo-art update cocoapods-local

Перенести артефакты в jFrog:

curl -uadmin123:123456 -XPUT http://localhost:8081/artifactory/cocoapods-local/testPOD/0.1.0/ -T testPOD.tar.gz

Репо спецификации Cocoapod:

source 'https://github.com/CocoaPods/Specs.git'

Укажите на репозиторий спецификации в Podfile:

plugin 'cocoapods-art', :sources => [ 'cocoapods-local' ]

person Rakesh Yembaram    schedule 11.11.2019
comment
Это для первого развертывания локального проекта модуля. В случае, если я обновлю проект, как мне отправить изменения в качестве новой версии в artifactory? - person yaali; 18.12.2019
comment
Эта вещь gtar озадачила меня, когда я обнаружил, что на самом деле простая команда tar не создавала архив по вкусу Artifactory. - person Sergiu Todirascu; 07.07.2021