Deploy artifacts lên Maven Repository trong Jenkins

Để share một thư viện bất kỳ có thể sử dụng trong các Maven project khác nhau trong máy tính của mình, các bạn có thể install thư viện này vào Maven Local Repository. Còn để share một thư viện có thể sử dụng giữa các thành viên trong team, các bạn cần deploy thư viện đó lên một Maven Remote Repository nào đó. Chúng ta có nhiều cách khác nhau để deploy một thư viện lên Maven Remote Repository, một trong số đó là sử dụng chức năng deploy artifacts lên Maven Repository trong Jenkins. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu trong bài viết này các bạn nhé!

Để deploy artifacts lên Maven Repository trong Jenkins, có mấy việc chúng ta phải làm như sau:

Đầu tiên, các bạn cần có một Remote Maven Repository với một user có đầy đủ permission đối với Remote Maven Repository này.

Các bạn có thể sử dụng Nexus Repository Manager để tạo Remote Maven Repository.

Ở đây, mình đã tạo một Remote Maven Repository tên là huongdanjava-releases:

Deploy artifacts lên Maven Repository trong Jenkins

Các bạn lưu ý là chúng ta phải tạo Remote Maven Repository với Repository Type là hosted trong Nexus Repository Manager nhé.

Mình cũng đã tạo một User tên là khanh:

Deploy artifacts lên Maven Repository trong Jenkins

với Role là nx-deployer:

Deploy artifacts lên Maven Repository trong Jenkins

Như các bạn thấy Role nx-deployer này có đủ quyền hạn đối với Maven Repository huongdanjava-releases mà mình đã tạo ở trên.

Tiếp theo chúng ta sẽ định nghĩa một tập tin settings.xml của Apache Maven với các thông tin về Maven Repository và User mà chúng ta đã tạo ở trên.

Tại sao chúng ta phải làm điều này? Đó là bởi vì Jenkins sẽ sử dụng các thông tin này để deploy thư viện của chúng ta đấy các bạn.

Mình đã có bài viết nói về tập tin settings.xml của Apache Maven phần 1, phần 2. Các bạn có thể đọc thêm để hiểu hơn. Với các thông tin mình về Remote Maven Repository đã tạo ở trên, mình sẽ định nghĩa một tập tin settings.xml có nội dung như sau:

Chúng ta sẽ put tập tin settings.xml này vào thư mục người dùng của server đang chạy Jenkins các bạn nhé!

Bây giờ là lúc chúng ta sẽ làm việc với Jenkins. 🙂

Trong phần cấu hình Maven trong Jenkins, các bạn cần để mặc định để Jenkins pick up tập tin settings.xml mà chúng ta đã tạo ở trên, trong thư mục người dùng.

Để làm ví dụ cho bài viết này, mình sẽ sử dụng Maven project spring-jpa trong bài viết về JPA và Spring framework. Project này đã được push lên huongdanjava.com repository sử dụng tài khoản GitHub của mình tại https://github.com/huongdanjavacom/huongdanjava.com.

Bởi vì chúng ta sẽ deploy thư viện này lên một Maven Repository cho các phiên bản release nên mình sẽ sửa lại version cho project này một xí, remove chữ SNAPSHOT.

Các bước để setup Jenkins job cho project này tương tự như mình đã trình bày trong bài viết Build Maven project trong Jenkins nhưng để có thể deploy output file của Jenkins job này lên Remote Maven Repository mà mình đã tạo ở trên, trong phần Post-build Actions, các bạn cần chọn menu item “Deploy artifacts to Maven Repository” như sau:

Deploy artifacts lên Maven Repository trong Jenkins

Kết quả sẽ như sau:

Deploy artifacts lên Maven Repository trong Jenkins

Ở đây, có 2 thông tin mà chúng ta cần cấu hình đó là Repository URL và Repository ID.

Phần “Assign unique versions to snapshots” hữu ích khi các bạn muốn deploy SNAPSHOT version lên Maven Repository. Vì trong ví dụ của mình huongdanjava-releases là Releases Repository nên mình sẽ bỏ chọn option này.

Repository URL là URL của Remote Maven Repository mà các bạn muốn deploy. Của mình là http://localhost:8081/repository/huongdanjava-releases/

Repository ID là id của Remote Maven Repository này được định nghĩa trong tập tin settings.xml. Của mình là huongdanjava-releases.

Deploy artifacts lên Maven Repository trong Jenkins

OK, vậy là phần cấu hình đã xong. Giờ thử build project này xem sao các bạn.

Kết quả:

Deploy artifacts lên Maven Repository trong Jenkins

Trong Remote Maven Repository:

Deploy artifacts lên Maven Repository trong Jenkins

Add Comment