Tôi đang cố gắng triển khai quy trình làm việc của Trình quản lý tích hợp đã sửa đổi tương tự như những gì được mô tả trong ProGit.Trình quản lý tích hợp Git Workflow bằng cách sử dụng Jenkins/Hudson
Thay vì một integration manager
thực hiện thao tác trộn, tôi muốn các nhà phát triển để hợp nhất tại địa phương trước khi xuất bản mã của họ, và tôi muốn có một Quality Gateway
rằng thực thi các tiêu chuẩn tích hợp liên tục của chúng tôi, chẳng hạn như một mức tối thiểu của mã số bảo hiểm và 100 % kiểm tra đi qua, trước khi cho phép mã để vào kho chứa may mắn được kiểm tra bởi các nhà phát triển khác. Ý tưởng là mã trong kho chứa may mắn luôn đáp ứng tiêu chuẩn tối thiểu mà chúng tôi xác định và luôn luôn xây dựng.
Tôi muốn Jenkins thực hiện vai trò của cổng thông tin chất lượng, chỉ đẩy mã vào kho lưu trữ may mắn khi xây dựng thành công.
Cho đến nay, tôi đã thiết lập hệ thống để có các repos công cộng sau: kho lưu trữ may mắn, kho lưu trữ trên máy chủ xây dựng cho Jenkins, một repo trần được truy cập thông qua gitosis, và tất nhiên kho của chính nhà phát triển .
Tôi có nhà phát triển kéo từ repo may mắn và đẩy đến repo tích hợp. Bây giờ tôi đang cố gắng để có được Jenkins để đẩy thành công xây dựng từ repo hội nhập để repo may mắn.
Cho đến nay, tùy chọn duy nhất tôi thấy có vẻ giống với những gì tôi đang cố gắng đạt được là tùy chọn "Push Only If Build Succeeds
" trong cài đặt Nhà xuất bản Git của cấu hình dự án Xây dựng bài đăng trong cấu trúc dự án của Jenkins. Tuy nhiên, các tùy chọn đó không cho phép bạn chỉ định url đẩy hoặc điều khiển từ xa để đẩy tới.
Như tôi đã hiểu, cài đặt Git Publisher sẽ đẩy các bản sao của Jenkins vào không gian làm việc của nó trở lại repo công cộng của Jenkins, nhưng tôi muốn đẩy tới một kho lưu trữ khác.
Có ai có bất kỳ đề xuất nào về cách tôi có thể đưa Jenkins đẩy vào repo được ưu đãi không?
CHỈNH SỬA 0: Tôi đã thử đặt Bước đăng để thực thi lệnh đẩy tới kho lưu trữ may mắn của mình. Điều này dường như hoạt động, trong đó không có lỗi. Tuy nhiên không có thay đổi đang được đẩy và các bản ghi cho thấy git nghĩ tất cả mọi thứ được cập nhật:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 7 seconds
[INFO] Finished at: Fri Nov 18 16:10:50 UTC 2011
[INFO] Final Memory: 19M/45M
[INFO] ------------------------------------------------------------------------
channel stopped
[My Project] $ /bin/sh -xe /tmp/hudson5604254372179801803.sh + git push [email protected]:my-project.git --all
Everything up-to-date
Tôi không biết tại sao git nghĩ không có gì để đẩy là, vì có chắc chắn là.
Có vẻ thú vị, nhưng điều duy nhất nó cho biết quy trình hiện tại của chúng tôi không có là quy trình đánh giá được chính thức hóa. Các dự án của chúng tôi bị quấy rối, vì vậy nếu họ vượt qua công trình, chúng tôi biết rằng họ vượt qua các bài kiểm tra và các yêu cầu khác mà chúng tôi đã xác định.Nó dường như không thêm đủ (cho quá trình của chúng tôi) để biện minh cho việc có một công cụ khác làm phức tạp môi trường của chúng ta. Tôi sẽ ghi nhớ như nhu cầu của chúng tôi thay đổi mặc dù, cảm ơn! – chrisbunney
Tôi hiểu sự cần thiết phải hạn chế sự phức tạp :-) Tôi chỉ có nghĩa là nó thêm cả đánh giá và nó báo cáo kết quả CI/Test pass trên mỗi thay đổi trước khi nó được cam kết repo may mắn của bạn. –
Vâng, nó sẽ là tốt khi chúng tôi nhận được đến giai đoạn đó :) – chrisbunney