2017-10-19 15 views
10

Sử dụng TeamCity trong combiniation với git.
Hiện tại, TeamCity được thiết lập với "master" làm chi nhánh mặc định.Ngăn chặn TeamCity xây dựng trên nhanh về phía trước hợp nhất để làm chủ nếu xây dựng tồn tại cho rằng SHA1

Thông thường, sự phát triển diễn ra trên một chi nhánh khác (ví dụ: "dev") - TeamCity được đặt để xem các thay đổi trên "dev" và tự động tạo.

Nếu DEADBEEF-SOME-SHA đã được xây dựng & tagged by TeamCity như xây dựng 1.2.3.4 trên "dev" và chúng tôi nhanh về phía trước hợp nhất mà git SHA1 để "master", TeamCity vẫn thực hiện một xây dựng - vì vậy chúng tôi kết thúc với DEADBEEF-SOME-SHA được gắn thẻ như cả 1.2.3.4 và 1.2.3.5.

Khi tôi hiểu điều này, hãy tạo "dev" nhánh mặc định sẽ ngăn điều này.
Có cách nào khác để ngăn TeamCity thực hiện xây dựng nếu xây dựng đã thành công cho cùng SHA1 đó không?

Lưu ý nếu chúng tôi đẩy trực tiếp đến master (và SHA1 đó không tồn tại trên các nhánh khác/chưa được tạo) Tôi vẫn muốn thấy một bản dựng.

Tôi muốn đạt được điều này hoàn toàn trong TeamCity nếu có thể - không thêm tập lệnh/văn bản nào khác, v.v..

+0

Tôi muốn thực hiện điều này trong TeamCity - lý tưởng nhất là trong phần cấu hình kích hoạt. – eddiewould

Trả lời

1

Nếu bạn chỉ muốn hạn chế các chi nhánh mà các bản dựng được tự động kích hoạt, hãy đặt bộ lọc chi nhánh cho trình kích hoạt VCS:

Cài đặt dự án => Kích hoạt => VCS Kích hoạt (chỉnh sửa) => Bộ lọc chi nhánh

Set bộ lọc chi nhánh để

+:dev 

sau đó (mặc dù "bậc thầy" là chi nhánh mặc định) xây dựng sẽ chỉ được tự động kích hoạt trên dev. Bạn vẫn có thể thực hiện các bản dựng đặc biệt trên các nhánh khác (giả sử rằng gốc VCS cho phép nó)

+0

Thú vị. Chính xác hơn câu trả lời của tôi. +1 – VonC

5

Bạn có thể truy vấn các bản dựng cho một SHA1 cụ thể ... nhưng bạn have to know your previous buildID for that.

Vì vậy, những gì tôi sẽ làm là:

  • ghi trong một thư mục riêng (truy cập bởi tất cả các đại lý) các sha1 xây dựng ở phần cuối của từng công việc
  • chỉ gây nên một công việc mới nếu tập tin đó sha1 là chưa có.
+0

Cảm ơn bạn đã gợi ý, nhưng cố gắng tránh các bộ phận chuyển động nhiều hơn (viết các tập tin) – eddiewould

2

Có lẽ tôi đã bỏ lỡ điều gì đó:

nếu các cam kết được gắn thẻ trong repo của bạn, trước khi bắt đầu xây dựng mới, bạn có thể kiểm tra nếu người đứng đầu cam kết chưa được gắn thẻ:

# if you use exclusively lightweigth tags : 
git show-refs --tags | grep $(git rev-parse HEAD) 
# also check that the tag looks like a build tag, e.g : refs/tags/1.2.3.4 
    | grep "refs/tags/[1-9.]*$" 

# if you use annotated tags : 
git show-refs --tags --dereference | grep $(git rev-parse HEAD) 
# the grepped line may look like : refs/tags/1.2.3.4^{} 
    | grep -E "refs/tags/[1-9.]*(\^\{\})?$" 
+0

Bạn có thể giải thích về nơi để đặt điều này không? Trong phần quy tắc kích hoạt VCS? – eddiewould

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