2012-03-28 20 views
28

Tôi có một repo GitHub lớn và chứa một số bit độc lập có thể xây dựng. Nếu tôi cấu hình Jenkins với một công việc (hoặc hai) cho mỗi công việc này, tôi kết thúc với việc phải kéo gigabyte dữ liệu nhiều lần (một bản sao của repo cho mỗi công việc).Làm thế nào tôi có thể nhận được nhiều Jenkins xây dựng để làm việc từ một repo git địa phương?

Điều này có cả không gian đĩa và băng thông.

Những gì tôi muốn làm là có công việc "Làm mới cục bộ repo" nhái github một lần, sau đó định cấu hình từng công việc để sao chép chính mình từ repo đó và xây dựng. Sau đó, bằng cách thiết lập các công việc phụ như xây dựng phụ thuộc, tôi có thể chạy "Làm mới cục bộ repo", có nó kéo tất cả các công cụ mới nhất từ ​​GitHub, sau đó có mỗi xây dựng chạy.

Cho đến nay tôi đã có "Làm mới cục bộ repo" hoạt động - nó sao chép thành công và nếu tôi đi đến không gian làm việc, tôi thấy rằng nó có cam kết CHÍNH gốc/chủ.

Vấn đề là các công việc khác - những việc này dường như không nhận được cập nhật. Dưới đây là cách tôi đã có một trong số chúng được định cấu hình:

Git 
Repository URL file:////Users/malcolmbox/.jenkins/jobs/Refresh Local repo/workspace 
Branches to build master 

Thay vì cập nhật lên cam kết mới nhất, nó bị kẹt vài ngày trước đây.

Tôi làm cách nào để kéo đầu và làm đúng?

Để làm rõ: các .../Refresh repo địa phương/workspace có cam kết 6b20268389064590147d5c73d2b6aceb6ba5fe70 nộp 28/3

Các phụ thuộc xây dựng, sau khi chạy một xây dựng (vì vậy có lẽ làm một clone git/kéo bước) được kiểm tra ra đến 79a25992cc192376522bcb634ee0f7eb3033fc7e đã gửi 26/3 - do đó, sau vài ngày.

Trả lời

28

Nếu bạn mở cấu hình công việc và nhấp vào nút Nâng cao của cấu hình git SCM, bạn sẽ thấy một địa chỉ để chỉ định "Đường dẫn của repo tham chiếu để sử dụng trong khi sao chép (tùy chọn)".

Nếu bạn có bản sao cục bộ của kho lưu trữ, hãy thêm đường dẫn đến trường repo tham chiếu. Sau đó, Git sẽ sử dụng bản sao cục bộ và chia sẻ hầu hết các đối tượng git trên đĩa và kéo từ github chỉ những gì còn thiếu từ bản sao cục bộ dẫn đến sao chép nhanh và không gian đĩa đã lưu.

Hoặc đây có phải là cách bạn đã định cấu hình công việc của mình và không nhận được các cam kết mới nhất không? Nếu vậy, vui lòng cung cấp thêm chi tiết. Xem xét xuất bản cấu hình công việc của bạn.

+0

Cảm ơn - điều này giống như chính xác những gì tôi đang tìm kiếm! Tôi sẽ đi kiểm tra ... –

+8

Chỉ muốn làm rõ: Có vẻ như plugin git mới nhất hiện có menu bật lên gồm các tùy chọn nâng cao và repo tham chiếu nằm trong "Hành vi sao chép nâng cao". – sti

+0

Điều này thật tuyệt vời! Dường như hoạt động tốt. – AlexeiOst

2

Hãy xem qua số Clone Workspace plugin. Bạn có thể sử dụng hoặc cấu hình một công việc để cập nhật một kho lưu trữ cục bộ từ Github và sau đó có tất cả các công việc khác kéo từ repo cục bộ đó.

Điều này sẽ không giúp được vấn đề là không gian làm việc vẫn cần dung lượng đĩa, nhưng theo như tôi biết không có giải pháp đơn giản nào cho điều đó. Bạn có thể có các bước xây dựng thay đổi thành một thư mục được chia sẻ bên ngoài vùng làm việc, nhưng đó là hacky và có thể phá vỡ những thứ khác. Ngoài ra, bạn có thể sử dụng một hệ thống tập tin cung cấp pc.

+0

Tôi ít lo lắng về không gian đĩa, và dù sao tôi tin git là thông minh và sử dụng các liên kết khi có thể khi nhân bản một repo cục bộ. Bắt tất cả các công việc khác để kéo từ repo địa phương là những gì tôi muốn làm - nhưng tôi không thể tìm ra cách. Có vẻ như họ không kéo các cam kết mới ngay cả thông qua repo địa phương có họ. –

+0

Làm cách nào để bạn kích hoạt các bản dựng? Bạn đã thử bỏ phiếu kiểm tra địa phương và kiểm tra nhật ký thăm dò ý kiến ​​chưa? –

+0

Tôi sử dụng trình kích hoạt "Xây dựng sau" trên các bản dựng thứ cấp –

0

Tôi đã có cùng trải nghiệm.

Tôi có một công việc để kéo repo từ xa thực sự, đó là github.

Mỗi phòng trong số các công việc khác (có rất nhiều) có một "URL Repository" như thế này:

file:///C:/Program Files (x86)/Jenkins/jobs/webtest-local-repo/workspace/.git 

Nó bắt chước tốt, nhưng trình kế tiếp không nhận thấy bất kỳ thay đổi.

Vấn đề tương tự xuất hiện trong gitbash, vì vậy tôi đoán đây là vấn đề về git, chứ không phải vấn đề jenkins.

My workaround khủng khiếp là để làm cho các công việc phụ thuộc xóa không gian làm việc của họ khi xây dựng xong, để mọi thao tác git là một "bản sao". Đó là vô lý, nhưng có lẽ ít vô lý hơn việc có một tỷ việc làm đập đi cùng một repo github.

ZOMG! Điều đó không có tác dụng, bởi vì trong khi git có thể sao chép thành công repo, jenkins sẽ nhớ bản sửa đổi trước đó và xây dựng lại một lần nữa. Có lẽ nó liên quan đến this issue, tôi không biết, tôi khá chán nản. Chúng tôi đã từ bỏ, và bây giờ tất cả các công việc thăm dò github một lần nữa. Có lẽ tôi sẽ nhận được một cái móc làm việc thay thế.

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