Tôi đang tìm một phần mềm mà tôi hy vọng ai đó đã xây dựng. Tôi sẽ mô tả phần mềm này ở đây hy vọng rằng ai đó đã nghe về một cái gì đó như thế này và có thể chỉ cho tôi đi đúng hướng.Proxy Git đẩy tới nhiều điều khiển từ xa
Tôi đang phát triển một ứng dụng web được triển khai trên Heroku. Vì những hạn chế của Heroku, tôi đang rơi vào tình huống không may khi có bốn (4) bản repo Git từ xa cho cùng một bản repos.
Tại sao lại là bốn?
Chúng tôi có nhiều "ứng dụng" trên Heroku. Một cho sản xuất và một vài dàn "ứng dụng". Đây là tất cả cho các ứng dụng thực tế tương tự, nhưng trên Heroku họ là "ứng dụng" riêng biệt, vì vậy chúng tôi có thể thử những điều trên dàn dựng trước khi đẩy chúng vào sản xuất.
Mỗi ứng dụng trên Heroku nhận riêng repo Git riêng của nó và tự động triển khai chi nhánh master
mỗi khi một cam kết mới được đẩy đến chi nhánh master
đó. Chính sách này của Heroku là mấu chốt của vấn đề của chúng tôi. Bởi vì điều này có nghĩa là chúng tôi có 3 repos khác nhau trên Heroku, cộng với repo GitHub của chúng tôi.
Tại sao sự cố có 4 điều khiển từ xa Git khác nhau? Bởi vì nó có nghĩa là khi bạn phát triển và tạo ra các cam kết mới, bạn phải (1) đẩy tới chỉ một điều khiển từ xa hoặc (2) đẩy tới tất cả các điều khiển từ xa.
Làm (1) có nghĩa là suy nghĩ bạn muốn push từ xa nào. Tôi ghét phải nghĩ về điều này. Khi tôi phát triển, tôi không quan tâm đến điều khiển từ xa, tôi cam kết và thúc đẩy và trở lại làm việc. Nếu tôi muốn triển khai một nhánh vào máy chủ dàn dựng 1, ví dụ, tôi sẽ hợp nhất nhánh đó vào chi nhánh staging_1
và đẩy nó. Tôi không thích chọn cái điều khiển từ xa nào để đẩy tới.
Một bất lợi của (1) là các điều khiển từ xa của bạn không đồng bộ.
Điều tôi muốn là (2). Tôi muốn mọi hành động đẩy để thúc đẩy tất cả bốn bản demo của chúng tôi.
Nhưng có 2 vấn đề với điều đó:
Vấn đề 1: Các dàn "ứng dụng" trên Heroku triển khai những gì trên master
. Tôi không muốn họ làm điều đó. Tôi muốn ánh xạ chi nhánh staging_1
trong repo của tôi đến chi nhánh master
trên máy chủ dàn dựng Git repo.
Sự cố 2: Có máy tính của tôi đẩy tới tất cả 4 repo sẽ mất thời gian dài. Ngay cả 1 hành động đẩy Heroku mất một thời gian dài. Có thể mất 40 giây đôi khi.
giải pháp đề xuất
Đây là những gì tôi muốn. Tôi muốn có một máy chủ Git chuyên dụng hoạt động như một proxy. Bất cứ khi nào tôi đẩy từ máy tính cục bộ của tôi vào máy chủ Git này, nó sẽ đẩy các nhánh tương tự đó vào 4 mã số của chúng tôi song song. Theo cách đó, từ quan điểm của máy tính địa phương của tôi, việc đẩy sẽ có vẻ tức thời, trong khi máy chủ proxy này sẽ tự động xử lý các bản repo của Heroku trong nền.
Nếu việc đẩy bất kỳ điều khiển từ xa nào không thành công vì bất kỳ lý do nào, tôi muốn proxy này báo cáo lại theo cách nào đó để tôi biết điều gì đó bị hỏng và có thể khắc phục.
Một điều khác mà proxy này sẽ phải thực hiện là ánh xạ master
.Mỗi lần tôi sẽ đẩy chi nhánh staging_1
vào nó, nó sẽ đẩy nó như là staging_1
cho tất cả điều khiển từ xa, nhưng với điều khiển từ xa thuộc máy chủ dàn dựng, nó cũng sẽ đẩy nhánh đó thành master
, do đó Heroku sẽ biết triển khai nó.
(Nó khá buồn rằng Heroku được thiết kế theo một cách mà làm cho tôi cần một proxy như thế này, nhưng đó là những gì tôi phải đối phó với.)
Vì vậy, đó là nó. Đó là giải pháp tôi muốn. Có ai biết chương trình như vậy không?
Bài toán 1 được giải quyết bằng: 'git push staging staging_1: master' - nghĩa là đẩy nhánh staging_1 địa phương của bạn vào master của remote từ xa. –
Và bạn có thể tìm thấy https://github.com/fastestforward/heroku_san sẽ giúp với một kịch bản triển khai có thể làm điều đó cho bạn nhưng vẫn sẽ được triển khai chậm đến 4 repos. –