2014-12-09 34 views
18

Próbuję oznaczyć repozytorium git z ruby ​​gem w kompilacji Bamboo. Myślałem, że robi coś takiego w rubin by wykonać zadanieJak oznaczyć repozytorium git w bambusowej kompilacji

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

Ale problemem jest to, że repo nie mają pochodzenie. w jakiś sposób Bamboo pozbywa się origin Dowolnej wskazówki?

Odpowiedz

39

Tak, jeśli przejdziesz do obszaru roboczego pracy, okaże się, że Bamboo nie wykonuje prostego klona git "pod maską", a pilot jest ustawiony na wewnętrzną ścieżkę pliku.

Na szczęście Bamboo przechowuje oryginalny adres URL repozytorium jako $ {bamboo.repository.git.repositoryUrl}, więc wszystko, co musisz zrobić, to ustawić zdalne wskazywanie powrotem do oryginału i popchnąć tam. Właśnie tego używałem zarówno z podstawowymi repozytoriami Git i Stash, tworząc znacznik na podstawie numeru kompilacji.

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} 

Ostatnia linia jest po prostu przyczyną niepowodzenia zadania, jeśli nowo utworzony znacznik nie może zostać odczytany z powrotem.

EDYCJA: Nie ulegaj pokusie użycia zmiennej $ {bamboo.repository.git.repositoryUrl}, ponieważ nie musi to oznaczać repo sprawdzonego w twoim zadaniu.

Należy również pamiętać, że jeśli pobierasz z wielu źródeł, $ {bamboo.planRepository.repositoryUrl} wskazuje na pierwsze repozytorium w zadaniu "Kodu źródłowego". Bardziej szczegółowe adresy URL są przywoływane przez:

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

i tak dalej.

+3

Wygląda na to, że Bamboo nie podaje hasła do żadnego z repozytoriów. Jak sobie z tym radzisz? – z4ce

+3

Musisz ustawić klucz publiczny dla użytkownika bambusa działa tak jak na serwerze kompilacji. –

+0

Używam repozytorium github z bambusem onDemand. Jak skonfigurować ten klucz publiczny? Co więcej, za każdym razem, gdy próbuję się zbuntować, jest informacja, że ​​zdalna gałąź już istnieje. –

0

Wydaje się, że po realizacji transakcji przez agenta bambusa, zdalne repozytorium URL pochodzenia jest ustawiony jako file://nothing

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

Dlatego możemy albo zaktualizować url użyciu git remote set-url lub w moim przypadku po prostu stworzył nowy alias, więc nie narusza istniejącego zachowania. Musi istnieć dobry powód, dla którego jest ustawiony w ten sposób.

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

Zauważyłem również, że za pomocą ${bamboo.planRepository.<position>.repositoryUrl} nie działa dla mnie, ponieważ to zostało zdefiniowane w moim planie jako https. Przejście na ssh zadziałało.

+0

jeśli zrobisz git remote -v jakie jest twoje wyjście –