Rilis Maven ke Nexus

1. Ikhtisar

Di artikel sebelumnya dari seri ini, kami menyiapkan proses penerapan dengan Maven ke Nexus . Dalam artikel ini, kami akan mengonfigurasi Proses Rilis dengan Maven - baik di pom proyek maupun di pekerjaan Jenkins.

2. Repositori di pom

Agar Maven dapat merilis ke Nexus Repository Server, kita perlu mendefinisikan informasi repositori melalui elemen distributionManagement :

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

Repositori Rilis yang dihosting sudah dikeluarkan dari kotaknya di Nexus, jadi tidak perlu membuatnya secara eksplisit.

3. SCM di pom Maven

Proses Rilis akan berinteraksi dengan Kontrol Sumber proyek - ini berarti kita harus mendefinisikan file elemen di 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 Rilis

Plugin Maven standar yang digunakan oleh Proses Rilis adalah maven-release-plugin - konfigurasi untuk plugin ini minimal:

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

Yang penting di sini adalah bahwa konfigurasi releaseProfiles akan benar-benar memaksa profil Maven - profil rilis - menjadi aktif selama proses Rilis.

Dalam proses inilah nexus-staging-maven-plugin digunakan untuk melakukan penerapan ke repositori Nexus rilis 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 Rilis tanpa mekanisme staging , sama seperti sebelumnya, untuk proses Deployment ( skipStaging = true ).

Dan juga mirip dengan proses Penerapan, Releasing to Nexus adalah operasi yang diamankan - jadi kita akan menggunakan lagi bentuk pengguna penerapan Out of the Box Nexus.

Kita juga perlu mengkonfigurasi kredensial untuk server rilis-nexus di global settings.xml ( % USER_HOME% /. M2 / settings.xml ):

  nexus-releases deployment the_pass_for_the_deployment_user  

Ini adalah konfigurasi lengkapnya

5. Proses Rilis

Mari kita pisahkan proses rilis menjadi langkah-langkah kecil dan fokus. Kami melakukan Rilis ketika versi proyek saat ini adalah versi SNAPSHOT - katakan 0,1-SNAPSHOT .

5.1. Rilis: Bersih

Membersihkan Rilis akan:

  • hapus deskriptor rilis ( release.properties )
  • hapus semua file POM cadangan

5.2. rilis: persiapkan

Bagian selanjutnya dari proses Rilis adalah Mempersiapkan Rilis ; ini akan:

  • melakukan beberapa pemeriksaan - seharusnya tidak ada perubahan yang tidak terikat dan proyek harus bergantung pada tidak ada ketergantungan SNAPSHOT
  • ubah versi proyek dalam file pom ke nomor rilis lengkap (hapus sufiks SNAPSHOT) - dalam contoh kami - 0,1
  • menjalankan proyek uji suite
  • komit dan dorong perubahan
  • buat tag dari kode berversi non-SNAPSHOT ini
  • meningkatkan versi proyek di pom - dalam contoh kami - 0,2-SNAPSHOT
  • komit dan dorong perubahan

5.3. rilis: lakukan

Bagian terakhir dari proses Rilis adalah Melakukan Rilis ; ini akan:

  • checkout tag rilis dari SCM
  • membangun dan menerapkan kode yang dirilis

Langkah kedua dari proses ini bergantung pada keluaran dari langkah Persiapan - properti rilis .

6. Tentang Jenkins

Jenkins dapat melakukan proses rilis dengan salah satu dari dua cara - Jenkins dapat menggunakan plugin rilisnya sendiri, atau dapat dengan mudah menjalankan rilis dengan tugas maven standar menjalankan langkah rilis yang benar.

Plugin Jenkins yang sudah ada yang berfokus pada proses rilis adalah:

  • Rilis Plugin
  • Plugin Rilis M2

Namun, karena perintah Maven untuk menjalankan rilis cukup sederhana, kita cukup menentukan tugas Jenkins standar untuk melakukan operasi - tidak perlu plugin.

Jadi, untuk pekerjaan Jenkins baru (Membangun proyek maven2 / 3) - kita akan mendefinisikan 2 parameter String: releaseVersion = 0.1 dan developmentVersion = 0.2-SNAPSHOT .

Di bagian Konfigurasi build , kita cukup mengonfigurasi perintah Maven berikut untuk menjalankan:

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

Saat menjalankan pekerjaan parametrized, Jenkins akan meminta pengguna untuk menentukan nilai untuk parameter ini - jadi setiap kali kita menjalankan pekerjaan, 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 cara menerapkan proses Melepaskan proyek Maven dengan atau tanpa Jenkins. Mirip dengan Deployment, proses ini menggunakan nexus-staging-maven-plugin untuk berinteraksi dengan Nexus dan berfokus pada proyek git.