Để 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.