Как гарантировать, что maven случайно не развернется для выпуска repoisitory?

#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. Пожалуйста. Дайте мне знать, как это работает, либо с проверкой, либо с комментарием, если вам нужна дополнительная помощь!