Gradle-Skript zur autoversion und beinhalten die commit-hash in Android
Muss ich schreiben, ein gradle-Skript auf auto-version mein Programm auf jedem commit. Ich brauche auch den commit-hash, der als eine Referenz in der Bewerbung für die Tester.
Ich bin verwirrt, wie die automatische Versionierung in der Regel arbeiten. Kann jemand erklären, die autoversioning Prozess?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stieß ich auf ein ähnliches problem, aber nicht wollen, ändern Sie die versionName gehören die git-hash. Wir wollten verhindern, dass so etwas wie 1.2.2, aber immer noch die Möglichkeit der Anzeige der git-hash in der UI.
Ich veränderte den code aus die andere Antwort hier zu verwenden, die buildConfigField Aufgabe zu generieren BuildConfig.GitHash Wert, auf die verwiesen werden kann, die im Java-code.
Fügen Sie diese über die
android
Abschnitt des Moduls erstellen.gradle-Datei:Dann fügen Sie die folgende Zeile, um die
defaultConfig
Abschnitt derandroid
Abschnitt bauen.gradle, d.h. unterhalbversionName
:Dieser erzeugt die folgende Zeile in der auto-generiert BuildConfig.java Datei:
Nun können Sie den git-hash in Java-code mit
BuildConfig.GitHash
.Eine ideale Lösung sein könnte, greifen die version aus den git-status des Projektes. Diese Art der Versionierung nicht auf Sie verlassen erinnern zu erhöhen, eine variable, oder ändern Sie beliebigen text in das gradle-oder config-Dateien. Ein weiterer Vorteil ist die Rückverfolgbarkeit der-version-name und code, um eine bestimmte code-status.
Finden Sie ein anschauliches Beispiel in http://ryanharter.com/blog/2013/07/30/automatic-versioning-with-git-and-gradle/
Die Idee ist immer die git-info mit der getVersionName-Funktion, und verwenden Sie die Funktion in der gradle-Skript:
Natürlich, Sie brauchen, um Kommandozeilen-git verfügbar (wie der Befehl
git describe --tags
ausgeführt werden, die zum generieren der Informationen).Einem anderen Ansatz (basiert auch daran, die versions-info aus dem git), könnte sein, Externalisierung, die Logik in einem gradle-plugin wie:
- https://github.com/moallemi/gradle-advanced-build-version
- https://github.com/infusionsoft/gradle-build-version-plugin
- https://github.com/nemerosa/versioning
Die Verwendung wird davon abhängen, welche Art von Versionierung Richtlinie, die Sie anwenden möchten.
Erstellte ich ein Gradle-plugin, um dies für Sie tun. Das Projekt und vollständige Anweisungen sind auf https://github.com/lessthanoptimal/gversion-plugin
Es zu verwenden, fügen Sie den folgenden, um Ihren build.gradle-Datei
Nun müssen Sie nur ausführen, die gradle-task 'createVersionFile' um die Datei zu erstellen. Möchten Sie vielleicht zu prüfen, indem Sie die folgende Zeile zu Ihrer gradle-Projekt
project.compileJava.dependsOn(createVersionFile)
Dadurch wird es zum generieren der Datei jedes mal, Gradle baut das Projekt. Siehe die website oben für Android-Anweisungen.Hier ist, was die Datei sieht wie
Vielleicht möchten Sie auch hinzufügen die version der Datei, um Ihrer .gitignore da ist es, automatisch generierte und Sie wollen es nicht in git.
Außerdem lohnt ein Blick auf grgit - Groovy/Gradle Git, die helfen können, vereinfachen die Extraktion von Informationen, einschließlich Git commit-hashes, in einem Gradle-Skript.