2014-12-09 10 views
18

Sto provando ad etichettare il repository git di una gemma di rubino in una build di bambù. Ho pensato di fare qualcosa di simile in Ruby avrebbe fatto il lavoroCome taggare un repository git in una build di bambù

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

Ma il problema è che il pronti contro termine non ha la provenienza. in qualche modo Bamboo si sta liberando dello origin Qualsiasi indizio?

risposta

39

Sì, se si passa allo spazio di lavoro del lavoro, si scoprirà che Bamboo non esegue un semplice clone git "sotto il cofano" e che il telecomando è impostato su un percorso file interno.

Fortunatamente, Bamboo memorizza l'URL del repository originale come $ {bamboo.repository.git.repositoryUrl}, quindi tutto ciò che è necessario fare è impostare un puntatore remoto verso l'originale e passare a tale posizione. Questo è quello che ho usato con entrambi i repository Git di base e Stash, creando un tag basato sul numero di 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 riga finale è semplicemente quello di causare il compito di fallire se il tag appena creato non può essere letto di nuovo.

MODIFICA: non tentare di utilizzare la variabile $ {bamboo.repository.git.repositoryUrl}, poiché questo non punta necessariamente al repository verificato nel lavoro.

Ricorda inoltre che se stai effettuando il check-out da più fonti, $ {bamboo.planRepository.repositoryUrl} punta al primo repository nella tua attività "Verifica codice sorgente". Gli URL più specifici sono referenziati tramite:

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

e così via.

+3

Non sembra che Bamboo fornisca la password per nessuno dei repository. Come lo gestisci? – z4ce

+3

È necessario impostare la chiave pubblica per l'utente bamboo è in esecuzione come sul server di build. –

+0

Sto usando il repository github con onDemand bamboo. Come si imposta questa chiave pubblica? Inoltre, ogni volta che cerco di sapere c'è una notizia che il ramo remoto esiste già –

0

Sembra che dopo un checkout da parte dell'agente di bambù, l'URL del repository remoto per origine è impostato come file://nothing

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

Ecco perché siamo in grado di aggiornare l'URL utilizzando git remote set-url o nel mio caso ho appena creato un nuovo alias in modo da non rompere il comportamento esistente. Ci deve essere una buona ragione per cui è impostato in questo modo.

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

Ho anche notato che usando ${bamboo.planRepository.<position>.repositoryUrl} non ha funzionato per me da quando è stato definito nel mio piano come https. Passare a ssh funzionato.

+0

se fai un git remote -v che cosa è il tuo output –

Problemi correlati