Chính xác thì những gì có thể tái tạo được


9

Chính xác thì chúng là gì? Tại sao chúng quan trọng, trong lĩnh vực Giao hàng liên tục?

Bối cảnh: Tôi đã thấy trong một trong những ý kiến ​​của (tôi đoán reddit) rằng các bản dựng thực sự tái sản xuất vẫn là một công nghệ chưa được nghiên cứu và rất khó để tạo ra.

Vì vậy, tôi muốn biết tại sao chúng rất khó để tạo ra?


có thể một số con trỏ đến bối cảnh mà chúng được tham chiếu?
Dan Cornilescu

@DanCornilescu Chắc chắn. Đã thêm chi tiết :)
Dawny33

@ Pierre.Vriens Bằng cách kéo ra, ý tôi là, make possible:) Chỉnh sửa qn quá!
Dawny33

1
Merci cho chỉnh sửa, nhưng nhìn vào nó, tôi nghĩ bạn chỉ có nghĩa là "tạo ra" ...
Pierre.Vriens

1
Tôi ngần ngại cải thiện câu trả lời của mình (hoặc thêm một câu trả lời khác) bằng một ví dụ khác, từ kinh nghiệm của riêng tôi, từ hồi đầu những năm 90 ... mà (theo nghĩa đen) phải làm với việc bay sang bên kia thế giới, với 3 , Đĩa mềm 5 inch (2 bản, trong trường hợp có lỗi đọc ...), để giao phần mềm của chúng tôi tại một công ty (rất lớn) ... và nơi tôi phải xây dựng lại các tệp thực thi trong môi trường của chúng (trên máy tính lớn) .. DevOps-avant-la-lettre ...
Pierre.Vriens

Câu trả lời:


8

Chính xác thì chúng là gì?

Đây là một trích dẫn từ recible-builds.org :

Các bản dựng có thể lặp lại là một tập hợp các thực tiễn phát triển phần mềm tạo ra một đường dẫn có thể kiểm chứng được từ mã nguồn có thể đọc được của con người đến mã nhị phân được sử dụng bởi các máy tính.

Tại sao chúng lại quan trọng?

IMO cách dễ nhất để giải thích tầm quan trọng của chúng là coi chúng như một biến thể của thủ tục sao lưu.

Ví dụ:

  • Giả sử một doanh nghiệp sử dụng (phụ thuộc) vào một số gói phần mềm được cấp phép từ một số nhà cung cấp phần mềm. Trong khi đó, doanh nghiệp chỉ nhận được các tệp thực thi, không phải các nguồn, v.v. được sử dụng để tạo ra các thực thi đó.

  • Mọi thứ đều ổn, nhưng đến một lúc nào đó có vấn đề xảy ra với nhà cung cấp phần mềm, ví dụ như họ không hoạt động (ví dụ như phá sản).

  • Điều này có thể gây rủi ro cho doanh nghiệp (về lâu dài). Tức là nếu không có thủ tục / thỏa thuận để doanh nghiệp có quyền truy cập (hợp pháp) vào tất cả các nguồn, tài liệu, quy trình xây dựng, v.v. liên quan đến bất cứ điều gì từ nhà cung cấp phần mềm được sử dụng (trước đó) doanh nghiệp) đã được tạo ra (và vận chuyển đến doanh nghiệp).

  • Đó là "Ký quỹ phần mềm " được giải cứu: nếu có thỏa thuận như vậy, người ta sẽ nghĩ rằng thông qua bên thứ 3, doanh nghiệp vẫn có thể truy cập vào " bất cứ điều gì đã được sử dụng " để có thể sao chép các tệp thực thi, do đó, từ đó trở đi, doanh nghiệp có thể có cơ hội tiếp tục sử dụng phần mềm đó và nơi mà người có trách nhiệm bắt đầu tự duy trì nó (chỉ để điều hành doanh nghiệp của riêng họ).

  • Tuy nhiên, " bất cứ điều gì đã được sử dụng " trong viên đạn trước là phần khó nhất để thực hiện công việc này. Nó yêu cầu bên thứ 3 thực hiện xác nhận hợp lệ trả trước. Và tin tôi đi, phải mất một thời gian trước khi bạn có thể tạo lại một tệp thực thi mà bạn có thể chứng minh rằng, ngoài (ví dụ) ngày liên kết, nó là một kết hợp hoàn hảo với những gì nhà cung cấp phần mềm cung cấp cho đại lý phần mềm.

Và tại sao chúng rất khó để tạo ra?

Nếu mẫu trên vẫn chưa đủ rõ ràng, hãy tưởng tượng bạn là đại lý ký quỹ phần mềm của tôi, hãy cho tôi biết những gì bạn cần làm đầu vào để tạo lại một bản sao của phần mềm được khách hàng của tôi cấp phép. Hiểu rồi? Bạn đã không quên kiểm tra phiên bản nào của trình biên dịch của tôi, có thể là hệ điều hành, tùy chọn biên dịch / liên kết, phiên bản của các thành phần có thể tái sử dụng (bao gồm), thư viện, v.v?


4

Để cung cấp một ví dụ thực tế về nỗ lực tạo ra một bản dựng thực sự có thể lặp lại, hãy xem xét những điều sau đây -

Một đường ống xây dựng bắt đầu với một kho lưu trữ git mà không người dùng nào có thể viết lại lịch sử hoặc xóa các nhánh không được trộn.

Bước "xây dựng" đầu tiên sau khi kiểm tra mã nguồn là quay vòng một thùng chứa chứa tất cả các phụ thuộc thời gian xây dựng.

Đầu ra của bộ chứa thời gian xây dựng đang chạy là một bộ chứa bộ nhị phân được biên dịch.

Quan trọng hơn đối với độ lặp lại của bản dựng, các thẻ sau được thêm vào thùng chứa cuối cùng:

  • Hàm băm chính xác của mã nguồn trong kho lưu trữ ban đầu và url của cả git repo và ảnh chụp nhanh bóng tar của mã được tải lên kho lưu trữ giả.
  • Phiên bản chính xác của thùng chứa bản dựng được sử dụng để chạy bản dựng.
  • Phiên bản chính xác của hình ảnh cơ sở ban đầu mà nhị phân được tải vào.
  • Các giá trị của tất cả các biến thời gian xây dựng được sử dụng để tạo nhị phân.
  • Phiên bản của docker mà cả ba container được xây dựng cùng với phiên bản mà chúng chạy bên dưới khi chúng được xây dựng.

Bằng cách thêm tất cả dữ liệu meta này, chúng tôi có thể đảm bảo rằng tại bất kỳ thời điểm nào trong tương lai, chúng tôi có thể rút ra bộ phụ thuộc chính xác của bản dựng (thông qua bộ chứa bản dựng), biên dịch nhị phân với một bộ các bước đã biết chính xác (được ghi trên thùng chứa bản dựng ) và đóng gói nó vào một hình ảnh cơ sở đã biết khác với tất cả các phụ thuộc thời gian chạy (sử dụng thẻ hình ảnh cơ sở) và tất cả có thể dựa trên phiên bản chính xác của mã nguồn dựa trên thẻ trên thùng chứa.

Về mặt lý thuyết điều này sẽ cho chúng ta khả năng tái tạo chính xác một phiên bản xây dựng.

Điều quan trọng của việc này là nó cho phép chúng ta xem xét những gì đang chạy trong sản xuất và, ngay cả khi mọi thứ đã có các phiên bản tiến bộ đáng kể, hãy quay lại và lấy ra phiên bản mã, hình ảnh cơ sở và thùng chứa xây dựng ban đầu được sử dụng để chúng ta có thể , áp dụng bản sửa lỗi nóng cho phiên bản đó trước khi xây dựng lại chính xác như trước để chúng tôi có thể triển khai lại khi biết rằng đó chính xác là cùng một tạo tác với đồng bằng duy nhất là bản sửa lỗi nóng.

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.