In meiner Tätigkeit als Jenkins Admin hat mir das Thema „go get“ und Stash viel Kopfzerbrechen bereitet. Letztendlich ist „go get“ eine Art Alias für git pull, jedoch wird da einige Magic angewendet. Im Normalfall – also mit github und auch plain git Repos funktioniert das ganze wunderbar, sobald man aber Software wie Gitlab oder Stash verwendet, wird es etwas problematisch. Zum einen ist das „.git“, welches sowohl Gitlab als auch Stash an jedes Repo hängen ein Problem, zum anderen aber auch SSH über alternative Ports.
Zum Problem der „.git“ Endung: hängt einfach ein weiteres „.git“ an euren „go get“ Command. Also:
go get git.mydomain.com/foo/bar.git.git
Etwas kniffliger ist die Verwendung eines alternativen Ports und ssh. Stash macht nämlich genau das – der ssh Port ist 7999 in der Default Config. Aber auch hierfür gibt es eine Lösung. Dazu müsst ihr die Datei „.gitconfig“ in eurem Home Folder editieren bzw. anlegen. Die Datei muss dann so aussehen:
[url "ssh://git@stash.yourdomain.com:7999/"] insteadOf = https://stash.yourdomain.de/
Sobald ihr nun einen Checkout auf
https://stash.yourdomain.de/foo/bar.git
macht, biegt Git diesen Request auf
ssh://git@stash.yourdomain.com:7999/foo/bar.git
um. Somit könnt ihr auf andere Ports gehen, komplett auf andere Domains umschreiben usw.