#maven #artifactory #maven-plugin #mvn-repo
#maven #artifactory #maven-плагин #mvn-repo
Вопрос:
Итак, я работаю для клиента, который использует инструкции развертывания mvn в своих сценариях сборки, и я пытаюсь найти способ предотвратить случайную перезапись артефактов maven в репозитории выпуска Artifactory, например, если разработчик забудет пометить свою версию POM с помощью -SNAPSHOT в своей ветке функций.
Я не эксперт по maven, но я видел несколько предложений, например, использование определенных плагинов maven, но использование этих плагинов должно быть настроено в POM, а затем я возвращаюсь к тому, с чего начал, что, если это забыто в ветке функций? Должен быть установленный метод, гарантирующий, что никакие артефакты из ветвей функций не будут развернуты в репозиторий выпуска и что никакие артефакты из ветвей выпуска не будут случайно развернуты в репозиторий моментальных снимков.
Один из способов, который я могу придумать, и который также был предложен, — это просто запретить повторное развертывание в репозитории выпуска в Artifactory, но что, если у меня есть сборка проверки, которая запускается после создания PR, а затем запускается другая сборка CI и пытается повторно развернуть?
Есть ли другой хороший способ добиться этого?
Комментарии:
1. Перераспределение для репозиториев releases всегда должно быть предотвращено, поскольку релизы неизменяемы. Зачем нужно менять на
-SNAPSHOT
в ветке функций?main
Ветвь уже должна быть-SNAPSHOT
такой, чтобы каждая ветвь функций уже-SNAPSHOT
была на ней… Выпуск должен запускаться через Jenkins, который изменяет версию на не МОМЕНТАЛЬНЫЙ СНИМОК… это решило бы проблему…2. Хорошо, я в замешательстве, опять же, я обычно не работаю с maven. Знаете ли вы какой-нибудь хороший ресурс, где описан весь этот рабочий процесс?
Ответ №1:
Одним из решений является обеспечение того, чтобы у определенных пользователей / групп не было разрешения на удаление.
Смотрите больше здесь: https://www.jfrog.com/confluence/display/JFROG/Permissions#Permissions-RepositoryPermissions .
ПРИМЕЧАНИЕ: я давно не использовал Artifactory, но это имеет смысл в соответствии с документами.
Комментарии:
1. да, у нас тоже есть этот механизм, но это влияет только на реальных пользователей, а не на учетную запись, под которой я запускаю систему сборки. У этой учетной записи должны быть разрешения на перезапись
2. Другим решением является добавление суффиксов в релизы для дубликатов, например,
-X
. Репозиторий просто укажет на последнюю версию, или вы можете указать суффикс версии. Я знаю, что это возможно, потому что мы сделали это в прошлой позиции, но забыли, как это сделать.3. Вместо решения в моем последнем комментарии вы всегда можете добавить временную метку к подобному артефакту
<finalName>${project.artifactId}-${project.version}-${maven.build.timestamp}</finalName>
. Вы также можете использоватьbuildnumber-maven-plugin
для создания свойства с номером.4. Я проверю buildnumber-maven-plugin, спасибо
5. Пожалуйста. Дайте мне знать, как это работает, либо с проверкой, либо с комментарием, если вам нужна дополнительная помощь!