2017-09-06 2 views
0

J'utilise Drone CI (0.7) dans un système auto-hébergé. C'est connecté à GitLab et à mon registre privé et ça fonctionne très bien!Drone CI obtenir et utiliser des métadonnées de construction

Cependant, je voudrais en faire plus avec le fichier .drone.yml. Surtout lors de la publication d'images dans le registre.

Les documents montrent comment faire substitution, mais n'explique pas comment ces variables sont définies. Voici un exemple des documents:

pipeline: 
    docker: 
    image: plugins/docker 
+ tags: ${DRONE_TAG} 

C'est exactement ce que je voudrais faire. Créez un tag git sur le repo (sur la branche de publication) et faites en sorte que ce tag devienne le tag de mon image Docker.

J'ai essayé git tag -a v1.0 -m "Initial release" puis git push origin v1.0. La construction du CI Drone démarre car j'ai défini Tag Hooks pour le référentiel, mais lorsque la génération est terminée et publie l'image dans le registre, la balise est définie sur latest. Cela se produit également lorsque vous appuyez sur un changement de code normal.

Est-ce que quelque chose doit être fait avec la CLI, ou est-ce qu'il manque quelque chose dans mon fichier .drone.yml (posté ci-dessous)? Il ressemble comme une variable d'environnement que je devrais définir, mais cela semble étrange d'avoir à définir (je suppose) juste avant de valider le code pour commencer une construction ...

Toute aide est appréciée !

pipeline: 
    build: 
    image: node:latest 
    commands: 
     - npm install 
     - npm test 
    docker: 
    image: plugins/docker 
    repo: private.registry.com/tester 
    registry: private.registry.com 
    secrets: [ docker_username, docker_password ] 
    tags: ${DRONE_TAG} 
    when: 
     branch: release 

Répondre

0

En fait, votre étape docker est déclenchée que lorsque vous appuyez sur une nouvelle commettras à la branche release, vous devez utiliser l'événement de balise.

Yo devrait avoir une configuration similaire

tags: 
    - latest 
    - ${DRONE_TAG##v} 
when: 
    event: tag 

Note $ {DRONE_TAG ## v} dépouillera le préfixe v, puisque vous nommez votre balise v1.0 drone analysera en ce

tags: 
    - latest 
    - 1.0 
when: 
    event: tag 
+0

Nailed il! C'était le truc dont j'avais besoin. Je vous remercie! – BurtonR

+0

Cool! Mais quelqu'un peut-il expliquer pourquoi '## v' peut supprimer le préfixe? –

+0

@SiruiZhuang voir docs ici http://docs.drone.io/substitution/, en fait il peut être appliqué pour toutes les variables d'env et cela dépendra de votre cas d'utilisation particulier – jhernandez