Chúng tôi có rất nhiều dự án Java, được xây dựng bằng Jenkins. Chúng được triển khai cho máy chủ Nexus của riêng chúng tôi. Vấn đề là, chúng tôi cần cung cấp các thư viện này cho bên thứ ba, nhưng không có mã nguồn. Vì vậy, đối với từng dự án, trong Nexus ta có:Triển khai tạo tác Maven cho nhiều kho lưu trữ với các cài đặt khác nhau
- chí kho cho nhà phát triển của chúng tôi (bao gồm triển khai mã nguồn)
- Snapshots kho cho nhà phát triển của chúng tôi (mã nguồn bao gồm triển khai)
- Nhà phát hành bên thứ ba kho lưu trữ (chỉ JAR + POM)
- (và sẽ rất tốt nếu có): Ảnh chụp nhanh của bên thứ ba kho lưu trữ (chỉ JAR + POM) cho bên thứ ba hàng đêm xây dựng
Câu hỏi đặt ra là: cách này thường được xử lý trong thế giới Jenkins/Nexus? Tôi muốn có một công việc duy nhất trong Jenkins xử lý việc xây dựng CI và quá trình phát hành (triển khai artefact) "tự động". Hiện nay tôi đang sử dụng nhiều <distributionManagement>
cấu hình trong "pom.xml chính gốc" của chúng tôi (bao gồm tất cả các dự án):
[...]
<profiles>
<profile>
<id>default</id>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release</name>
<url>http://path/to/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://path/to/nexus/content/repositories/snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
</profile>
<profile>
<id>third-party</id>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release</name>
<url>http://path/to/nexus/content/repositories/third-party/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://path/to/nexus/content/repositories/third-party-snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
</profile>
</profiles>
Từ các tài liệu Maven, nó có vẻ là không có cách nào sử dụng nhiều kho trong cùng xây dựng vòng đời, chưa kể đến thực tế là chúng ta cần/không cần nguồn dựa trên repo đích.
Tôi có thể thực hiện một mẹo khi tạo Công việc trong Jenkins, với "Mục tiêu và tùy chọn" của Maven: clean deploy -P third-party
và sau đó thêm hành động Post-build - "Triển khai hiện vật vào kho lưu trữ Maven" với dữ liệu "mặc định" - trong trường hợp này, chỉ SNAPSHOTs sẽ chuyển tới cả repo và đồ tạo tác thông qua Jenkins Maven Release Plug-in chỉ đi vào một kho lưu trữ.
Bất kỳ ý tưởng thực tế nào tôi có thể làm điều này mà không làm quá tải hệ thống phân cấp công việc CI của chúng tôi như thế nào?
Cảm ơn trước!
thể trùng lặp của [Nhiều triển khai trong maven] (http://stackoverflow.com/questions/635154/multiple-deployments- in-maven) –
Vâng, tôi đã kiểm tra điều đó. Trên thực tế, plugin Wagon được đề xuất bên dưới có thể có cùng chức năng với 'merge-maven-repos', có thể sử dụng được cho bài đăng khác. Vì vậy, trường hợp xấu nhất chúng ta cần phải thực hiện một plugin tùy chỉnh, tôi đã chỉ tự hỏi nếu có một "cách phổ biến" của việc làm nó ngay cả với sự giúp đỡ của Jenkins. – Siaynoq