web-dev-qa-db-fra.com

Comment étiqueter un dépôt git dans une construction en bambou

J'essaie de marquer le dépôt git d'un Ruby gem dans une construction Bamboo. Je pensais que faire quelque chose comme ça dans Ruby ferait l'affaire)

`git tag v#{current_version}`
`git Push --tags`

Mais le problème est que le repo n'a pas l'origine. Bamboo se débarrasse en quelque sorte du Origin Un indice?

22
Allen Bargi

Oui, si vous accédez à l'espace de travail, vous constaterez que Bamboo ne fait pas un clone git simple "sous le capot", et la télécommande est définie sur un chemin de fichier interne.

Heureusement, Bamboo stocke l'URL du référentiel d'origine sous $ {bamboo.repository.git.repositoryUrl}, donc tout ce que vous avez à faire est de définir une télécommande pointant vers l'original et de pousser vers là. C'est ce que j'ai utilisé avec les référentiels Git de base et Stash, créant une balise basée sur le numéro de build.

git tag -f -a ${bamboo.buildNumber} -m "${bamboo.planName} build number ${bamboo.buildNumber} passed automated acceptance testing." ${bamboo.planRepository.revision}
git remote add central ${bamboo.planRepository.repositoryUrl}
git Push central ${bamboo.buildNumber}
git ls-remote --exit-code --tags central ${bamboo.buildNumber} 

La dernière ligne consiste simplement à provoquer l'échec de la tâche si la balise nouvellement créée ne peut pas être relue.

EDIT: Ne soyez pas tenté d'utiliser la variable $ {bamboo.repository.git.repositoryUrl}, car cela ne pointera pas nécessairement vers le référentiel extrait dans votre travail.

Gardez également à l'esprit que si vous extrayez à partir de plusieurs sources, $ {bamboo.planRepository.repositoryUrl} pointe vers le premier référentiel de votre tâche "Source Code Checkout". Les URL plus spécifiques sont référencées via:

${bamboo.planRepository.1.repositoryUrl}
${bamboo.planRepository.2.repositoryUrl}
...

etc.

49
RCross

Il semble qu'après une vérification par l'agent bamboo, l'URL du référentiel distant pour Origin soit définie comme file://nothing

[remote "Origin"]
url = file://nothing
fetch = +refs/heads/*:refs/remotes/Origin/*

C'est pourquoi nous pouvons soit mettre à jour l'url en utilisant git remote set-url ou dans mon cas, je viens de créer un nouvel alias pour ne pas casser le comportement existant. Il doit y avoir une bonne raison pour laquelle cela est réglé de cette façon.

[remote "build-Origin"]
url = <remote url>
fetch = +refs/heads/*:refs/remotes/build-Origin/*

J'ai également remarqué que l'utilisation de ${bamboo.planRepository.<position>.repositoryUrl} ne fonctionnait pas pour moi car il était défini dans mon plan comme https. Le passage à ssh a fonctionné.

1
Paul

Je sais que c'est un vieux fil, cependant, j'ai pensé à ajouter cette information.

À partir de la version 6.7 de Bamboo, il possède la fonctionnalité de balisage du référentiel Git Repository Tag .

Vous pouvez ajouter une tâche de balisage de référentiel au travail et la variable Bamboo comme nom de balise. Vous devez avoir Bamboo-Bitbucket intégré via le lien de l'application.

0
Jijo John