2017-10-18 12 views
0

Dans VSTS, j'essaie de créer une image Docker. Dans mon étape "Construire une image", lors de l'affichage des journaux de sortie, je vois un texte en jaune disant "Impossible de récupérer les tags source car Build.SourceVersion n'est pas défini". C'est peut-être parce que j'ai coché la case "Inclure les tags source". J'ai ajouté une étape de bash immédiatement après et j'ai essayé de echo $(Build.SourceVersion) et echo $BUILD_SOURCEVERSION qui apparaissent vides dans le journal de sortie.VSTS - Impossible de récupérer les tags source car Build.SourceVersion n'est pas défini

Basé sur https://docs.microsoft.com/en-us/vsts/build-release/concepts/definitions/build/variables?tabs=batch, je devrais être capable d'utiliser cette variable prédéfinie très bien.

enter image description here

Il est intéressant de noter que je suis connecté à un dans la section sources « repo à distance », et non « Github » (Nous utilisons Github Enterprise)

Suis-je manque quelque chose à propos de cette "variable prédéfinie"?

Répondre

0

La solution est que vous pouvez obtenir la balise par commande Git (ajouter des tâches de ligne de commande pour exécuter chauve-souris, ou une tâche PowerShell), puis définissez/créer une variable (par exemple variable tag) par Logging Commands (par exemple echo "##vso[task.setvariable variable=tag;]tagvalue"), Après cela, vous pouvez spécifier cette balise dans Balises d'image supplémentaires zone de saisie ($(tag)) de la tâche Docker.

+0

J'aime cette stratégie, mais y a-t-il un moyen de faire quelque chose de similaire à l'exception de bash? Par exemple, existe-t-il un moyen pour moi de définir une variable dans 'bash', puis de l'utiliser dans un autre environnement en aval? –

+0

@sg Quel environnement en aval? Voulez-vous dire environnement dans la libération? Non, juste peut utiliser dans l'environnement actuel. Vous pouvez ajouter la même tâche aux autres environnements pour définir la variable. –

+0

Une autre étape de construction. Si j'utilise cette variable dans une étape de construction de bash et que j'ajoute une autre étape de bash immédiatement après, je ne peux plus utiliser la variable. J'ai essayé de l'exporter dans la première étape de bash et il n'a pas persisté dans la deuxième étape de bash. –