Änderungen

6.552 Bytes hinzugefügt ,  13:41, 16. Aug. 2017
keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1: −
TODO: kopieren von https://mw.ffnw.de/Firmware/Releaseprozess
+
[[Kategorie:Firmware]]
 +
 
 +
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 [[Versionierung | Dokumentation zur Versionierung]]. '''Wichtig''' Hier erst weiter machen wenn ein release tag gemäß der Versionierung Seite vorhanden ist.
 +
 
 +
Vorlage für die Tag-Message:
 +
 
 +
<pre>
 +
Release firmware version VERSION.
 +
 
 +
Changes:
 +
* Short list of bullet points with changes made in this version
 +
</pre>
 +
 
 +
Befehle zum taggen:
 +
 
 +
<pre>
 +
git tag -s VERSION #tag anlegen
 +
git show VERSION #tag anzeigen
 +
git push origin --tags #tag hochladen
 +
</pre>
 +
Git message editor ändern:
 +
 
 +
<pre>
 +
git config --global core.editor "vim"
 +
</pre>
 +
 
 +
== 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 [https://github.com/tcatm/ecdsautils ecdsautils] benötigt.
 +
 
 +
Zuerst wird ein Arbeitsverzeichnis ''firmware'' erstellt und darin ein Vereichnis ''release_keys'' angelegt
 +
<pre>
 +
mkdir firmware
 +
cd firmware
 +
mkdir release_keys
 +
</pre>
 +
 
 +
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:
 +
<pre>
 +
scp srv01.ffnw.de:/var/www/dev/firmware/VERSION/stable.manifest stable.manifest
 +
</pre>
 +
 
 +
Dann holen wir uns die zum Signieren notwendigen Scripte aus dem Gluon-Repo und signieren das manifest:
 +
<pre>
 +
git clone https://github.com/freifunk-gluon/gluon.git
 +
./gluon/contrib/sign.sh ./release_keys/ecdsa-privatekey ./stable.manifest
 +
</pre>
 +
 
 +
Nach erfolgreicher Signatur, müssen wir das Manifest wieder hochladen:
 +
<pre>
 +
scp stable.manifest srv01.ffnw.de:~
 +
ssh NICKNAME@srv01.ffnw.de
 +
sudo -s
 +
mv stable.manifest /var/www/dev/firmware/VERSION/stable.manifest
 +
</pre>
 +
 
 +
== 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:
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
== Release-Announcement auf Blog veröffentlichen ==
 +
Auf dem Blog sollte ein Release-Announcement veröffentlicht werden. Dieses sollte folgende Informationen enthalten:
 +
* Einleitender Text ("Hiermit veröffentlich wir..." o.Ä.)
 +
* Version der Firmware
 +
* Versionsnummer der Gluon-Basis
 +
* Downloadlink
 +
* Kurzbeschreibung der Änderungen
 +
* Einen Link auf die Dokumentation zu unserer Firmware
 +
** https://wiki.nordwest.freifunk.net/Router/Firmware
 +
* Einen Link auf die Dokumentation zur Gluon-Firmware
 +
** https://gluon.readthedocs.org/en/v2015.1.2/
 +
* Einen Link auf die Seite der Unterstützten Geräte in der Gluon Dokumentation
 +
** https://gluon.readthedocs.org/en/v2015.1.2/
 +
 
 +
== 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:
 +
<pre>
 +
cd /var/www/dev/firmware/
 +
unlink stable
 +
ln -s VERSION stable
 +
cd stable
 +
ln -s stable.manifest manifest
 +
</pre>
 +
 
 +
== Allgemeines zu Signaturen ==
 +
=== Signaturkeys erstellen ===
 +
Dieser Prozess ist nur einmal beim Beitritt in das Dev-Team notwendig. Es wird Schreibzugriff auf das [https://git.nordwest.freifunk.net/ffnw-firmware/siteconf Siteconf Git Repository] benötigt.
 +
 
 +
Privaten Key erstellen:
 +
 
 +
<pre>
 +
% ecdsakeygen -s > ecdsa-privatekey
 +
% cat ecdsa-privatekey
 +
68b12c0eaf88bf17fbcdf560780136b9cc4be352fb8aa7148215fbd65887db7b
 +
</pre>
 +
Öffentlichen Key erstellen:
 +
 
 +
<pre>
 +
% ecdsakeygen -p < ecdsa-privatekey
 +
1f63ef7450760af9062ff697995eb536eef25a555822087fa4cfd9a82d9faa79
 +
</pre>
 +
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 [https://git.nordwest.freifunk.net/ffnw-firmware/siteconf/blob/master/site.conf 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