2013-03-24 31 views
8

Tôi đã thiết lập Jenkins để tự động xây dựng một số nhánh git của dự án của tôi. Việc xây dựng cũng kích hoạt phân tích Sonar, như một hành động sau xây dựng.Phân tích Sonar sử dụng nhiều nhánh git trong Jenkins

Vấn đề là tất cả các chi nhánh đều trỏ đến cùng một dự án Sonar. Tôi biết rằng có một tài sản sonar.branch. Có thể có Jenkins tự động thiết lập thuộc tính sonar.branch cho nhánh git hiện tại đang được xây dựng (mà không phải thay đổi tệp pom.xml của dự án) không?

Trả lời

18

Bạn có thể thử thêm -Dsonar.branch=something vào trường MAVEN_OPTS trong hành động sau xây dựng jenkins (Cấu hình nâng cao).

Tôi không biết cách giải quyết something, vì tôi không biết cách bạn định cấu hình công việc jenkins của mình ... nhưng có thể nó sẽ giống như $git.branch. Here is the doc

Tôi đã không thử, vì vậy tôi không chắc chắn nó sẽ hoạt động.

Khi có nhiều chi nhánh, cách tiếp cận của tôi là phải luôn luôn xác định một công việc Jenkins mỗi chi nhánh (tính năng công việc bản sao của Jenkins có thể giúp)

EDIT

Trong khi đọc câu hỏi của bạn thật khó để nói nếu bạn đang sử dụng maven hay không để kích hoạt sonar. Nếu bạn không sử dụng maven: có trường project properties trong cấu hình Jenkins, nơi bạn có thể xác định sonar.branch. Here is the doc

+1

tôi đã kết thúc sử dụng phương pháp bạn đề nghị, sử dụng công việc khác nhau cho từng ngành. Tôi sử dụng Jenkins để kích hoạt sonar, vì vậy tôi thiết lập tài sản sonar.branch cho phù hợp với từng công việc. Tôi nghĩ rằng đây cũng là ưu điểm mà công việc xây dựng chỉ được kích hoạt nếu cam kết được thực hiện cho chi nhánh cụ thể này, và bạn cũng có thể tạo thêm các thông báo/điều khiển lịch biểu chi tiết hơn cho các chi nhánh quan trọng hơn. – spyk

+0

Không hoạt động tôi :-( Tôi đã thêm $ GIT_BRANCH vào MAVEN_OPTS. khi tôi xây dựng từ một số chi nhánh khác thông qua một số công việc khác - trang tổng quan hiển thị mức độ phù hợp đang thay đổi thành kết quả từ lần chạy chi nhánh mới nhất. . – R11G

0

Tôi không chắc liệu điều này có giúp bạn với việc thực thi Jenkins tự động hay không, nhưng để chạy một siêu âm mvn: sonar với bộ nhánh thích hợp, bạn có thể chạy lệnh (lưu ý dấu ngoặc kép), nếu bạn đang ở môi trường dựa trên Unix:

mvn -Dsonar.branch=`git rev-parse --abbrev-ref HEAD` sonar:sonar 
0

Bạn có sử dụng thông số xây dựng để chỉ định chi nhánh không?

Nếu có, bạn có thể dễ dàng kể đến Sonar mà chi nhánh được nó, Juste thêm vào cấu hình textarea:

sonar.branch=${branch} 

đâu chi nhánh là tên của tham số xây dựng.

0

này nên làm việc

mvn sonar:sonar -U -Dsoanr.branch=<branch> 
Các vấn đề liên quan