2015-02-03 18 views
5

Công ty của tôi sử dụng Jenkins làm trình kiểm tra tích hợp.Lưu trữ cấu hình Jenkins cho nhiều môi trường

Chúng tôi có nhiều trường hợp cho môi trường sản xuất và dàn dựng của chúng tôi. Môi trường khác nhau cần cấu hình Jenkins rất giống nhau, nhưng có những thay đổi nhỏ trong những thứ như thực thi định kỳ, thông báo, hỗ trợ công việc và vân vân.

Hiện tại, chúng tôi lưu trữ XML cấu hình Jenkins trong Git và thực hiện các sửa đổi cho mỗi môi trường như một phần của công thức Đầu bếp trong khi triển khai lại các phiên bản.

Tuy nhiên, điều này có nghĩa là rất khó cập nhật cấu hình của một cá thể mà không cần triển khai lại cấu hình đó.

Có ai có cơ chế yêu thích để chia sẻ cấu hình Jenkins trên các trường hợp khác nhau trong khi áp dụng các sửa đổi nhỏ cho mỗi trường hợp không?

+0

Thời gian gia hạn tiền thưởng của bạn sẽ hết hạn sau 10 giờ. Bạn có thể chỉ định tiền thưởng hoặc cho biết những gì còn thiếu trong phản hồi không? –

Trả lời

0

Gần đây tôi đã xem qua số gradle-jenkins-plugin về cơ bản mở rộng Job DSL Plugin bằng cách cho phép duy trì cấu hình công việc trong điều khiển nguồn và áp dụng chúng cho máy chủ Jenkins qua Gradle. Bằng cách đó, bạn có thể dễ dàng triển khai các cấu hình tương tự cho các máy chủ khác nhau, với các thay đổi nhỏ bằng cách sử dụng DSL, ví dụ: trên URL máy chủ Jenkins.

Ngoài ra, bạn có thể có thể đạt được điều gì đó tương tự bằng cách sử dụng Workflow Plugin mới.

1

Bạn có thể làm cho một configfile đa môi trường với những đường nét như

hostA:settings.xml:key_1:value_1A 
hostB:settings.xml:key_1:value_1B 
hostC:settings.xml:key_1:value_1C 
hostD:settings.xml:key_1:value_1D 

hostA:settings.xml:key_2:value_2A 
hostB:settings.xml:key_2:value_2B 
hostC:settings.xml:key_2:value_2C 
hostD:settings.xml:key_2:value_2D 

(trên bố trí hoạt động khi bạn không cần: cho khóa/giá trị)

Trong kịch bản triển khai của bạn, bạn gọi một post_configure tập lệnh, sẽ chọn dòng máy chủ chính xác và thay thế các khóa trong xml (các phím được tìm thấy là <key>...</key>).
Mã của cấu hình post_configure có thể được viết bằng các ngôn ngữ khác nhau.

Ví dụ
Khi tất cả các mục tiêu này là Linux, và bắt đầu và kết thúc thẻ cho mỗi giá trị là một trong 1 dòng, tôi sẽ sử dụng bash và mã cái gì đó như

grep $(hostname) multi.cfg | while IFS=: read host file key value; do 
    sed -i 's/'${key}'/'${value}'/g' ${file} 
done 

Tôi tin rằng đây là một tốt hơn cách tiếp cận hơn là tạo ra các bản phân phối khác nhau cho các hệ thống khác nhau.

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