J'essaie de définir une étiquette avec le numéro de version actuel déterminé par Gitversion sur le Git Engagez à la fin d'une construction réussie. On se sent comme si je ne peux pas être le premier à le faire, mais je me débats pour trouver quelque chose qui fonctionne.
Azure Devops Pipeline a une fonctionnalité pour obtenir des sources sur "Sources d'étiquettes" sur le succès. J'ai défini cela et défini sur une variable définie par l'une des tâches de l'agent que j'ai (Gitversion)
Je peux voir dans les journaux de débogage que cette variable se définit définie par le composant de gitverversion que j'ai ajouté au pipeline.
2019-12-06T20:54:20.2390794Z ##[debug]Processed: ##vso[task.setvariable variable=GitVersion.MajorMinorPatch;]2.98.0
Toutefois, si je le quitte comme cela, je reçois une balise créée comme "V $ (gitversion.majorminorpatch)", ce qui signifie qu'à l'époque où la balise est créée que cette variable n'existe plus.
Le format TAG Aide ToolTip dit
"Le format des balises pourrait être une combinaison de variables définies par l'utilisateur ou prédéfinies ayant une portée de" tous ". Par exemple: '$ (Build.definitionName) $ (build.definitionversion) $ (Build.buildid) $ (Build.buildNumber) $ (my.variable) '"
Je suppose donc que le problème est que cette variable créée pendant le pipeline n'a pas de portée de tous.
J'ai ensuite essayé d'ajouter une variable de pipeline au pipeline de "gitversion.majorminorpatch" avec l'espoir que c'était à la bonne portée et espérant que lorsque la commande "Task.setVariable" est exécutée, cela définira la valeur variable de cette version supérieure variable scopée.
Cependant, dans ce cas, je viens de recevoir un tag "V" créé.
Donc, je suis un peu coincé. D'une manière ou d'une autre, je dois pouvoir créer ou définir de manière dynamique une variable de portée avec la valeur que je veux baliser ici.
Je serais vraiment reconnaissant de toutes les idées à ce sujet.
Si vous faites un pipeline YAML, vous pouvez ajouter les étapes suivantes.
- checkout: self
persistCredentials: true
## Rest of pipeline ##
- script: |
git tag $(GitVersion.NugetVersionV2)
git Push Origin $(GitVersion.NugetVersionV2)
workingDirectory: $(Build.SourcesDirectory)
Le persistCredentials
permet au jeton d'être automatiquement transmis à d'autres commandes GIT. Notez l'affectation de workingDirectory
, sinon j'ai eu une erreur que l'emplacement n'était pas un référentiel Git.
Pour une tag annotée plutôt que sur une étiquette légère, la syntaxe ressemblerait à ceci ...
- script: |
git tag -a <tagname> -m <message>
Pour obtenir un utilisateur/date contre celui-ci, vous devez Définir le nom d'utilisateur/email aussi bien par ex.
- script: |
git config --global user.name "BuildService"
git config --global user.email "[email protected]"
git tag -a <tagname> -m <message>
Pour que cela fonctionne, le Serveur de construction de la collection de projets compte (pas le Comptes de service de projet de projet Groupe ) doit être attribué la permission de contribution pour les référentiels
Élargir sur l'excellente réponse de Paul Hatcher, j'aimerais ajouter que pour moi, le compte s'appelait Project Collection Build Service
Dans Azure Devops Server 2019. Cela semble également être conforme à la page actuelle Microsoft Documentation .
Désolé pour la réponse, ma réputation ne suffit pas encore à commenter.