2011-11-14 10 views
7

Trong Jenkins/Hudson, với sự giúp đỡ của một kịch bản Groovy Postbuild, tôi muốn để có được một trong các cách sau:Làm thế nào để có được thông tin cụ thể về dự án xây dựng hiện tại trong Jenkins với Groovy?

  • một biến môi trường (ví dụ JOB_NAME hiện tại, BUILD_NUMBER vv)
  • kết quả của xây dựng một số cụ thể của các dự án hiện tại
  • xây dựng số của người cuối cùng xây dựng không thành công trong các dự án hiện tại

tại thời điểm này tôi chỉ tìm thấy theo cách sau, nhưng nó khá hạn chế:

def item = hudson.model.Hudson.instance.getItem("GroovyMultipleFailTest") 
def build = item.getLastBuild() 
build.getNumber() 

Trả lời

0

biến môi trường (ví dụ: JOB_NAME hiện tại, BUILD_NUMBER, vv)

String jobName = System.getenv('JOB_NAME') 
+2

Tôi đã thử điều đó, nhưng tiếc là nó không hoạt động. Tuy nhiên, tôi đã thành công khi nhận được tên dự án/công việc bởi manager.build.project.getName(). – datka

+0

Nó sẽ xuất hiện cách này hoạt động khi chạy một tập lệnh 'hệ thống' groovy - ví dụ: trong cùng một máy ảo như quy trình Jenkins/Hudson, trong khi phương thức System.getenv() hoạt động khi chạy một tập lệnh bên ngoài. – Robert

+0

Điều này đang truy cập vào các biến môi trường máy, thay vì các biến công việc. – Stoinov

4
${manager.build.getEnvironment(manager.listener)['BUILD_NUMBER'] } 
3

Bo Persson đã có câu trả lời tốt nhất, nhưng là một chút ngắn.

Để truy cập các biến môi trường từ bản dựng trong Groovy Postbuild, bạn có thể lấy chúng từ bản dựng. mẫu mã này rất hữu ích cho bán phá giá tất cả các biến môi trường của BUILD ra cửa sổ Console:

manager.build.getEnvironment(manager.listener).each { 
    manager.listener.logger.println(it); 
} 
2

Nếu bạn đang sử dụng Groovy kịch bản trong "Env Inject", bạn có thể nhận được xây dựng hiện tại và công việc hiện tại bởi:

currentJob.getName() 
currentBuild.toString() 
+0

Cách chỉ nhận BUILD_NUMBER thay vì BUILD_NAME + #BUILD_NUMBER? – MKD

0

cách duy nhất tôi nhận nó làm việc đối với tôi là với build.properties.environment.BUILD_NUMBER

1

Sử dụng Jenkins v2.17 làm việc này cho tôi:

echo "BÙI LD_NUMBER = $ {env.BUILD_NUMBER} "