2015-01-28 26 views
18

Tôi có một loạt các vùng chứa Docker tất cả được kết nối bằng cách sử dụng docker-compose (hình trước đó). Tôi đã thấy rằng các dịch vụ tự quảng cáo là dịch vụ "Docker CI" thường chỉ nói về việc sử dụng Docker để chạy công nhân xây dựng của họ.Có dịch vụ CI nào cho phép bạn xây dựng các vùng chứa Docker và sử dụng bộ đệm ẩn của bộ đệm docker không?

Tôi muốn một dịch vụ tích hợp liên tục giúp bảo vệ bộ đệm xây dựng bộ đệm ẩn giữa các lần chạy, thay vì kéo lên một bối cảnh công việc/hệ thống tệp/hoàn toàn mới. Nếu không, các bản dựng hoàn toàn mãi mãi. Được quản lý một cách lý tưởng (không giống như https://github.com/groupon/DotCi, không đi kèm với cơ sở dữ liệu sẵn sàng cho mỗi lần xây dựng của CircleCI).

Điều duy nhất tôi tìm thấy là TeamCity (cũ, bạn không thể tạo phiên bản nhiệm vụ trong một tệp yaml dễ dàng như bạn có thể với CircleCI, bạn phải duy trì cơ sở hạ tầng, v.v.). Quay.io không cung cấp một cơ sở dữ liệu như CircleCI và Travis, vì vậy bạn phải phân nhánh dev và prod và cài đặt một bên trong thùng chứa và chạy thử nghiệm đơn vị trong quá trình xây dựng thùng chứa (ew - bạn không thể sinh ra một thùng chứa không có sẵn để gỡ lỗi!).

Làm thế nào để bạn chạy tích hợp liên tục trên cụm vùng chứa Docker của mình?

+0

Lưu ý rằng bây giờ có thể xây dựng hình ảnh docker trên Travis, https://blog.travis-ci.com/2015-08-19-using-docker-on-travis-ci/ – cboettig

Trả lời

14

Cập nhật: CircleCI 2.0 là Docker-centric. Bạn có thể xây dựng hình ảnh Docker, sử dụng bộ nhớ đệm lớp, sử dụng Docker Compose và thậm chí sử dụng hình ảnh Docker chính thức và tùy chỉnh làm môi trường xây dựng của bạn.


circleCI phép bạn xây dựng container Docker như một phần của xây dựng của bạn: https://circleci.com/integrations/docker

Bạn đang tuy nhiên đúng là chúng ta không bộ nhớ cache hình ảnh Docker - đó là một chút khó khăn trên stack của chúng tôi để làm điều đó ngay, nhưng chúng tôi đang lên kế hoạch giải quyết sớm.

Trong thời gian chờ đợi, một số khách hàng đã lưu trong bộ nhớ cache bằng cách sử dụng bộ nhớ đệm tích hợp (không Docker) của CircleCI, bằng cách sử dụng docker save/docker load: https://circleci.com/docs/docker#caching-docker-layers. Nó không phải là lý tưởng, nhưng nó sẽ thủy triều bạn hơn cho đến khi chúng tôi có thể hỗ trợ điều này tốt hơn rất nhiều.

+7

Tôi muốn ' docker load' đã làm điều đó, nhưng nó không bảo vệ cache xây dựng. 'docker load' mất nhiều thời gian như kéo một hình ảnh hoàn toàn xây dựng từ một kho lưu trữ tư nhân để nó không làm các trick. – user3906849

+2

Paul bạn sẽ có một bản cập nhật về phần "lập kế hoạch giải quyết sớm"? Sẽ rất thú vị đây. – user2707671

+0

Dựa trên thử nghiệm của tôi, đó là sự hiểu biết của tôi rằng ngay cả chiến lược 'docker save/load' được liên kết không hoạt động (các lệnh docker build được chạy hoàn toàn tại mỗi build), theo nhận xét này ở đây: https: //discuss.circleci .com/t/docker-1-10-0-là-sẵn-beta/2100/15 @ paul-biggar, hoặc bất kỳ ai- có một ví dụ làm việc? – thisjustin

3

Tôi hiện đang sử dụng circleCI, xem http://tschottdorf.github.io/cockroach-docker-circleci-continuous-integration cho một hướng dẫn tốt để sử dụng bộ nhớ cache Docker

shippable cũng là giá trị kiểm tra ra, như toàn bộ cơ sở hạ tầng của họ được dựa trên Docker và dàn nhiều container Docker với shippable formations.

+1

chỉ cần khắc phục nhanh, có vẻ như URL cho bài đăng trên blog chỉ hoạt động mà không có dấu gạch chéo sau vì nó sẽ trả về 404: http://tschottdorf.github.io/cockroach-docker-circleci-continuous-integration – fagiani

+0

@fagiani cảm ơn, chỉ cần cố định URL – d3ming

-2

Bạn đã thấy wercker? Nó hỗ trợ "mang container của riêng bạn", sẽ lưu trữ hình ảnh của bạn (tôi nghĩ trên cơ sở mỗi người lao động, nhưng sau một vài lần xây dựng thường khởi động giảm xuống còn vài giây với hình ảnh tùy chỉnh), và afaik cũng cho phép tạo hình ảnh Docker.

Nhược điểm: yêu cầu far too many GitHub permissions.

+0

Nó thậm chí không cho phép bạn sử dụng 'Dockerfile' của riêng bạn vì vậy nó không phải là một giải pháp tốt. –

+0

@SteffenBrem: Bạn có thể xây dựng hình ảnh từ Dockerfiles của bạn tại trung tâm docker và sử dụng chúng trong wercker. Làm việc cho tôi. – krlmlr

0

Có một câu hỏi liên quan "How can I let the gitlab-ci-runner DinD image cache intermediate images?".

Ngay cả khi our solution yêu cầu một số lượng tối thiểu duy trì cơ sở hạ tầng (chúng tôi cần chạy nhân vật riêng của chúng tôi), tôi nghĩ nó đáng xem.

Về cơ bản chúng tôi không chạy Docker trong Docker, nhưng chúng tôi đang tạo một máy ảo riêng cho người chạy. Điều này có một số ý nghĩa về các nhiệm vụ bảo mật và dọn dẹp, vui lòng xem thêm README của nhân viên của chúng tôi.

Có lẽ giải pháp này sẽ trở nên lỗi thời trong tương lai vì hỗ trợ Docker cho các hệ thống CI khác nhau được cải thiện, nhưng hiện tại nó là sự kết hợp tốt giữa hiệu suất, bảo trì và khả năng sử dụng.

Các vấn đề liên quan