Erhöht die Android-Build-Nummer in der fortlaufenden Integration

8

Ich benutze Android Studio, Gradle, Git.

Bei jedem Push zum Master-Zweig möchte ich eine neue App-Version erstellen, die auf den Alpha-Kanal des Google Play Stores hochgeladen wird. Dazu muss ich den versionCode der App für jeden Build erhöhen.

Dafür habe ich scheinbar mehrere Möglichkeiten:

  1. Erhöhe die Anzahl während der Jenkins-Erstellung und schiebe die geänderte Datei zurück in den Repo.
    • Ich mag die Idee nicht, dass mein Build-Server Pushs / ​​Commits ausführt.
  2. Erhöhung der Anzahl mit einem Git Haken.
    • Ich mag die Idee noch weniger git zum Ändern von Dateien zu verwenden. Wenn ich im Urlaub bin, wer (im Rest des Teams) würde das jemals finden und wissen, was damit zu tun ist?
  3. Haben Sie eine Datei auf einem anderen Server (auf den der Build-Server direkt zugreifen kann), in dem die aktuelle Version gespeichert ist. Gradle wird darauf zugreifen, erhöhen & amp; Speichere es erneut.
    • Das scheint "fragil" zu sein, aber zumindest könnte ich eine einfache "moveVersion" Aufgabe haben, die nur auf dem Server ausgeführt wird. Und wenn es kaputt geht (wenn wir Server oder etwas bewegen), ist es ziemlich einfach zu reparieren.

Momentan mag ich 3 am besten.

Hat jemand einen bestimmten Weg, es zu tun?

    
fancy 11.05.2015, 15:20
quelle

1 Antwort

13

Ich benutze keine der oben genannten - wie Sie, ich möchte nicht das Repo für jeden Build, noch irgendwelche Dateien ändern.

Jenkins hat einen immer steigenden Wert für jeden Build, der über die Umgebungsvariable BUILD_NUMBER verfügbar gemacht wird.

In Gradle erzeuge ich den versionCode -Wert programmatisch zur Build-Zeit und benutze den BUILD_NUMBER -Wert, um sicherzustellen, dass versionCode immer höher ist als der vorherige Build.

Ein Ausschnitt aus meinem build.gradle :

%Vor%

Ich muss also nur die beiden oberen Werte aktualisieren, wenn ich einen Release-Build mache. Für alle anderen Build-Typen kann Gradle / Jenkins automatisch versionCode und dann Laden Sie Google Play hoch.

Das bedeutet auch, dass ich für jede im Play Store aufgeführte Alpha-Version oder durch die Inspektion eines APKs sofort sehen kann, von welchem ​​Jenkins-Build sie stammt, und von dort aus den Git-Commit.

    
Christopher Orr 11.05.2015, 17:10
quelle