2011-08-08 33 views
12

Chúng tôi đang sử dụng Jenkins để tự động hóa một số quy trình xây dựng và thử nghiệm của chúng tôi. Đối với một số quy trình của chúng tôi, kỹ sư bắt đầu xây dựng cần phải chỉ định tham số. Nhưng phạm vi giá trị có thể và tối ưu cho tham số đó thay đổi trong suốt cả ngày.Khi xây dựng công việc Jenkins, có thể thay đổi thông số xây dựng giữa chừng không?

Điều tôi muốn làm là cho phép kỹ sư chỉ định giá trị - nếu họ biết giá trị tối ưu - hoặc để trống và có giá trị được tính bằng bước xây dựng ban đầu. Nếu giá trị được tính, tôi muốn bước xây dựng tính toán để cập nhật giá trị tham số của công việc. Bằng cách đó, tất cả các bước xây dựng tiếp theo không phải lo lắng về việc sử dụng tham số hoặc tính toán nó, chúng chỉ sử dụng tham số bất kể.

Có vẻ như Groovy Script Plugin có thể thực hiện được điều này, nhưng tôi không thể thấy cách tôi có thể SET các thông số xây dựng, chỉ cần GET chúng.

Trả lời

7

Tìm thấy câu trả lời: sử dụng EnvInject Plugin. Một trong những tính năng là một bước xây dựng cho phép bạn "tiêm" các thông số vào công việc xây dựng từ một tập tin cài đặt. Tôi đã sử dụng một bước xây dựng để tạo tệp cài đặt, sau đó một bước xây dựng khác để chèn các giá trị mới. Sau đó, tất cả các bước xây dựng tiếp theo và các hoạt động hậu xây dựng đã sử dụng giá trị mới.

3

Jenkins không có khả năng tham số hóa bản dựng. Đối với một tham số chuỗi , nhà phát triển có thể để trống trường này và sau đó tập lệnh xây dựng của bạn có thể kiểm tra xem liệu env. biến cho tham số được đặt. Nếu env. var. không được thiết lập, kịch bản có thể thực hiện bất kỳ phép tính nào là cần thiết (tôi không nghĩ rằng Jenkins có "các bước dựng sẵn") và truyền nó đi. Đối với một tham số lựa chọn dòng đầu tiên có thể là một cái gì đó như (Default), và một lần nữa kịch bản xây dựng có thể kiểm tra giá trị của nó và hành động phù hợp.

Lưu ý về (Default)

tôi đã cố gắng để lại dòng đầu tiên của hộp lựa chọn trống, và Jenkins lưu nó một cách chính xác lần đầu tiên; nhưng khi tôi trở lại để cấu hình lại xây dựng Jenkins chạy một số loại cắt trên các tùy chọn và dòng trống hàng đầu đã được loại bỏ vì vậy tôi giải quyết trên (Default).

Tôi hy vọng điều này sẽ giúp,
Zachary

+2

Cách tiếp cận này hoạt động tuyệt vời khi tôi chỉ có một xây dựng bước duy nhất. Nhưng tôi đã có một loạt các bước xây dựng tham chiếu đến tham số xây dựng theo các cách khác nhau. Tôi có điều kiện hóa các tập lệnh dựa trên tập lệnh (như Windows BAT File hoặc PowerScript) nhưng tôi không thể điều kiện hóa những cái khác, như Sao chép tạo tác hoặc Trình tạo kích hoạt. Ý tưởng tốt mặc dù. –

0

Đây là giải pháp của tôi rằng nên làm việc với đường ống Jenkins:

# Jenkinsfile 
// define job parameters 
properties([parameters([string(defaultValue: 'Hello', description: 'How should I greet the world?', name: 'Greeting')])]) 
// update or replace parameter 
void setParam(String paramName, String paramValue) { 
    List<ParameterValue> newParams = new ArrayList<>() 
    newParams.add(new StringParameterValue(paramName, paramValue)) 
    $build().addOrReplaceAction($build().getAction(ParametersAction.class).createUpdated(newParams))  
} 

print params.Greeting 
setParam("Greeting", "bonjour") 
print params.Greeting 
Các vấn đề liên quan