Các lý do cho việc không sử dụng Bitbucket-server để lưu trữ các tạo phẩm là gì?


10

Tôi đang làm việc với một công ty thiết lập một dự án hoàn toàn mới và chúng tôi đang nói về việc sử dụng công cụ nào để làm gì. Tôi đã nói về Artifactory hoặc Nexus để lưu trữ các tạo phẩm được xây dựng (APK trong trường hợp này) và họ đã hỏi tại sao họ không thể sử dụng Bitbucket như họ sẽ sử dụng cho phần mềm, để giảm số lượng công cụ họ cần cài đặt và bảo trì.

Câu trả lời ban đầu của tôi là "Nguồn đi vào repo nguồn và tạo tác đi vào repo nhân tạo", nhưng đó không thực sự là một câu trả lời tại sao hoặc tại sao không. Trong thực tế, Google cũng không đưa ra bất kỳ lý do nào.

THÊM VÀO NÀY: Sản phẩm này dành cho một ngành công nghiệp quy định. Điều đó có nghĩa là chúng ta cần một bản ghi hoàn chỉnh, có thể kiểm tra được về các đồ tạo tác được chế tạo. Đây là một trong những lý do chúng tôi xem xét điều này. Ngoài ra, như tôi đã nói trong một số ý kiến ​​nhưng sẽ thêm vào đây, chúng tôi sẽ cài đặt Bitbucket trong một GCP riêng không được công chúng truy cập, do đó không có lo ngại về việc người khác truy cập vào nó.

Bất kỳ đầu vào vào điều này? Bất cứ điều gì sẽ cắn chúng ta sau này nếu chúng ta lưu trữ chúng trong Bitbucket?

Câu trả lời:


11

Lý do không lưu trữ nhị phân lớn trong gitkho lưu trữ:

  • Theo mặc định, mọi người nhân bản kho lưu trữ của bạn sẽ tải xuống tất cả các tệp nhị phân đó. Binaries, nếu được xây dựng thường xuyên, có xu hướng tiêu thụ lớn lượng lưu trữ, so với mã nguồn - gitkhông thể nén chúng, hoặc đồng bằng châu thổ tính toán, để giảm kích thước của chúng.
  • gitcố gắng hết sức để đảm bảo lịch sử không bị mất, nó sẽ không bao giờ xóa bất cứ thứ gì là một phần của lịch sử của bất kỳ ref(các nhánh hoặc thẻ). Điều đó cũng có nghĩa là nếu sau này bạn quyết định xóa các tệp nhị phân cũ, vô dụng lâu dài do hết dung lượng, bạn sẽ thấy rằng, trong khi không phải là không thể, thực sự rất khó.
  • Một điểm của các cửa hàng tạo tác thích hợp là chúng giúp loại bỏ các bộ phận lỗi thời hoặc bị xâm phạm. gitthực sự không thể làm điều đó cho bạn - bạn phải viết công cụ của riêng mình cho điều đó - và bạn sẽ không bao giờ thoát khỏi các phiên bản cũ trong lịch sử.
  • Khái niệm "cam kết" không thực sự áp dụng cho nhị phân. Bạn cần các hoạt động như "tải lên" và "tải xuống", vì chúng thường được tham gia vào các quy trình xây dựng phần mềm của bạn (nghĩa là bundlertrong thế giới ruby ​​hoặc maventrong Java). Những người xây dựng đó biết cách lấy thư viện bên thứ 3 của họ từ kho lưu trữ giả tạo một cách dễ dàng và cách tải lên các phiên bản mới. Họ có thể bị thuyết phục làm việc với một gitkho lưu trữ để tải xuống, nhưng vì gitkhông có thông tin về phiên bản, nên bạn cần phải có công cụ riêng, chỉ định cam kết tìm nhị phân đó theo cách thủ công hoặc kiểm tra tất cả các nhị phân được sử dụng cục bộ. Và tải lên một gitkho lưu trữ, một lần nữa, sẽ sử dụng công cụ của riêng bạn (cũng tạo ra các cam kết giả).

Tổng cộng, sử dụng gitcho đó chỉ là công cụ sai. Nếu các đồng nghiệp của bạn sợ thêm một công cụ phức tạp khác như Nexus, thì ít nhất hãy thuyết phục họ sử dụng một công cụ đơn giản thay vì git- như một số kho lưu trữ (s)ftp/ tùy ý scptrong VM ở đâu đó, với httpsquyền truy cập thông qua một máy chủ web đơn giản.

Nếu bạn phải sử dụng git, thì ít nhất hãy đảm bảo rằng các nhị phân xây dựng không được cam kết cùng với mã nguồn, nhưng trong phần lịch sử của riêng chúng. Kiểm tra câu trả lời cũ hơn này để xem cách tạo một nhánh mồ côi . Những cái đó ít nhất có thể bị xóa sau đó, và các nhị phân tự xóa bằng cách thu gom rác; và không phải mọi khách hàng đều bị buộc phải tải xuống tất cả mọi lúc.


Vui lòng xem những gì tôi đã thêm vào câu hỏi ban đầu sau khi đọc câu hỏi của bạn. Chúng tôi cần một hồ sơ đầy đủ của tất cả các tạo tác được xây dựng. Tôi tò mò về tuyên bố của bạn "Git không có thông tin về phiên bản". Đó là những gì git làm, và phiên bản các tạo tác được xây dựng chính xác là những gì chúng ta cần. Chúng tôi cũng đang xây dựng APK không phải là thư viện để đưa vào các bản dựng khác. WRT kiểm tra nguồn và nhị phân cùng nhau, vâng tôi sẽ sử dụng một repo khác cho nhị phân. Cảm ơn.
dj_segfault

2
Tôi có nghĩa là "thông tin phiên bản" theo nghĩa ngữ nghĩa - kho lưu trữ tạo tác biết rằng một tạo tác (tên) duy nhất có thể có nhiều phiên bản; cung cấp cho bạn "mới nhất" và như vậy. Từ nhận xét của bạn, việc bạn sử dụng các kho lưu trữ khác nhau rất quan trọng và cũng nên đi vào câu hỏi; điều đó sẽ thay đổi toàn bộ quan điểm. Câu trả lời của tôi là giả định rằng các đồng nghiệp của bạn muốn thực hiện các nhị phân xây dựng cùng với mã nguồn.
AnoE

5

Bạn có thể sử dụng kho lưu trữ Git (cho dù nó được lưu trữ trên Bitbucket hay không) làm kho lưu trữ giả, nhưng bạn nên lưu ý rằng:

  • Git ban đầu được tạo ra như một hệ thống kiểm soát phiên bản cho mã nguồn , không phải cho dữ liệu nhị phân (lớn) và đây vẫn là mối quan tâm chính của nó. Có các tiện ích mở rộng cho phép làm việc với các tệp lớn trong Git một cách hiệu quả, ví dụ như Git LFS , nhưng vẫn: Nó không được tích hợp vào lõi của Git.
  • Kho lưu trữ tạo tác thích hợp có các tính năng mà dịch vụ dựa trên Git không thể dễ dàng cung cấp. Ví dụ, bạn có thể muốn xóa các tạo phẩm chụp nhanh cũ hơn, một thao tác Git không được thiết kế cho, nhưng tính năng cốt lõi của kho lưu trữ tạo tác là gì. Một số tính năng như vậy được mô tả trong các câu trả lời cho câu hỏi Kho lưu trữ giả là gì? .

Vì vậy, trong khi bạn có thể sử dụng Git / Bitbucket làm kho lưu trữ giả, thì hơi giống như lái vít bằng búa thay vì tuốc nơ vít.


0

Nếu bạn sẽ lưu trữ các tệp apk trong repo của Bitbucket, bạn cần sử dụng git hoặc cuộn tròn để sao chép. Và nếu repo private bạn cần có quyền truy cập vào nó, giới hạn kích thước, v.v.

Kho phần mềm thoải mái hơn để lưu trữ tệp nhị phân. Bạn có thể tạo gương của riêng bạn về maven, google repos.


Góc thú vị. Vì nó xảy ra, ứng dụng này là một ứng dụng Android sẽ luôn được tải bên cạnh, không phải từ cửa hàng ứng dụng. Các repo là riêng tư là một lợi thế cho chúng tôi. Tôi đồng ý tất cả những điều này sẽ là một vấn đề nếu chúng ta đang nói về các thư viện được đưa vào các bản dựng khác. Cảm ơn vì đầu vào của bạn.
dj_segfault

0

Bạn có thể sử dụng các đường ống bitbucket để triển khai đến phần tải xuống và giữ các tạo phẩm của bạn ở đó. Đây là một ví dụ từ tài liệu của họ


Tôi đã tìm thấy điều đó và nghĩ rằng đó là một ý tưởng tuyệt vời, nhưng tôi NGHINK (chưa tìm thấy các tài liệu nói rõ ràng) các bản tải xuống chỉ dành cho phiên bản đám mây của họ. Chúng tôi đang cài đặt Bitbucket trong môi trường của chúng tôi. Điều đó vẫn sẽ làm việc chứ?
dj_segfault

@dj_segfault, Bitbucket Pipelines (và do đó có lẽ cũng là phần tải xuống) (hiện tại?) "chỉ đám mây", xem câu hỏi này trên diễn đàn hỗ trợ AtlassiansBSERV-9245 trong trình theo dõi lỗi của họ .
siegi

0

Như những người khác đã nói, bạn sẽ không kiểm tra các nhị phân thành git. Nhưng, Bitbucket cung cấp một khu vực "Tải xuống" riêng cho mỗi repo. Đây là một khu vực riêng biệt, không phải là một phần của repo git. Nếu sử dụng Bitbucket Pipelines, bạn thậm chí có thể tự động hóa việc triển khai đến khu vực tải xuống , nếu phù hợp với quy trình làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.