Verwenden von JENCINS BUILD NUMBER in der RPM-Spezifikationsdatei

8
%Vor%

Nicht sicher, ob jemand dies schon einmal versucht hat oder ob es einfach ist, aber:

Eine Spezifikationsdatei hat zwei eindeutige Indikatoren für ihre Version:

  • Version (die die Softwareversion angibt)
  • Release (gibt die Nummer des Pakets an - wenn Sie ein RPM erstellen, ist es defekt und baut ein anderes auf, Sie haben die 'Release' Nummer.

Ich frage mich, ob jemand versucht hat, oder weiß, wie ich den Jenkins $ BUILD_NUMBER Variable dynamisch Release Zahl, wodurch die Release Zahl zu erhöhen verwenden könnte jedes Mal zu ändern, eine neue erfolgreiche Build abgeschlossen ... ?

    
Sagar 22.04.2013, 20:08
quelle

3 Antworten

7

Es ist lange her ... und glücklicherweise habe ich keine rpm-basierten Systeme, deshalb kann ich das nicht testen.

Sie können Parameter an rpmbuild in der Befehlszeile übergeben rpmbuild --define="version = ${env.BUILD_NUMBER}

Es wäre hilfreich, Snippets der Spezifikation und des Skripts zu posten, das Sie zum Erstellen der RPM verwenden. Sie möchten nicht, dass Ihr Build-Skript die Spezifikationsdatei bearbeitet, von der ich annehme, dass sie sich aus einer Quellcodeverwaltung herauszieht.

    
thekbb 22.04.2013, 21:36
quelle
3

Ich habe die Jenkins-Build-Nummer als "Release" und Verpackung über fpm verwendet.

Couple fpm mit einigen von Jenkins bereitgestellten Globals

%Vor%

Es gibt einige nebulöse Variablen im folgenden Beispielbefehl, aber $BUILD_NUMBER ist das, was ich für die Version hier verwende (fpm nennt sie stattdessen Iteration ) / p> %Vor%     

quickshiftin 09.12.2013 14:27
quelle
2

In meinem Jenkins-Setup habe ich beschlossen, die Build-Nummer in Bezug auf die RPM-Versionsnummerierung komplett zu umgehen. Stattdessen verwende ich ein selbst gemachtes Skript, das die verschiedenen Releases erzeugt und verfolgt, die erzeugt werden.

In meiner Spezifikationsdatei:

%Vor%

Und im Jenkins-Build-Skript:

%Vor%

rpm-release-number.py ist ein einfaches Skript, das eine dateibasierte Datenbank verwaltet (im JSON-Format für einfache Wartung). Es kann damit fertig werden, zur gleichen Zeit ausgeführt zu werden, also keine Sorgen, aber es wird nicht funktionieren, wenn Sie Build-Slaves haben (soweit ich das beurteilen kann, benutze ich sie nicht, kann also nicht testen). Sie können den Quellcode und die Dokumentation hier finden.

Das Ergebnis ist, dass ich das folgende Paket Versionierungsschema bekomme:

%Vor%

PS: Beachten Sie, dass das Jenkins-Build-Skript nur ein Beispiel ist. Die Logik hinter dem Erstellen der rpmbuild-Verzeichnisstruktur und dem Abrufen der .src.rpm- und .spec-Dateinamen ist etwas komplizierter.

    
teotwaki 04.02.2014 13:28
quelle

Tags und Links