Firmware/Releaseprozess

Aus Freifunk Nordwest Wiki
Zur Navigation springen Zur Suche springen


Auf dieser Wikiseite werden die notwendigen Schritte zum Release einer neuen Firmware dokumentiert.

Release taggen

Jedes Release wird mit einem PGP-signierten Tag (-s) versehen. Dabei enthält die Tag-Message jeweils eine kurze Zusammenfassung der Änderungen. Beachte bei der Erstellung des Tags bitte unsere Dokumentation zur Versionierung. Wichtig Hier erst weiter machen wenn ein release tag gemäß der Versionierung Seite vorhanden ist.

Vorlage für die Tag-Message:

Release firmware version VERSION.

Changes:
 * Short list of bullet points with changes made in this version

Befehle zum taggen:

git tag -s VERSION #tag anlegen
git show VERSION #tag anzeigen
git push origin --tags #tag hochladen

Git message editor ändern:

git config --global core.editor "vim"

Firmware kompilieren

Siehe Firmware/Kompilieren.

Wichtig Firmwares + Manifest auf den Server hochladen und auch die modules für die opkg packages!

Firmware signieren

Wir haben uns dafür entschieden das >50% der erlaubten Signaturen signen müssen, bevor der autoupdater das upgrade annehmen darf.

Siehe dazu auch die Diskussion auf der Dev-Liste "good_signature level" vom 15.05.2015 23:12.

Hinweis zur Erstsignatur

Die erste Signatur in einer Manifest Datei stammt immer von der Person, die die Firmware kompiliert hat und wird von dieser noch vor dem Upload der Firmware hinzugefügt. Nachfolgende Signateure sind angehalten diese Signatur zu validieren.

Siehe dazu auch die Diskussion auf der Dev-Liste "0.5.6.2 die zweite" vom 17.06.2015.

Signatur durchführen

Vor einem Release wird die Firmware signiert, damit das Autoupdate prüfen kann, ob es sich um eine valide Firmware der Freifunkentwickler handelt. Es werden gültige Signaturen von mindestens X Entwicklern benötigt. Im folgenden wird der Signaturprozess beschrieben. Es wird ein Linux-System mit installierten ecdsautils benötigt.

Zuerst wird ein Arbeitsverzeichnis firmware erstellt und darin ein Vereichnis release_keys angelegt

mkdir firmware
cd firmware
mkdir release_keys

Im Verzeichnis release_keys legen wir unser Zertifikat und unseren Privaten Signatur-Key ab (ecdsa-privatekey und ecdsa-publickey). Anschließend legen wir die das Manifest stable.manifest in unseren Arbeitsordner firmware.

Dann laden wir das Manifest herunter, welches wir signieren möchten:

scp srv01.ffnw.de:/var/www/dev/firmware/VERSION/stable.manifest stable.manifest

Dann holen wir uns die zum Signieren notwendigen Scripte aus dem Gluon-Repo und signieren das manifest:

git clone https://github.com/freifunk-gluon/gluon.git
./gluon/contrib/sign.sh ./release_keys/ecdsa-privatekey ./stable.manifest

Nach erfolgreicher Signatur, müssen wir das Manifest wieder hochladen:

scp stable.manifest srv01.ffnw.de:~
ssh NICKNAME@srv01.ffnw.de
sudo -s
mv stable.manifest /var/www/dev/firmware/VERSION/stable.manifest

Sign-Request auf Dev-Mailingliste veröffentlichen

Auf der Dev-Mailingliste sollte eine Aufforderung an die Entwickler zur Signierung der Firmware veröffentlicht werden. Dieser sollte enthalten:

* Version der Firmware
* Versionsnummer der Gluon-Basis
* Einen Link auf den Download der Firmware
* Kurzbeschreibung der Änderungen
* Eine explizite Bitte die Änderungen zu prüfen und die Signatur durchzuführen 
* Einen Link auf die Dokumentation zur Durchführung der Signatur

Kopiervorlage:

Hi,

Ich habe heute eine neue Firmware gebaut. Basisdaten:
 * Firmware-Version:
 * Gluon-Version: 
 * Download:

Folgende Änderungen gab es:
 * HIER PUNKTE
 * HIER PUNKTE

Die Änderungen an der Siteconf können im Siteconf-Repo mittels folgendem Befehl eingesehen werden:
git diff vVERSIONALT vVERSIONNEU

Die Änderungen an unseren eigenen Paketen können im Packages-Repository mittels folgendem Befehl eingesehen werden:
git diff vVERSIONALT vVERSIONNEU

Ich bitte euch die Änderungen zu prüfen und die Firmware im Anschluss zu signieren. Die Dokumentation zum Signaturprozess findet ihr im Wiki unter:
https://wiki.nordwest.freifunk.net/Entwicklung/Firmware_releaseprozess#Firmware_signieren

Viele Grüße

Release-Announcement auf Blog veröffentlichen

Auf dem Blog sollte ein Release-Announcement veröffentlicht werden. Dieses sollte folgende Informationen enthalten:

Symlink umbiegen

Sind genügen Signaturen vorhanden, muss der Symlink, der auf die aktuelle Firmware aus dem Stable-Channel zeigt auf die neue Version umgebogen werden:

cd /var/www/dev/firmware/
unlink stable
ln -s VERSION stable
cd stable
ln -s stable.manifest manifest

Allgemeines zu Signaturen

Signaturkeys erstellen

Dieser Prozess ist nur einmal beim Beitritt in das Dev-Team notwendig. Es wird Schreibzugriff auf das Siteconf Git Repository benötigt.

Privaten Key erstellen:

% ecdsakeygen -s > ecdsa-privatekey
% cat ecdsa-privatekey
68b12c0eaf88bf17fbcdf560780136b9cc4be352fb8aa7148215fbd65887db7b

Öffentlichen Key erstellen:

% ecdsakeygen -p < ecdsa-privatekey
1f63ef7450760af9062ff697995eb536eef25a555822087fa4cfd9a82d9faa79

Beide Keys speichern wir uns sicher ab, da diese Keys in Zukunft bei jedem Signaturprozess benötigt werden. Den öffentlichen Key tragen wir in der site.conf in den Abschnitt Autoupdater->Pubkeys ein.

Signatur manuell prüfen

Ob eine bestimmte Signatur in der Manifest Datei gültig ist, kann wie folgt geprüft werden:

* Signaturen aus manifest Datei entfernen (Die Signaturen am Ende der Datei inklusive der "---" müssen entfernt werden)
* ecdsaverify -s ZuPrüfendeSignatur -p PassenderPublicKey stable.manifest
* echo $?

Ist das Ergebnis 0 ist die Signatur korrekt, ist das Ergebnis 1 ist die Signatur falsch. Siehe https://github.com/tcatm/ecdsautils