Gewusst wie: abrufen der git branch-name, wurde von Jenkins, wenn durch inverse Zweig Auswahl-Strategie?
Haben wir einen Jenkins-job, der baut jeder Zweig, außer master, wenn es neue verpflichtet. Dieses Verhalten kann konfiguriert werden über git-plugin 's" Auswahl-Strategie:inverse', so dass es hört jede Niederlassung mit Ausnahme einer angegebenen Filiale.
Diese Funktionen sehr schön. Aber das problem ist, dass GIT_BRANCH Umgebungsvariable bezieht sich immer auf die ausgeschlossen Zweig('origin/master' in unserem Fall). Wie für die Abfrage der tatsächlichen Niederlassung, wurde von Jenkins?
Momentan benutze ich ein workaround, dass ich die grep-es generiert aus changelog.xml. Aber es passiert manchmal, dass changelog.xml ist leer, wenn Jenkins wechselt zwischen den verschiedenen Zweigen, und ich kann nicht finden diese info. Was ist die richtige Art von abrufen/Abfragen von Jenkins der Zweig, der tatsächlich gebaut wurde?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da git nie checkt einen branch nur ein commit-direkt müssen Sie Folgendes tun:
Um das sha des ausgecheckten commit:
Zu bekommen, die die äste, die sich verpflichten, unter:
Den out-put des zweiten Befehls könnte wie folgt Aussehen
Habe ich erfolgreich benutzt diese syntax:
git rev-parse HEAD | git branch -a --contains | grep remotes | sed -e 's/.*remotes.origin.//'
für OS XHEAD -> origin/master\nmaster
(die\n
ist wirklich einen Zeilenumbruch in das Ergebnis), was offensichtlich falsch ist.git show-ref | grep $(git rev-parse HEAD) | grep remotes | grep -v HEAD | sed -e 's/.*remotes.origin.//'
Und möglicherweise Rohr diese zuhead -n1
wenn Sie wollen, dass es beliebig wählen Sie den ersten Zweig Namen, wenn es mehrere Filialen wies auf diese verpflichten.Sieht aus wie ein Jenkins bug? Sie greifen in Ihrem build-Skript den Namen des ausgecheckten Zweig mit dabei:
Eigentlich Jenkins hat die Arbeitskopie in freistehenden KOPF, weshalb
git branch
gibt "keine Filiale". Sehen diese sehr detaillierte Antwort für das Graben in der Versöhnung mit zwischen einer abgetrennten KOPF und einem Zweig.Ich kann nicht glauben, wie hart dieser ist. Ich mache das für Jenkins als gut. Ich piggypacked off Piotr Kuczynski Lösung:
Weil manchmal, wie Matt Kantor wies darauf hin, Piotr Lösung gibt eine Menge von junk-zurück. Aber das Letzte Wort in diesem junk scheint immer richtig sein. Beachten Sie, dass diese Lösung nur funktioniert, wenn der ref die Sie verwenden entspricht genau eine Verzweigung existiert, auf der Fernbedienung (also den lokalen Standorten wird nicht funktionieren).