2016-01-10 19 views
5

Tôi đang sử dụng Travis CI để xây dựng hình ảnh docker từ Dockerfiles và sau đó đẩy chúng vào Docker Hub thành công.Làm cách nào để tự động cập nhật mô tả đầy đủ trên Docker Hub?

Tôi đã tạo tệp MD mô tả hình ảnh và cách sử dụng hình ảnh đó. Tôi muốn có mô tả tương tự trên Docker Hub trong phần mô tả đầy đủ.

Vì tôi có thể cập nhật mô tả trong tương lai, tôi muốn Travis CI tự động cập nhật mô tả dựa trên tệp MD trong kho lưu trữ với hình ảnh mới.

Bất kỳ ai biết cách thực hiện việc này?

Trả lời

8

Kể từ Docker Hub does not expose any API, cách duy nhất để gửi nội dung đến Trung tâm Docker từ xa là với lệnh docker push và điều này giới hạn việc sử dụng để gửi hình ảnh. Mặt khác, nếu bạn để dịch vụ Docker Hub xây dựng hình ảnh cho bạn từ kho lưu trữ Github hoặc Bitbucket, thì Docker Hub sẽ cập nhật mô tả dài bằng cách lấy nội dung của tệp README.md được tìm thấy trên kho lưu trữ đó. Xem phần Understand the build process từ tài liệu Tự động xây dựng của Docker Hub.

Điều này ngụ ý rằng bạn lưu trữ các tệp DockerfileREADME.md của mình trên Github hoặc Bitbucket.


Nếu bạn thực sự cần phải đầu tiên xây dựng hình ảnh của bạn trên TravisCI (có lẽ bởi vì bạn cũng chạy thử nghiệm tự động vào hình ảnh được xây dựng), sau đó bạn có thể có TravisCI kích hoạt một webhook trên Docker Hub nói Docker Hub để xây dựng hình ảnh một khi TravisCI xác định nó đã vượt qua các bài kiểm tra.

Để làm như vậy, trong Docker Hub, cấu hình hình ảnh của bạn như bạn sẽ cho tự động xây dựng (do đó kết hợp một dự án Github hoặc Bitbucket), nhưng tắt tính năng tự động:

Docker Hub project build settings

Sau đó, cuộn xuống trên trang Cài đặt bản dựng tới phần Trình kích hoạt xây dựng và sao chép URL trình kích hoạt:

Docker Hub project build trigger

Bây giờ sửa .travis của bạn.yml tập tin và thêm khối sau (nhớ những <your account><your image> placeholders):

after_success: 
# notify Docker Hub to make a new build 
- > 
    [ "$TRAVIS_BRANCH" == "master" ] 
    && curl -X POST -H "Content-Type: application/json" 
    --data '{"docker_tag_name": "latest"}' 
    https://registry.hub.docker.com/u/<your account>/<your image>/trigger/$DOCKER_HUB_TOKEN/ 

Sau đó đi đến trang dự án của bạn trên trang web Travis CI, và mở các thiết lập dự án:

Travis CI project settings

Và thêm biến môi trường DOCKER_HUB_TOKEN vào dự án Travis CI của bạn với giá trị mã thông báo kích hoạt được tìm thấy trên trang Docker Hub Build Settings:

Travis CI project environment variables

Bạn vẫn sẽ cần một kho Github hoặc Bitbucket liên quan đến dự án Docker Hub của bạn, nhưng Travis CI sẽ là một hướng dẫn Docker Hub khi xây dựng hình ảnh của bạn.

+0

Có, tôi biết về Bản dựng tự động, nhưng tôi muốn sử dụng Travis CI, để tôi cũng có thể thực hiện một loạt các bài kiểm tra. Có cách nào khác hay tôi chỉ nên viết một kịch bản hoạt động như một trình duyệt và thay đổi mô tả trên trang Docker Hub? – NEO

+0

@NEO Điều đó có thể được thực hiện, việc thiết lập phức tạp hơn nhưng tôi sẽ cố gắng giải thích rõ ràng → trả lời đã chỉnh sửa – Thomasleveil

+0

Đây là một ý tưởng hay. Nhưng tôi nên làm gì nếu tôi muốn kích hoạt nhiều bản dựng? Bây giờ, tôi đang sử dụng tính năng xây dựng ma trận của Travis CI để xây dựng nhiều hình ảnh bằng cách chỉ thay đổi một số biến env. Có thể kích hoạt các bản dựng cho mỗi hàng của ma trận không? – NEO

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