2016-01-10 17 views
5

Utilizzo Travis CI per la creazione di immagini docker da Dockerfiles e poi il loro invio all'Hub Docker in caso di successo.Come posso aggiornare automaticamente la descrizione completa su Docker Hub?

Ho creato un file MD che descrive l'immagine e come usarlo. Voglio avere la stessa descrizione sull'Hub Docker nella sezione completa della descrizione.

Poiché potrei aggiornare la descrizione in futuro, voglio che Travis CI aggiorni automaticamente la descrizione in base al file MD nel repository con la nuova immagine.

Qualcuno sa come fare?

risposta

8

Dal Docker Hub does not expose any API, l'unico modo per inviare materiale all'Hub Docker in remoto è con il comando docker push e questo limite si utilizza per inviare immagini.

D'altra parte, se si lascia che il servizio Docker Hub a costruire la vostra immagine per voi da un repository GitHub o Bitbucket, quindi Docker Hub aggiornerà la descrizione lunga prendendo il contenuto del file README.md trovato su quel repository. Vedere la sezione Understand the build process dalla documentazione Creazione automatica della struttura Docker Hub.

Ciò implica che ospitate il vostro Dockerfile e README.md file su Github o Bitbucket.


Se avete veramente bisogno di costruire prima la vostra immagine sul TravisCI (forse perché si esegue anche test automatizzati sull'immagine costruita), allora si può avere TravisCI innescare un webhook sulla finestra mobile Hub per dire Docker Hub per costruire il immagine una volta TravisCI ha determinato che stava superando i test.

Per farlo, in Docker Hub, configurare l'immagine come si farebbe per accumulo (quindi associare un progetto Github o Bitbucket) automatizzato, ma disattivare la funzione automatica:

Docker Hub project build settings

Quindi scorrere verso il basso sulla pagina di configurazione per la sezione Build Trigger e copiare l'URL di attivazione:

Docker Hub project build trigger

Ora modificare i tuoi .travis.yml di file e aggiungere il seguente blocco (mente le <your account> e <your image> segnaposto):

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/ 

Poi vai alla pagina del progetto sul sito Travis CI, e aprire le impostazioni del progetto:

Travis CI project settings

E aggiungere la variabile di ambiente DOCKER_HUB_TOKEN al progetto Travis CI con il valore del token di attivazione trovato nella pagina Impostazioni build hub Docker:

Travis CI project environment variables

sarà ancora bisogno di un repository GitHub o Bitbucket associato al progetto Docker Hub, ma Travis CI sarà quello di istruire Docker Hub quando per costruire la vostra immagine.

+0

Sì, conosco Automated Builds, ma voglio usare Travis CI, in modo da poter fare anche un sacco di test. C'è un altro modo o dovrei semplicemente scrivere uno script che funge da browser e cambiare la descrizione sulla pagina Docker Hub? – NEO

+0

@NEO Ciò può essere fatto, la configurazione è più complicata ma cercherò di spiegarla chiaramente → risposta modificata – Thomasleveil

+0

Questa è in effetti una buona idea. Ma cosa dovrei fare se voglio attivare più build? Ora, sto usando la funzione di matrice di costruzione di Travis CI per creare più immagini semplicemente cambiando alcune variabili env. È possibile attivare build per ogni riga della matrice? – NEO