2013-03-18 42 views
5

Chúng tôi đang sử dụng jenkins cho CI. chúng tôi xây dựng đêm khuya. Có cách nào để tự động hóa việc xây dựng triển khai ngay sau khi chúng tôi nhận được một thư hoặc intimation? Bất kỳ đề xuất nào cũng sẽ được đánh giá cao ..Làm thế nào tôi có thể tự động hóa việc triển khai xây dựng trong jenkins?

+0

Bạn có thể cho chúng tôi biết bạn đang xây dựng hoặc triển khai gì không? Trong trường hợp của một trang web, bạn thường xem xét một số loại kho đẩy, nhưng nó có thể phức tạp như sử dụng các công cụ như 'vagrant' để đứng lên một máy ảo mới và cư trú nó. Tuy nhiên, nếu bạn đang xây dựng một ứng dụng iOS, bạn có thể triển khai trực tiếp đến dịch vụ tải xuống. Và đối với ứng dụng Desktop, bạn có thể triển khai đến một vị trí web đã biết. Có rất nhiều cơ hội khi sử dụng jenkins cho Triển khai liên tục, nhưng nhiều thông tin hơn sẽ hữu ích trong việc tìm đúng hướng đi. – gaige

+0

@gaige: Cảm ơn bạn đã quan tâm. Chúng tôi chủ yếu cố gắng triển khai các vòng lặp có các .o và libaries khác trong đó. Chúng tôi sẽ triển khai nó trong các hộp linux bằng cách sử dụng jenkins. Kỳ vọng của tôi sẽ là bất kỳ quá trình tự động triển khai bản phát hành sẵn có mới nhất nào thông qua một số tập lệnh trong hộp linux. – Sujith

+0

Tôi có một số giải thích chi tiết về cách thiết lập xây dựng và triển khai công việc. Xem "[Làm thế nào để quảng cáo một số xây dựng cụ thể từ một công việc khác trong Jenkins?] (Http://stackoverflow.com/questions/15126059/how-to-promote-a-specific-build-number-from-another-job- in-jenkins) "và" [jenkins liên tục phân phối với không gian làm việc được chia sẻ] (http://stackoverflow.com/questions/15140580/jenkins-continuous-delivery-with-shared-workspace) ". – Slav

Trả lời

3

Một cơ chế triển khai một bản dựng trên Jenkins là sử dụng các tạo tác để đặt nhị phân mới nhất ở vị trí đã biết và sau đó khởi chạy một công việc mới (chỉ khi thành công của biên dịch/giai đoạn thử nghiệm) sử dụng (ssh bảo vệ khóa riêng) ssh hoặc scp để sao chép các tạo phẩm đến máy kiểm tra/sản xuất và sau đó thực hiện cài đặt.

Chúng tôi sử dụng cơ chế tương tự cho một số thử nghiệm tự động mà chúng tôi thực hiện. Phần khó khăn là nhận được lệnh shell để xử lý các phím ssh, vì vậy chúng tôi thực hiện như sau:

eval `ssh-agent -s` 
ssh-add ~/.ssh/your_private_key_here 

Chừng nào mà khóa bí mật là trên máy chủ Jenkins và khóa công khai là trên máy chủ bạn đang cố gắng để thúc đẩy, bạn có thể sử dụng các lệnh sshscp trong phần còn lại của tập lệnh để thực hiện các chức năng trên máy chủ được đề cập.

Nếu bạn muốn chạy hoàn toàn quá trình từ đầu máy chủ đích, bạn có thể tạo tập lệnh nhỏ chạy trên máy chủ kiểm tra các tệp mới trong thư mục tạo tác của bản dựng máy chủ Jenkins của bạn. Nhờ đường dẫn latest, bạn không cần phải biết số bản dựng để thực hiện việc này. Để tìm đường dẫn cụ thể, bạn có thể đăng nhập vào máy chủ Jenkins của mình (khi bạn đã lưu ít nhất một tạo phẩm) và tìm dự án bạn đang sử dụng và xem Hiện vật thành công cuối cùng, sẽ là URL cuối cùng xây dựng thành công các hiện vật. Các URL này vẫn không đổi và luôn trỏ vào bản dựng thành công gần đây nhất, do đó bạn không phải lo lắng về việc chúng thay đổi trừ khi tên dự án hoặc tên máy chủ thay đổi.

LƯU Ý: có lỗ hổng bảo mật ở đây bạn có thể lái xe qua nếu bạn làm việc này cho bất kỳ thứ gì ngoài triển khai để kiểm tra. Trong trường hợp của cơ chế đầu tiên, máy chủ xây dựng của bạn có một khóa ssh cho phép truy cập (có khả năng phá hoại) đến đích. Trong trường hợp của cơ chế thứ hai, bạn tin tưởng rằng máy chủ Jenkins sẽ chỉ phục vụ các tệp nhị phân tốt cho bạn. Tuy nhiên, đối với môi trường thử nghiệm, hãy chuyển sang giai đoạn, vv các kỹ thuật này sẽ hoạt động tốt.

+0

Cảm ơn rất nhiều cho phản hồi ... Tôi có ít làm rõ điều này ... Chúng tôi đã từng thử nghiệm triển khai cũng như [lý do chúng tôi sử dụng số bản phát hành] Vì vậy, trong trường hợp này, nó sẽ sao chép các tệp và không triển khai nó thực sự. Có cách nào để triển khai nó bằng cách sử dụng jenkins bởi số xây dựng? Xin lỗi nếu sự hiểu biết của tôi là không chính xác ... – Sujith

+0

@Sujith Tôi không nghĩ rằng tôi đang theo dõi bạn một cách chính xác. Việc triển khai sẽ phải được thực hiện trong kịch bản 'ssh', vì không có cơ chế được xác định trước trong Jenkins để triển khai các gói tùy ý cho một máy chủ khác. Nhưng, tôi không chắc đó có phải là câu hỏi của bạn không. Nếu bạn muốn triển khai thủ công, bạn có thể thiết lập một Dự án yêu cầu kích hoạt thủ công. Nếu bạn muốn mang theo số xây dựng cùng với, bạn có thể sử dụng số xây dựng làm biến trong kịch bản để chuyển số đó cùng với lệnh 'ssh' của bạn. Bạn có thể làm rõ những gì bạn muốn thực hiện với số xây dựng? – gaige

1

Đây là những cách tôi biết:

  • Với một kịch bản:

Trong cấu hình Jenkins, bạn có thể thực hiện các lệnh cửa sổ/vỏ sau khi thực hiện các mục tiêu maven bạn. Trong trường hợp của tôi, tôi có một Glassfish trên Linux, và thông qua ssh tôi thực hiện các tham số asadmin cho việc triển khai. Tôi đã cài đặt một thể hiện trong máy chủ, và quá trình mà tôi làm theo là: dừng thể hiện, undeploy ứng dụng, triển khai ứng dụng, bắt đầu dụ (lệnh).

  • Với Maven Triển khai Plugin:

Plugin này có một cuộc chiến tranh/file tai và triển khai đến một máy chủ ứng dụng từ xa chạy ở phần cuối của một xây dựng. Danh sách các vùng chứa hiện được hỗ trợ bao gồm:

Tomcat 4.x/5.x/6.x/7.x JBoss 3.x/4.x Glassfish 2.x/3.x

https://wiki.jenkins-ci.org/display/JENKINS/Deploy+Plugin

  • Với Cargo:

Các Triển khai Plugin được dựa trên này. Bạn phải chỉnh sửa pom.xml của bạn và thực hiện các mục tiêu triển khai với maven.

http://cargo.codehaus.org/

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