Синхронизация контроля версий и хранилища артефактов - PullRequest
3 голосов
/ 22 ноября 2011

Хотя мы являемся лагерем Java, использующим SVN для управления исходными кодами и Apache Ivy для управления зависимостями, этот вопрос широко применим к любой платформе / языку, SCM и инструменту хранилища артефактов.

У меня есть технический руководитель и копье-руководитель компании впервые использовал менеджер зависимостей, такой как Айви, для управления всеми нашими JAR-файлами.Мы настроили то, что мы называем « Ivy Repo », в котором мы размещаем как наши собственные (разработанные нами) JAR-файлы, так и часто используемые зависимости (Apache JAR-файлы, Spring,и т. д.).

Мы начинаем сталкиваться с проблемами, когда разработчик должен будет внести изменения в наш собственный JAR Commons (Commons.jar), а затем запустить <ivy:publish> до того, как изменения кодабыл проверен код, передан в SVN и построен с сервера CI.Это происходит, когда разработчик работает над исправлением ошибки или новой функцией в одном проекте, но ему необходимо внести изменения в зависимость, такую ​​как Commons.jar, чтобы выполнить свою задачу.

Таким образом, мы находимся вСитуация, когда Ivy и SVN не синхронизированы друг с другом.

Очевидно, что мы могли бы создать правило, в котором никому не разрешается публиковать без предварительного просмотра кода, его фиксации и тестирования кода с командой.В качестве альтернативы, мы могли бы просто запретить разработчикам публиковать материалы целиком.

Прежде чем идти по какому-либо пути (мы склоняемся к последнему), нам было интересно, сталкивались ли другие команды с такими же проблемами и какие решения были реализованы для предотвращенияthis.

Возможно, стоит рассмотреть такие инструменты, как Artifactory или SonaType, но никто из нас не имеет опыта работы с ними, и не похоже, что они поддерживают подобные бизнес-правила.

Короче говоря: мы ищем способ предотвратить преждевременную публикацию JAR, чтобы в нашем стандарте публикация всегда была последней фазой code >> review >> commit >> CI >>deploy цикл.

Заранее спасибо!

1 Ответ

3 голосов
/ 23 ноября 2011

Artifactory обеспечивает детальное управление разрешениями , которое полезно для контроля того, кто может что развертывать и где;например, вы можете создать правило, запрещающее публикацию файла JAR на основе его имени \ пути (а именно, вашего Commons.jar), и применять его ко всем пользователям, кроме тех, которые могут его одобрить.Если вам требуется больше гибкости, профессиональная версия Artifactory также имеет функцию Пользовательские плагины , которая в основном позволяет вам писать отличные плагины для Artifactory и предоставляет вам богатый контекст и ловушки для различных операций.Кроме того, метаданные свойств Artifactory позволяют аннотировать любые артефакты и папки с помощью пользовательских тегов, которые также можно использовать для различных условий.

Объедините их, и пусть ваше воображение иссякнет.

...