Ngay bây giờ các đại lý Jenkins của chúng tôi tạo ra một docker-compost.yml cho mỗi dự án Rails của chúng tôi và sau đó chạy docker-compile lên. Docker-compos.yml có một vùng chứa "web" chính có rbenv và tất cả các phụ thuộc Rails khác của chúng tôi bên trong. Nó được liên kết với một vùng chứa DB có chứa DB Postgres thử nghiệm.
Vấn đề xảy ra khi chúng ta cần thực sự chạy các bài kiểm tra và tạo mã thoát. Máy chủ CI của chúng tôi sẽ chỉ triển khai nếu tập lệnh kiểm tra trả về lối ra 0, nhưng docker-compile luôn trả về 0, ngay cả khi một trong các lệnh vùng chứa không thành công.
Vấn đề khác là vùng chứa DB chạy vô thời hạn, ngay cả sau khi vùng chứa web chạy xong các bài kiểm tra, vì vậy docker-compose up
không bao giờ trả lại.
Có cách nào để chúng tôi có thể sử dụng docker-soạn cho quá trình này không? Chúng tôi cần có thể chạy các vùng chứa, nhưng hãy thoát sau khi vùng chứa web hoàn tất và trả lại mã thoát của nó. Hiện tại, chúng tôi đang gặp khó khăn khi sử dụng docker theo cách thủ công để quay lên vùng chứa DB và chạy vùng chứa web với tùy chọn --link.
docker-compose
1.12.0 trở lên. Có lẽ nó cũng là trường hợp của bạn. Một ví dụ có thể là:docker-compose up --exit-code-from test-unit
. Lưu ý rằng nó không hoạt động với tôi cho đến khi tôi thêm mộtset -e
vào đầu tập lệnh của mình.