2016-12-09 22 views

Trả lời

3

Theo thiết kế, bạn không thể chuyển các tạo phẩm giữa các công việc trong một đường ống mà không sử dụng một số loại tài nguyên bên ngoài để lưu trữ nó. Tuy nhiên, bạn có thể chuyển giữa các tác vụ trong một công việc. Ngoài ra, bạn chỉ định hình ảnh ở cấp độ công việc thay vì cấp độ công việc. Ergo, cách đơn giản nhất để làm những gì bạn muốn có thể là có một công việc duy nhất có nhiệm vụ đầu tiên để tạo hình ảnh docker, và nhiệm vụ thứ hai tiêu thụ nó làm hình ảnh vùng chứa.

Trong trường hợp của bạn, bạn sẽ xây dựng hình ảnh docker trong tác vụ xây dựng và sử dụng docker export để xuất hệ thống tệp của hình ảnh thành rootfs mà bạn có thể đưa vào đầu ra (my-task-image). Hãy ghi nhớ lược đồ cụ thể cho đầu ra rootfs mà nó cần để khớp. Bạn sẽ cần rootfs/... (trích xuất 'docker export') và metadata.json chỉ có thể chứa một đối tượng json rỗng. Bạn có thể xem kịch bản trong tài nguyên hình ảnh docker để biết thêm thông tin về cách làm cho nó phù hợp với lược đồ: https://github.com/concourse/docker-image-resource/blob/master/assets/in. Sau đó, trong tác vụ tiếp theo, bạn có thể thêm thông số hình ảnh vào đường dẫn yml của mình như sau:

- task: use-task-image 
    image: my-task-image 
    file: my-project/ci/tasks/my-task.yml 

để sử dụng hình ảnh được tạo sẵn trong tác vụ.

+0

Tôi đã thử làm điều này nhưng tôi không thể có tác vụ xây dựng thành công hình ảnh. Theo như tôi biết nhiệm vụ phải chạy trong docker, có nghĩa là nó sẽ phải chạy docker xây dựng trong docker mà tôi đã không quản lý để làm việc ra – Shawabawa

+0

Bạn có thể muốn kiểm tra một [hướng dẫn] (http: // kỹ thuật. pivotal.io/post/concourse-docker-image-resource-cache-tutorial/) chúng tôi đã viết bằng cách sử dụng 'docker-image-resource' – materialdesigner

+4

Một lần nữa để đẩy hình ảnh. Tôi muốn để có thể tạo ra một container docker và sử dụng nó * mà không cần * đẩy – Shawabawa

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