web-dev-qa-db-fra.com

Docker Hub Automated Build - Marquage

Lors de la spécification d'une construction automatisée sur Docker Hub, je peux définir certains paramètres (Type ('Branch' ou 'Tag'), Name, Dockerfile Location et Docker Tag Name). Mais malheureusement, je n'ai trouvé aucune documentation à ce sujet.

Je suppose que lorsque je choisis Type 'Branch' et saisis un Name, c'est la branche de mon référentiel git sur GitHub/BitBucket qui est utilisée et que Docker Tag Name entraîne l'attribution du tag à l'image créée.

J'ai joué un peu avec et j'ai trouvé des choses qui ne sont pas claires pour moi - mais j'espère que vous pourrez m'expliquer.

  • l'ajout de plusieurs entrées entraîne l'attribution d'une seule balise. J'ai utilisé "Branche", "maître" et "/" et "dernier" comme Docker Tag Name dans le premier, 'v1' dans le second. Mais seul "v1" est utilisé comme balise.

  • L'utilisation de Type 'Tag' n'a pas donné de résultat différent. Je pensais que cela ne pourrait construire une image que si un commit git est tagué avec cette valeur. À quoi sert ce type?

Je cherchais la possibilité d'affecter la balise 'latest' à la dernière version et d'utiliser un schéma comme v1, v2, v3 et ainsi de suite pour les anciennes versions, comme je pouvais le faire lors de la création d'images localement.

35
MirkoMachine

Le balisage automatique d'images Docker est disponible sur Dockerhub! J'ai joué avec ça récemment et j'ai voulu partager mes découvertes en sautant sur ce fil (j'espère que ça va!)

J'ai donc un dépôt GitHub public avec un lien de construction automatisé sur dockerhub. Je veux le :latest tag à mettre à jour à chaque fois que je pousse vers la branche master. Je veux aussi :X, :X.Y et :X.Y.Z tags à créer pour chaque version que je crée sur GitHub (taguée comme vX.Y.Z sur GitHub).

Voici à quoi ressemble la configuration des paramètres de construction pour prendre en charge ceci: dockerhub build settings

Et dans le texte, il est plus facile de copier-coller:

| Type   | Name                              | Dockerfile Location | Docker Tag Name |
|--------|-----------------------------------|---------------------|-----------------|
| Branch | master                            | /                   | latest          |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}            |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}.{\2}       |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}.{\2}.{\3}  |

J'espère que cela t'aides!

36
Anton Drukh

C'est TRÈS FACILE en 2 ÉTAPES ...

ÉTAPE 1 - Cliquez sur le lien Construction automatisée

Automated build link

ÉTAPE 2 - Ajoutez plusieurs versions automatisées au même dépôt Docker (la plupart des gens ne savent pas que vous pouvez ajouter plusieurs versions automatisées) en cliquant sur le BOUTON BLEU PLUS (voir l'image ci-dessous)

Adding multiple automated builds

Dans l'exemple de l'image ci-dessus, je suis ...

  • ajouter une "dernière" balise docker qui correspond à la branche principale de github
  • ajout d'une balise docker "0.1.0" qui correspond à la balise github 0.1.0

Notez que la balise github doit exister!

MAINTENANT, lorsque je clique sur Enregistrer et déclencher, les builds build 2 démarrent, un pour la dernière balise et un pour la balise 0.1.0.

C'est simple quand vous savez comment :) Je pensais fournir une réponse complète ici car cela est mal documenté.

16
danday74

Usman a répondu avec une solution de contournement pour une question similaire dans https://stackoverflow.com/a/26107743/155689

Fondamentalement

  • aller dans les paramètres de construction automatisés,
  • ajouter un autre type de build à l'aide d'une balise
  • entrez un nom de balise git
  • et donnez-lui un nom de version
  • cliquez sur enregistrer et déclencher la construction

Comme vous pouvez le voir, je l'ai fait pour cette construction automatisée

4
flurdy

Il y a quelques mois, j'ai contacté le support Docker pour fournir explicitement des numéros de version et cela n'était pas pris en charge à l'époque.

Ce que vous spécifiez sur le hub docker est la balise/branche git qui sera surveillée. Le résultat de la construction sera toujours étiqueté latest.

4
Abel Muiño

Ma solution pour attribuer la balise "latest" à la dernière version consiste à utiliser la configuration suivante dans la version automatisée:

| Type   | Name   | Dockerfile Location | Tag Name |
| Branch | master |        /            | latest   |

Chaque fois qu'il y a un commit dans master, une nouvelle build avec la balise "latest" est créée.

Il y a eu un problème il y a quelques jours, où la construction automatisée utilisait le nom de la branche comme nom de balise, vous pourriez donc trouver quelques constructions avec le "maître". Ce problème est résolu: https://forums.docker.com/t/automated-builds-not-tagging-latest/68

3
Joaquin Sargiotto

Pour le nouveau Docker Hub Automated Build, l'excellente réponse d'Anton Drukh peut être obtenue avec une seule règle

Type de source: Tag

Source: /^v([0-9.])\.([0-9.])\.([0-9.])$/

Docker Tag: release-{\1},release-{\1}.{\2},release-{\1}.{\2}.{\3},latest

Notez que cela est légèrement différent de la réponse d'Anton car je construis le dernier à partir de la balise plutôt que de la validation principale.

3
Michael West

Je n'ai pas encore utilisé cette fonctionnalité, donc je peux me tromper, mais aujourd'hui, quand je suis allé au build settings tab et sélectionné tag pour le deuxième type de build, il avait automatiquement l'expression régulière /.*/ qui sélectionnera toutes les balises.

Je le mettrai à jour dès que je le testerai.

2
hernandes