Пускане на Maven в Nexus

1. Общ преглед

В предишната статия от тази поредица създадохме процес на внедряване с Maven в Nexus . В тази статия ще конфигурираме процеса на освобождаване с Maven - както в паметта на проекта, така и в работата на Jenkins.

2. Хранилище в пом

За Maven, за да може да се освободи до Nexus Хранилище сървър, ние трябва да се определи хранилище информация чрез distributionManagement елемент:

  nexus-releases //localhost:8081/nexus/content/repositories/releases  

Хостваното хранилище за издания излиза от кутията на Nexus, така че няма нужда да го създавате изрично.

3. SCM в пом. Maven

Процесът на издаване ще взаимодейства с контрола на източника на проекта - това означава, че първо трябва да дефинираме елемент в нашия pom.xml :

 scm:git://github.com/user/project.git //github.com/user/project scm:git://github.com/user/project.git 

Или, използвайки git протокола:

 scm:git:[email protected]:user/project.git scm:git:[email protected]:user/project.git scm:git:[email protected]:user/project.git 

4. Приставката за освобождаване

Стандартният плъгин Maven, използван от процес на освобождаване, е плъгинът maven-release - конфигурацията за този плъгин е минимална:

 org.apache.maven.plugins maven-release-plugin 2.4.2  [email protected]{project.version} true releases  

Важното тук е, че конфигурацията releaseProfiles всъщност ще принуди профил на Maven - профилът на версии - да стане активен по време на процеса на освобождаване.

В този процес приставката nexus-staging-maven се използва за извършване на разгръщане в хранилището Nexus -releases :

  releases    org.sonatype.plugins nexus-staging-maven-plugin 1.5.1   default-deploy deploy  deploy     nexus-releases //localhost:8081/nexus/ true      

Приставката е конфигурирана да изпълнява процеса на освобождаване без механизма за подреждане , както преди, за процеса на внедряване ( skipStaging = true ).

И също подобно на процеса на внедряване, пускането в Nexus е защитена операция - така че ще използваме потребителската форма за внедряване Out of the Box отново Nexus.

Също така трябва да конфигурираме идентификационните данни за сървъра за издаване на nexus в глобалните settings.xml ( % USER_HOME% /. M2 / settings.xml ):

  nexus-releases deployment the_pass_for_the_deployment_user  

Това е пълната конфигурация

5. Процесът на освобождаване

Нека разделим процеса на освобождаване на малки и фокусирани стъпки. Изпълняваме издание, когато текущата версия на проекта е версия SNAPSHOT - да речем 0.1-SNAPSHOT .

5.1. Пускане: Почистете

Почистването на версия ще:

  • изтрийте дескриптора на освобождаването ( release.properties )
  • изтрийте всички резервни POM файлове

5.2. освобождаване: подгответе

Следващата част от процеса на освобождаване е Подготовка на изданието ; това ще:

  • извършете някои проверки - не трябва да има неангажирани промени и проектът да зависи от липса на SNAPSHOT зависимости
  • променете версията на проекта във файла pom на пълен номер на издание (премахнете суфикса SNAPSHOT) - в нашия пример - 0.1
  • стартирайте тестовите пакети на проекта
  • ангажирайте и натиснете промените
  • създайте маркера от този версионен код, който не е SNAPSHOT
  • увеличете версията на проекта в pom - в нашия пример - 0.2-SNAPSHOT
  • ангажирайте и натиснете промените

5.3. освобождаване: изпълнение

Последната част от процеса на освобождаване е Изпълнение на освобождаването ; това ще:

  • отметка за освобождаване от SCM
  • изграждане и внедряване на пуснат код

Тази втора стъпка от процеса разчита на резултата от стъпката Подготовка - release.properties .

6. На Дженкинс

Дженкинс може да изпълнява процеса на освобождаване по един от двата начина - може или да използва собствени плъгини за освобождаване, или може просто да изпълни изпълнението на изданието със стандартна задача Maven, изпълняваща правилните стъпки за освобождаване.

Съществуващите плъгини на Jenkins, фокусирани върху процеса на освобождаване, са:

  • Освободете приставката
  • M2 Release Plugin

Тъй като командата Maven за изпълнение на изданието е достатъчно проста, можем просто да дефинираме стандартна работа на Jenkins, за да извършим операцията - не са необходими плъгини.

И така, за нова работа на Дженкинс (Изграждане на проект maven2 / 3) - ще дефинираме 2 параметъра String: releaseVersion = 0.1 и developmentVersion = 0.2-SNAPSHOT .

В раздела за конфигуриране на Build можем просто да конфигурираме следната команда на Maven да се изпълнява:

Release:Clean release:prepare release:perform -DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}

Когато изпълнява параметризирана работа, Дженкинс ще подкани потребителя да посочи стойности за тези параметри - така че всеки път, когато изпълняваме задачата, трябва да попълним правилните стойности за releaseVersion и developmentVersion .

Also, it's worth using the Workspace Cleanup Plugin and check the Delete workspace before build starts option for this build. However keep in mind that the perform step of the Release should necessarily be run by the same command as the preparestep – this is because the latter perform step will use the release.properties file created by prepare. This means that we cannot have a Jenkins Job running prepareand another running perform.

7. Conclusion

Тази статия показа как да се приложи процесът на издаване на проект на Maven със или без Дженкинс. Подобно на разполагането, този процес използва приставката nexus-staging-maven-plugin за взаимодействие с Nexus и се фокусира върху git проект.