2011-07-23 28 views
7

Tôi vừa chuyển từ svn sang github. Tôi và nhóm của tôi chạy thử nghiệm cục bộ và chúng tôi cam kết thay đổi và thử nghiệm trên máy chủ trung tâm. Bất cứ khi nào chúng tôi đẩy các thay đổi vào repos, tôi muốn tự động kéo các thay đổi vào bất kỳ nhánh nào của repos của tôi vào các thư mục trên máy chủ dev của tôi. Điều này sẽ cho phép tôi và nhóm của tôi kiểm tra và xem trước từng mã khác bằng cách sử dụng máy chủ trung tâm của chúng tôi.Kiểm tra/xem trước chi nhánh Github trên máy chủ dev

Lý tưởng nhất là tôi có thể ánh xạ các tên miền phụ vào các thư mục chi nhánh khác nhau này. I.e. Nếu chi nhánh được gọi là 'refactor' tôi có thể kiểm tra nó bằng cách sử dụng http://refactor.devserver.com

Tôi đoán điều này có thể liên quan đến móc trong cấu hình github của tôi kích hoạt tập lệnh trên máy chủ dev? Có lẽ tôi cần phải sử dụng một máy chủ ci như Hudson?

Chỉnh sửa: Tôi có thể dễ dàng kích hoạt tập lệnh để kéo nhánh chính - những gì tôi cần làm là kéo bất kỳ nhánh đã thay đổi nào để tách các thư mục gốc, vì vậy tôi có thể kiểm tra bất kỳ nhánh nào dễ dàng thông qua tên miền phụ của chính nó. (Hoặc một số cách tương tự để triển khai và kiểm tra bất kỳ chi nhánh nào đã thay đổi tự động)

Rất cám ơn.

Trả lời

10

Dưới đây là một phần của câu trả lời cho câu hỏi của riêng tôi ...

tôi muốn đội bóng để có thể đến ngã ba mã và ngay lập tức có thể hiển thị nó trên một url như thế này: http://branch-name.devserver.com

Tôi thiết lập chỉ thị vhost trong apache conf để ánh xạ các miền phụ vào các thư mục:

<VirtualHost *:80> 
     ServerName www.devserver.com 
     ServerAlias *.devserver.com 
     VirtualDocumentRoot /var/www/devserver/%1/ 
</VirtualHost> 

Tôi phân nhánh mã trong github hoặc trên máy cục bộ của tôi.
Sau đó chạy các lệnh trên máy chủ dev

cd /var/www/devserver 
git clone [email protected]:/user-name/repos-name 

Move thư mục Repos nhân bản vào một thư mục có tên là tên chi nhánh để nó trở thành thư mục gốc của tên miền phụ máy chủ ảo.

mv repos-name new-branch 

Sau đó, chuyển đổi các hợp đồng mua lại từ tổng thể để các chi nhánh mới

cd /var/www/devserver/new-branch 
git checkout new-branch 

Đó là bây giờ đã có trên http://new-branch.devserver.com

Sau đó, sau khi tôi đã đẩy thay đổi đối với chi nhánh trên github - tôi kéo chúng trên máy chủ dev

cd /var/www/devserver/new-branch 
git pull 

Bây giờ - nếu tôi muốn kéo xảy ra au tomatically tôi có thể thiết lập một máy chủ CI để nghe cho một git hub hook mà sẽ kích hoạt một kéo trong mỗi thư mục chi nhánh. Có vẻ như Hudson có thể làm được điều này.


tôi muốn hy vọng sẽ tìm thấy một cách thông minh hơn để làm điều này:

  1. Nếu không có nhân bản Repos nhiều lần
  2. Với một lệnh duy nhất cập nhật tất cả các chi nhánh một cách hiệu quả hay một cái móc cho phép tôi chỉ đến chi nhánh được cập nhật
  3. Với cấu trúc thư mục phong nha cho từng chi nhánh - vì vậy tôi có thể kiểm tra bất kỳ chi nhánh nào trên một url cụ thể mà không phải xáo trộn với cấu hình http mỗi lần tôi chi nhánh mã số
  4. có thể tự động tạo ra một thư mục gốc cho các chi nhánh mới để họ sẽ kỳ diệu xuất hiện trên máy chủ dev

Bất kỳ suy nghĩ hơn nữa chào đón ...

+0

Bạn chỉ có thể sao chép kho lưu trữ vào thư mục mới một cách trực tiếp, vì vậy bạn sẽ không cần phải 'mv' nó. http://stackoverflow.com/questions/651038/how-do-you-clone-a-git-repository-into-a-specific-folder – Lg102

1

Nó chắc chắn có thể được thực hiện bằng cách sử dụng Hudson nếu bạn có một số quy trình triển khai tự động được xác định. Trong thực tế, tôi đã thực hiện một thiết lập tương tự khoảng một năm trước đây - nếu thay đổi đã được đẩy vào chủ Hudson thực hiện các bài kiểm tra đơn vị và nếu thành công triển khai dàn dựng.

+0

tôi cần phải triển khai và kiểm tra bất kỳ chi nhánh thay đổi tự động. Một giải pháp có thể tôi có trong tâm trí là để kéo bất kỳ chi nhánh thay đổi để tách thư mục gốc, vì vậy tôi có thể kiểm tra bất kỳ chi nhánh dễ dàng thông qua đó là tên miền phụ riêng của nó. Bất kỳ ý tưởng? – Boz

+0

Chỉ cần xác định một công việc riêng biệt ở Hudson cho mỗi chi nhánh. Hay bạn có nghĩa là bạn cũng muốn Hudson tự động phát hiện các chi nhánh mới? Trong trường hợp đó, nó có thể phức tạp hơn. –

+0

Hi obrok - Tôi đã trả lời câu hỏi của riêng mình, vui lòng kiểm tra câu trả lời của tôi và nhận xét nếu bạn có thể trợ giúp thêm. CI và tự động hóa - cảm ơn rất nhiều. – Boz

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