Pelepasan Maven ke Nexus

1. Gambaran keseluruhan

Pada artikel sebelumnya dari siri ini, kami mengatur proses penyebaran dengan Maven ke Nexus . Dalam artikel ini, kami akan mengkonfigurasi Proses Pelepasan dengan Maven - baik di pom projek dan juga pekerjaan Jenkins.

2. Repositori di pom

Agar Maven dapat melepaskan ke Pelayan Repositori Nexus, kita perlu menentukan maklumat repositori melalui elemen distribusiManagement :

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

Rilis Repositori yang dihoskan keluar dari kotak di Nexus, jadi tidak perlu membuatnya secara eksplisit.

3. SCM di Maven pom

Proses Pelepasan akan berinteraksi dengan Sumber Kawalan projek - ini bermaksud kita perlu terlebih dahulu menentukan elemen dalam pom.xml kami :

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

Atau, menggunakan protokol git:

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

4. Plugin Pelepasan

Plugin Maven standard yang digunakan oleh Release Process adalah maven-release-plugin - konfigurasi untuk plugin ini minimum:

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

Yang penting di sini adalah bahawa konfigurasi releaseProfiles sebenarnya akan memaksa profil Maven - profil pelepasan - untuk menjadi aktif semasa proses Pelepasan.

Dalam proses ini, plugin nexus-staging-maven digunakan untuk melakukan penyebaran ke repositori Nexus yang melepaskan nexus:

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

Plugin dikonfigurasi untuk melakukan proses Release tanpa mekanisme pementasan , sama seperti sebelumnya, untuk proses Deployment ( skipStaging = true ).

Dan juga serupa dengan proses Deployment, Melepaskan ke Nexus adalah operasi yang aman - jadi kami akan menggunakan borang pengguna penyebaran Out of the Box Nexus lagi.

Kita juga perlu mengkonfigurasi kelayakan untuk pelayan pelepasan nexus dalam tetapan global.xml ( % USER_HOME% /. M2 / settings.xml ):

  nexus-releases deployment the_pass_for_the_deployment_user  

Ini adalah konfigurasi penuh

5. Proses Pelepasan

Mari kita pecahkan proses pelepasan menjadi langkah kecil dan fokus. Kami melakukan Rilis apabila versi semasa projek ini adalah versi SNAPSHOT - katakanlah 0.1-SNAPSHOT .

5.1. Pelepasan: Bersih

Membersihkan Pelepasan akan:

  • padamkan deskriptor pelepasan ( release.properties )
  • hapuskan sebarang fail POM sandaran

5.2. pelepasan: sediakan

Bahagian seterusnya dari proses Pelepasan adalah Menyiapkan Pelepasan ; ini akan:

  • lakukan beberapa pemeriksaan - semestinya tidak ada perubahan yang tidak dapat diselesaikan dan projek itu harus bergantung pada tidak bergantung pada SNAPSHOT
  • ubah versi projek dalam fail pom ke nombor pelepasan penuh (hapus akhiran SNAPSHOT) - dalam contoh kami - 0.1
  • jalankan suite ujian projek
  • komited dan mendorong perubahan
  • buat teg daripada kod versi bukan SNAPSHOT ini
  • tingkatkan versi projek di pom - dalam contoh kami - 0.2-SNAPSHOT
  • komited dan mendorong perubahan

5.3. pelepasan: membuat persembahan

Bahagian terakhir dari proses Release adalah Melakukan Release ; ini akan:

  • tag pelepasan pembayaran dari SCM
  • membina dan menyebarkan kod yang dikeluarkan

Langkah kedua proses ini bergantung pada output dari langkah Siapkan - pelepasan.properties .

6. Pada Jenkins

Jenkins dapat melakukan proses pelepasan dengan salah satu dari dua cara - ia dapat menggunakan plugin pelepasannya sendiri, atau hanya dapat menjalankan pelepasan dengan pekerjaan maven standard yang menjalankan langkah pelepasan yang betul.

Plugin Jenkins yang ada yang fokus pada proses pelepasan adalah:

  • Lepaskan Plugin
  • Plugin Pelepasan M2

Namun, kerana perintah Maven untuk melakukan pelepasan cukup mudah, kita hanya dapat menentukan tugas Jenkins standard untuk melakukan operasi - tidak perlu plugin.

Oleh itu, untuk pekerjaan Jenkins yang baru (Bina projek maven2 / 3) - kami akan menentukan 2 parameter String: releaseVersion = 0.1 dan developmentVersion = 0.2-SNAPSHOT .

Pada bahagian konfigurasi Build , kita hanya boleh mengkonfigurasi perintah Maven berikut untuk dijalankan:

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

Semasa menjalankan pekerjaan parametrized, Jenkins akan meminta pengguna untuk menentukan nilai untuk parameter ini - jadi setiap kali kita menjalankan tugas, kita perlu mengisi nilai yang tepat untuk releaseVersion dan 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

Artikel ini menunjukkan bagaimana melaksanakan proses Melepaskan projek Maven dengan atau tanpa Jenkins. Mirip dengan Penerapan, proses ini menggunakan plugin nexus-staging-maven untuk berinteraksi dengan Nexus dan memfokuskan pada projek git.