Làm thế nào để tích hợp liên tục liên quan đến phân phối / triển khai liên tục?


20

Dưới đây là một trích dẫn từ nội dung hiện tại của :

... Quá trình hợp nhất các bản sao mã làm việc của nhà phát triển với một cơ sở mã được chia sẻ thường xuyên để ngăn chặn hoặc giảm thiểu các vấn đề tích hợp.

OK, tôi hiểu rồi. Nhưng sau đó cũng , và đó là nơi mà tôi liên tục bị một chút mất:

  • Việc tích hợp liên tục liên quan đến phân phối liên tục và / hoặc triển khai liên tục như thế nào, giả sử rằng một nơi nào đó dọc theo (các) đường dây thông qua integrationbạn kết thúc deliveringtrong một môi trường đích nơi mọi thứ sẽ diễn ra deployed.
  • Sự khác biệt giữa giao hàng liên tụctriển khai liên tục là gì?

Trước đây, trước khi DevOps được gọi là DevOps, chúng tôi đã sử dụng thuật ngữ có thể giúp hiểu các thuật ngữ DevOps mới này, chẳng hạn như:

  • quảng bá (hoặc hạ cấp từ) một số mục tiêu tiền sản xuất, tùy ý kết hợp với một số loại quy trình tái tạo (biên dịch, liên kết, v.v.) để đóng gói tất cả các thành phần liên quan lại với nhau trong những thứ giống như thực thi. Đó là những gì nên tương tự / gần với tích hợp liên tục , hay không?
  • phân phối đến một số môi trường đích, sử dụng một cái gì đó như FTP (nếu các bản sao tiêu chuẩn không thể thu hẹp khoảng cách), nhưng chưa kích hoạt nó trong mục tiêu. Đó là những gì nên tương tự / gần với giao hàng liên tục , hay không?
  • cài đặt (hoặc kích hoạt ) trong một số môi trường đích, kết hợp với những thứ như liên kết, dừng / bắt đầu hoạt động, v.v ... Đó có phải là điều tương tự / gần với việc triển khai liên tục hay không?

Quá nhiều đánh dấu thẻ làm cho nó khó đọc. Điều đó không mang lại nhiều bối cảnh hơn cho câu hỏi vì vậy tôi nghĩ rằng các Ords có thể được nhấn mạnh bằng cách gạch chân _markdown_ để giảm bớt việc đọc
Tensibai

1
Ý tôi là chỉnh sửa là một nỗi đau :) gợi ý cho câu trả lời blog.crisp.se/wp-content/uploads/2013/02/ Kẻ
Tensibai


Câu trả lời liên quan của tôi: softwareengineering.stackexchange.com/a3538551/3385
Nakilon

Câu trả lời:


23

Việc phân phối liên tục và triển khai liên tục đều tiến hành tích hợp liên tục một bước nữa, bằng cách thêm một bước 'triển khai vào sản xuất' vào quy trình. Sự khác biệt giữa phân phối và triển khai liên tục là để phân phối, bước này được thực hiện thủ công và để triển khai là tự động.

Sự khác biệt giữa Tích hợp liên tục, Giao hàng liên tục và Triển khai liên tục

Sự khác biệt giữa tích hợp liên tục, giao hàng liên tục và triển khai liên tục. Hình ảnh được sao chép từ codeproject.com

Cho dù bạn giao hàng liên tục hay triển khai liên tục đều là một lựa chọn thực hiện. Nếu bạn thực hiện triển khai liên tục, các thay đổi trong mã sẽ được triển khai tự động sau khi các thử nghiệm chấp nhận được thông qua. Điều này có thể hoặc không thể mong muốn cho sản phẩm của bạn. Với việc phân phối liên tục, mọi người có thể đưa ra lựa chọn cho dù một thay đổi mã cụ thể có được triển khai hay không (và có thể chính xác là nó được triển khai ở đâu).

Vì sự khác biệt giữa phân phối và triển khai liên tục là nhỏ và nhiều người không biết về sự khác biệt chính xác, hai thuật ngữ đôi khi được sử dụng thay thế cho nhau.


Tốt đẹp! Nhưng ... giải pháp (câu trả lời của bạn) cho một vấn đề (câu hỏi của tôi), thay đổi vấn đề ... đọc thêm ...
Pierre.Vriens

4

Phân phối liên tục và triển khai liên tục (CD) ít nhiều giống nhau *. Mỗi khi một thay đổi được coi là "tốt để đi" (đã được kiểm tra / xác minh) thì nó sẽ được phát hành ngay lập tức. Bạn có thể làm điều này nhiều lần trong ngày khi công việc đã hoàn thành.

Tích hợp liên tục (CI) chỉ đề cập đến việc hợp nhất mã thường xuyên với nhau để đảm bảo rằng các nhánh tính năng không xoay quá xa nhánh 'chính' của bạn và cũng để bạn biết rất nhanh nếu có bất kỳ vấn đề nào với mã từ phối cảnh tích hợp - tức là Bạn đã phá vỡ bất kỳ chức năng nào trong khi thay đổi công cụ.

Theo như cách chúng liên quan với nhau, CI giúp rất nhiều để xác minh mã để nó có thể được phát hành nhanh chóng (CD). Bạn vẫn có thể đạt được CD mà không cần CI (và ngược lại), nhưng bạn sẽ thấy rằng thường thì việc tích hợp mã của bạn sớm dễ dàng hơn và thường tìm ra các vấn đề nhanh hơn, điều này sẽ cho phép bạn khắc phục các sự cố đã nói nhanh hơn và cuối cùng cung cấp các tính năng của bạn nhanh hơn!

* Chỉnh sửa: đây là một bài viết thảo luận về sự khác biệt. https://puppet.com/blog/continupt-delivery-vs-continupt-deployment-what-s-diff Giao hàng liên tục không phải lúc nào cũng có nghĩa là thực sự triển khai vào sản xuất mọi lúc , với sự tự tin rằng những thay đổi đó có thể đi vào sản xuất bất cứ lúc nào một khi doanh nghiệp đã sẵn sàng. Trong thực tế, hầu hết mọi người thổ lộ những điều khoản này.


thương xót Nhưng theo "nhiều hay ít điều tương tự" của bạn, thực sự? bạn có thể nghĩ ra bất cứ điều gì minh họa cho bất kỳ sắc thái nào không?
Pierre.Vriens

Tôi đã cập nhật bài viết của mình với một lưu ý về sự khác biệt, tuy nhiên tôi tin rằng trong cuộc trò chuyện bình thường, hầu hết mọi người sẽ sử dụng các thuật ngữ này thay thế cho nhau.
tayworm

2

Một phiên bản nhất định của sản phẩm phần mềm trước tiên phải hoàn thành giai đoạn tích hợp trước khi có thể phân phối hoặc triển khai.

Đối với phân phối liên tục / triển khai tích hợp liên tục là phải. Mặt khác, nếu các sự kiện hoàn thành tích hợp quá xa nhau để đủ điều kiện cho thuộc tính "liên tục" thì việc phân phối / triển khai có thể xảy ra (chỉ một tập hợp con của các phiên bản tích hợp thường đủ điều kiện giao hàng / triển khai).

Cập nhật: Câu trả lời của tôi chỉ nhấn mạnh sự phụ thuộc (mối quan hệ) giữa CI và (cả hai) CD, thuật ngữ này được bao phủ khá tốt bởi câu trả lời của THelper.

Nhận xét duy nhất tôi có đó là về việc sử dụng (quá tải) deployment. Triển khai trong môi trường phi sản xuất là một điều có thật. Chúng thậm chí có thể xảy ra thường xuyên - đủ, chẳng hạn, được thực hiện như một phần của các giai đoạn thử nghiệm khác nhau trong quá trình giao hàng liên tục. Nhưng điều đó không làm cho việc triển khai như vậy continuous deployments. Việc triển khai liên tục đề cập cụ thể đến việc triển khai trong môi trường sản xuất.


ok, tất cả đều hữu ích, nhưng có lẽ bạn có thể mở rộng câu trả lời của mình với cách bạn mô tả phân phối và triển khai?
Pierre.Vriens

1

Về cơ bản, tích hợp liên tục là một phần của cả phân phối liên tục và triển khai liên tục, ngoại trừ việc phát hành diễn ra tự động. Bạn cũng có thể nghĩ về việc phân phối liên tục như một bước tiếp theo hợp lý của tích hợp liên tục và nó hoạt động trên tất cả các môi trường. Tích hợp liên tục cũng giúp xác minh nhân tạo để có thể triển khai nhanh hơn. Mặc dù không thể triển khai liên tục mà không tích hợp liên tục và việc bắt lỗi với tích hợp liên tục sẽ dễ dàng hơn nhiều. Tất cả những điều liên tục trên nền tảng này, cuối cùng, về việc loại bỏ các hành động không cần thiết trong quy trình phát triển. Quan trọng nhất, CI / CD rất quan trọng từ cả khía cạnh kỹ thuật và kinh doanh. Các công ty không áp dụng các nguyên tắc DevOps này có nguy cơ đi theo con đường của khủng long. Trong môi trường CNTT tốc độ nhanh ngày nay, nó là một trong haiDevOps hoặc chết.

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.