2016-11-15 1 views
-1

Einfache Shell-Skript-Frage. Das Einrichten von Pipelines in BB und einer der Jobs, die ich portiere, besteht darin, eine Bower-Version über einige grunt-Befehle zu inkrementieren. Ich hatte dies in separate Jobs aufgeteilt, so dass es nicht automatisch ausgeführt werden würde, weil es das Paket stößt und zum Repo zurückgibt. Also, was ich versuche zu tun ist, wenn die Aufgaben starten, führen Sie einen Git-Log-Befehl, überprüfen Sie die letzte Commit-Nachricht und wenn es eine vordefinierte Nachricht entspricht dann nur beenden. Ansonsten weitermachen. Wie überprüfe ich die letzte git commit Nachricht und führe eine if else Check-in bash aus?Überprüfen Sie Git-Protokoll mit Shell-Skript

#! /bin/bash 

git log -1 

if git log -1 === "pre-defined message"; 
    then 
    echo "already pushed and bumped exiting" 
    exit 1 
    else 
    echo "not bumped -- continuing job" 
    ./setup-git.sh 
fi 
+0

Was ist die Frage? – codeforester

+0

Es war, wenn ich in der Lage war, die git-Log-Last-Commit-Nachricht zu lesen und run und if else-Anweisung in bash. Ich war aber mein JavaScript-Kopf muss mehr über Shell-Skripte erfahren. :) –

Antwort

0

die Lösung gefunden, die zu erfüllen scheint, was ich aus Pipelines müssen, obwohl ich die Einrichtung verschiedene Shell-Skripte müssen nicht die npm laufen installiert, wenn die Nachricht bereits empfangen:

#! /bin/bash 

MESSAGE=$(git log -1 HEAD --pretty=format:%s) 

if [[ "$MESSAGE" == "This goes into next release" ]]; then 
    echo "already pushed run grunt and exit" 
    grunt build 
    echo "nothing to see here -- move along" 
else 
    echo "not bumped -- continuing job" 
    git config --global user.email "[email protected]" 
    git config --global user.name "Blah Blah" 
    git remote set-url origin https://user:[email protected]/myawesomegitrepo.git 
    grunt releaseme 
    git config --global push.default matching 
    git commit dist/destro -m "This goes into next release" 
    git push --tags 
fi 

Credit James Nine für seine Antwort zu diesem Thema: How to capture a git commit message and run an action

1

Was ich glaube, Sie versuchen, aus bestimmten Commits zu tun ist, ignorieren einen Build oder andere Schritte verursacht .... und während dies könnte in einer manuellen Build-Umgebung, Standard Build-Tools funktionieren gehen zu sein problematisch.

Ich hatte in Jenkins damit zu kämpfen, Support-Dateien, die als Teil des Builds verwendet und geändert wurden, würden einen Build auslösen, wenn sie zurück in den Repo übertragen werden, was zu einem nie endenden Build-Zyklus führt.

Meine Lösung bestand darin, den Repo in die Quelle in einem Verzeichnis zu trennen, die unterstützenden Dateien in einem anderen, und dann einen Ausschlussbereich für Jenkins hinzuzufügen, sodass durch den Build generierte Commits nicht dazu führten, dass die nächste Umfrage irgendetwas unternahm (weil die übergebenen Dateien nichts mit dem eigentlichen Projekt zu tun haben). Ein bisschen stumpf, aber scheint zu funktionieren.

Und wenn das nicht das ist, was Sie gefragt haben, stellen Sie tatsächlich eine Frage und dann haben wir Mitwirkende einen Kontext, mit dem wir arbeiten können!

+0

Das war meine ursprüngliche Idee und wie ich in Bamboo ursprünglich damit umgehen musste. Dies sollte auf der Basis der Feature-Zweig/Release-Zweigstrategie funktionieren, solange alle Commits über PR's zusammengeführt werden. Nahm mich eine Weile, um es richtig zu machen, aber dank einer Post in meiner Lösung oben funktionierte es. Das einzige Problem, das ich jetzt habe, ist ein anderes Shell-Skript, das von innerhalb des ersten gestartet wird, wenn die else-Anweisung "true" zurückgibt. –

Verwandte Themen