Хотя мы являемся лагерем 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
цикл.
Заранее спасибо!