2012-08-29 38 views
9

tôi có những gì có vẻ là một câu hỏi đơn giản về cách thiết lập Jenkins và maven 3.Làm thế nào để làm cho Jenkins kích hoạt một xây dựng trên một dự án phụ thuộc khi một phụ thuộc là xây dựng

Vì lợi ích của sự đơn giản cho phép nói rằng chúng tôi có bốn dự án:

mẫu mà không có người phụ thuộc
Commons mà phụ thuộc vào mẫu
server mà phụ thuộc vào chung và mẫu
Frontend mà phụ thuộc vào mẫu

Những gì tôi muốn đạt được là một thành công xây dựng dựa trên mô hình gây nên xây dựng mới trên tất cả các dự án mà trong pom của nó có một sự phụ thuộc vào Model (đây Common, Server và Frontend)

Nếu lỗi thường gặp thì không cần phải xây dựng máy chủ.

Trong trường hợp trên có vẻ như tôi có thể sửa lỗi này bằng cách thiết lập thủ công các dự án phụ thuộc trên Model và Commons nhưng thông tin này có thể được tìm thấy trong tệp pom cho từng dự án (Server và Frontend). rằng Jenkins có thể tự mình hình dung ra điều này. Có thể Jenkins suy ra cây phụ thuộc bằng cách phân tích cú pháp pom trên từng dự án được xác định trong Jenkins và thực hiện một số thứ tự xây dựng/xử lý phụ thuộc tối ưu một cách tự động hoặc tôi phải thiết lập "Block build khi upstream project is building" và "Build sau khi các dự án khác được xây dựng [Danh sách các dự án phụ thuộc] "như mô tả ở trên?

Tôi đang sử dụng phiên bản Jenkins 1.473 và Maven 3.
Dự án maven của chúng tôi không sử dụng thẻ cha hoặc thẻ mô-đun.

/Benjamin

Trả lời

4

Giải pháp tốt nhất cho điều đó là tạo ra một multi-module build mà kết quả trong cấu trúc sau:

root (pom.xml) 
    +--- model (pom.xml) 
    +--- commons (pom.xml) 
    +--- server (pom.xml) 
    +--- frontend (pom.xml) 

trong mỗi module ví dụ như trong commons bạn định nghĩa một sự phụ thuộc vào mô hình mô-đun, vv việc xây dựng trật tự sẽ được thực hiện tự động bởi maven.

Với loại đó của dự án bạn có thể dễ dàng đi vào thư mục gốc và làm:

mvn clean package 

Bạn cũng có thể sử dụng:

mvn --pl --am server 

đó sẽ xây dựng máy chủ mà còn tất cả các module tùy cách tự động.

+0

Điều này không có nghĩa là tất cả các mô-đun sẽ được xây dựng mỗi lần? Tôi muốn nó chỉ xây dựng các phần cần thiết tùy thuộc vào dự án nào nhận được yêu cầu xây dựng. – Benjamin

+2

Trong jenkins có một cấu hình được đặt tên là "xây dựng gia tăng", điều này sẽ chỉ xây dựng những gì đã thay đổi. – khmarbaise

3

Hai giải pháp.

  1. Tạo mô-đun pom phía trên các dự án khác chỉ khai báo thứ tự xây dựng (mô hình, commons, máy chủ và giao diện người dùng). Và chỉ cần cài đặt dự án này vào Jenkins

  2. Trong mỗi công việc, có hộp kiểm để kích hoạt dưới dạng "những gì đang kích hoạt xây dựng" -> xây dựng sau khi dự án. (Tên của tùy chọn có lẽ không chính xác những gì tôi đã viết từ năm Jenkins của tôi được cấu hình bằng tiếng Pháp ...)

+0

# 1 sẽ gây ra khi xây dựng Common Server và Frontend cũng được xây dựng vì chúng phụ thuộc vào Common và Model không được xây dựng vì nó không được kích hoạt (vì không có thay đổi SCM)
# 2 là những gì tôi đã cố gắng để mô tả như những gì tôi hiện đang làm. Điều này có nghĩa rằng tôi phải tự thiết lập các phụ thuộc xây dựng cho Mô hình và tất cả các dự án cấp cao nhất khác. Những gì tôi muốn là để tìm hiểu xem có một cách để Jenkins để con số này ra bởi nó tự mà không có tôi xác định lại những gì đã có thể được tìm thấy bằng cách nhìn vào mỗi pom cho mỗi dự án. – Benjamin

6

Giả sử bạn muốn gắn bó với 4 cá nhân bản xây dựng chứ không phải là một đa mô-đun xây dựng, sau đó là cách để làm điều đó là trong mỗi 4 dự án đánh dấu vào ô dưới xây dựng gây nên

"Xây dựng bất cứ khi nào một sự phụ thuộc SNAPSHOT Sau đó, bạn thực hiện việc kiểm tra cho Mô hình, jenkins bắt đầu xây dựng dự án đó dựa trên cuộc thăm dò SVN, khi quá trình xây dựng hoàn thành, nó thấy rằng phổ biến có sự phụ thuộc vào mô hình và do đó nó kích hoạt một phiên bản chung để xem liệu nó có còn được xây dựng dựa trên mô hình được cập nhật hay không.

Công việc jenkins phải được tạo dưới dạng công việc maven để có tùy chọn này. Nó không áp dụng cho các dự án kiểu tự do, ngay cả khi chúng chạy một kịch bản lệnh gọi maven.

+1

Tôi không thấy trình kích hoạt xây dựng như vậy. Nó có yêu cầu một plugin không? – not2savvy

+1

Đảm bảo bạn đã tạo một công việc maven và không phải là một công việc kiểu tự do. Nó không đòi hỏi một plugin bổ sung, như plugin maven được bao gồm trong cài đặt cơ sở –

+0

Cảm ơn nhưng tôi thực tế đang hát các dự án tự do. Bạn có thể muốn thêm thông tin tat vào câu trả lời của bạn. – not2savvy

Các vấn đề liên quan