2017-01-10 20 views
5

Tôi có chi nhánh feature và chi nhánh testing (đối với hồi quy ban đầu). Tôi muốn có một bản sao làm việc có sẵn cho chi nhánh testing của tôi cho môi trường thử nghiệm. Tuy nhiên, tôi cần phải nén một số mã nguồn (không thành mã nhị phân, chỉ cần tối ưu hóa) thông qua một tập lệnh. Tôi có thể ban hành kịch bản này thông qua một hook Git sau khi nhận.Cách sử dụng đúng tập lệnh CI với móc Git để nén nguồn

Tôi đang cố gắng thiết kế tập lệnh bash của tôi (cho CI) để nó khá mạnh mẽ và muốn tránh tự động hóa gây ra xung đột Git. Tôi đang nghĩ đến việc có một kho lưu trữ chính (origin) và một kho lưu trữ môi trường thử nghiệm (ci_test) chỉ đơn giản là cho phép CI cam kết.

Tôi đang suy nghĩ về việc đẩy tới ci_test/testing khi quảng bá nguồn. CI nên nén, thêm, cam kết, tìm nạp từ origin/testing, hợp nhất nếu cần (lấy xung đột iff đầy đủ), sau đó đẩy tới origin/testing.

Sự cố với mô hình của tôi ở trên là Git phàn nàn khi tôi cố gắng đẩy đến ci_test/testing vì nó có bản sao làm việc (có ý nghĩa, vì chúng có thể không được đồng bộ hóa). Có cách nào thích hợp (tự động) để sử dụng các tập lệnh Tích hợp liên tục với Git để chúng vẫn được theo dõi không?

Trả lời

2

Sự cố với mô hình của tôi ở trên là Git phàn nàn khi tôi cố gắng đẩy tới ci_test/testing vì nó có bản sao hoạt động (có ý nghĩa bởi vì chúng có thể không được đồng bộ hóa).

Bạn có thể:

  • đảm bảo ci_test của bạn là một repo trần, với một post-receive hook đó sẽ:

  • hoặc, nếu bạn là người duy nhất đẩy vào đó repo ci_testing từ xa, cấu hình Git từ xa để chấp nhận đẩy đến một repo không trần.
    Điều này có thể since Git 2.3+ với:

    git config receive.denyCurrentBranch updateInstead 
    

with Git 2.4+, bạn có thể thiết lập điều khiển từ xa ci_testing với một "push-to-checkout" móc, có thể được cài đặt trên máy chủ để tùy chỉnh chính xác những gì sẽ xảy ra khi người dùng đẩy đến chi nhánh đã thanh toán.

+0

[Push-to-checkout] (https://git-scm.com/docs/githooks#_push_to_checkout) móc trông đầy hứa hẹn. Tôi đã không nhận thức được rằng móc hiện có. Lý do tôi muốn ci_test có bản sao làm việc là vì móc sẽ sửa đổi nguồn và tôi muốn cam kết thay đổi (tôi không thể tưởng tượng có thể làm điều đó mà không có bản sao làm việc). Tôi cũng đang sử dụng bản sao làm việc như thư mục được sử dụng để đọc phiên bản thử nghiệm của ứng dụng. – BLaZuRE

+0

@BLaZuRE có, trong trường hợp của bạn, tính năng push-to-checkout có vẻ phù hợp. – VonC

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