Server Installation/trac: Unterschied zwischen den Versionen
Aus Opennet
Leo (Diskussion | Beiträge) (→Betrieb: weitere Erklärung für "on_firmware.ar71xx-clean") |
Leo (Diskussion | Beiträge) (Andere Formatierung, sodass Inhaltsverzeichnis angezeigt wird) |
||
Zeile 1: | Zeile 1: | ||
Software zum Betrieb von [[Opennet DEV]] trac Umgebung (Hilfsmittel für Entwickler). | Software zum Betrieb von [[Opennet DEV]] trac Umgebung (Hilfsmittel für Entwickler). | ||
− | + | == Installation == | |
* Installation trac (incl. subversion) | * Installation trac (incl. subversion) | ||
Zeile 10: | Zeile 10: | ||
* Vorbereitung Verzeichnisse: ''mkdir /var/www/trac | * Vorbereitung Verzeichnisse: ''mkdir /var/www/trac | ||
− | + | == Konfiguration == | |
* Anlegen einer neuen Projektumgebung: | * Anlegen einer neuen Projektumgebung: | ||
Zeile 151: | Zeile 151: | ||
update-rc.d trac-bitten-slave defaults | update-rc.d trac-bitten-slave defaults | ||
− | + | == Betrieb == | |
+ | === Allgemenes === | ||
* Nutzer anlegen: Anmeldung erfolgt über [[Opennet CA]] Zertifikate der Client Sub-CA. Rechtevergabe per ''trac-admin''. | * Nutzer anlegen: Anmeldung erfolgt über [[Opennet CA]] Zertifikate der Client Sub-CA. Rechtevergabe per ''trac-admin''. | ||
Zeile 208: | Zeile 209: | ||
</pre> | </pre> | ||
− | + | === Build von vorn beginnen === | |
Es kann bei größeren Commits vorkommen, dass das Bauen der Firmware nach einem "git pull" Fehler hervorbringt. Typischerweise passiert das, wenn eines der Git Submodule aktualisiert wurde (z.B. OpenWRT). An dieser Stelle muss ein komplett neuer Build angestoßen werden. Mit trac-bitten muss folgendes durchgeführt werden: | Es kann bei größeren Commits vorkommen, dass das Bauen der Firmware nach einem "git pull" Fehler hervorbringt. Typischerweise passiert das, wenn eines der Git Submodule aktualisiert wurde (z.B. OpenWRT). An dieser Stelle muss ein komplett neuer Build angestoßen werden. Mit trac-bitten muss folgendes durchgeführt werden: | ||
* build clean - dafür nur "on_firmware.ar71xx-clean" auswählen und warten bis slave Recipe ausgeführt hat. Die Option "on_firmware.ar71xx-clean" ist nur zugänglich, wenn der Nutzer in der trac-admin Gruppe ist. Dann gibt es auf der Trac-Webseite einen Menüpunkt "Admin". Auf der nächsten Seite "Configurations" auswählen und nun ist auch "on_firmware.ar71xx-clean" auswählbar. | * build clean - dafür nur "on_firmware.ar71xx-clean" auswählen und warten bis slave Recipe ausgeführt hat. Die Option "on_firmware.ar71xx-clean" ist nur zugänglich, wenn der Nutzer in der trac-admin Gruppe ist. Dann gibt es auf der Trac-Webseite einen Menüpunkt "Admin". Auf der nächsten Seite "Configurations" auswählen und nun ist auch "on_firmware.ar71xx-clean" auswählbar. |
Version vom 7. Dezember 2014, 13:24 Uhr
Software zum Betrieb von Opennet DEV trac Umgebung (Hilfsmittel für Entwickler).
Inhaltsverzeichnis |
Installation
- Installation trac (incl. subversion)
- Installation trac-git (git Plugin)
- Installation trac-bitten trac-bitten-slave (Continuous Integration)
- Installation trac-announcer (Benachrichtigungssystem)
- Installation libapache2-mod-wsgi (Apache Modul)
- Vorbereitung Verzeichnisse: mkdir /var/www/trac
Konfiguration
- Anlegen einer neuen Projektumgebung:
trac-admin /var/www/trac/ initenv Project name [My Project]> Opennet Development Database connection string [sqlite:db/trac.db]> trac-admin /var/www/trac/ deploy /tmp/trac mv /tmp/trac/* /var/www/trac/ chown -R www-data:www-data /var/www/trac/
- Konfiguration der Projektumgebung in /var/www/trac/conf/trac.ini
[components] webadmin.* = enabled tracext.git.* = enabled bitten.* = enabled announcer.* = enabled [notifications] always_notify_owner = false always_notify_reporter = false always_notify_updater = false email_sender = SendmailEmailSender sendmail_path = /usr/sbin/sendmail smtp_enabled = true smtp_from = dev@opennet-initiative.de smtp_from_name = Opennet Development smtp_replyto = admin@opennet-initiative.de [project] descr = Opennet Development footer = <a href="https://www.opennet-iniative.de/">Opennet Initiative e.V.</a> icon = site/favicon.ico url = https://dev.opennet-initiative.de [ticket] default_component = on_test default_type = task [header_logo] alt = Opennet Development link = / src = site/Opennet_logo_quer.gif [timeline] ticket_show_details = true [trac] base_url = https://dev.opennet-initiative.de/ [wiki] ignore_missing_pages = true [announcer] email_enabled = true use_threaded_delivery = true always_notify_owner = true always_notify_reporter = true always_notify_updater = true always_notify_cc = true always_notify_component_owner = true email_from = dev@opennet-initiative.de email_from_name = Opennet Development email_to = dev email_replyto = email_address_resolvers = SpecifiedEmailResolver, SessionEmailResolver email_subject_prefix = Opennet DEV- [git] cached_repository = true persistent_cache = true
- Admin Nutzer für Projektumgebung:
trac-admin /var/www/trac/ > permission add <adminname>.client.on TRAC_ADMIN > exit
- Einbindung in Apache Webserver:
# robots Alias /robots.txt /var/www/htdocs/dev.opennet-initiative.de/robots.txt # trac WSGIScriptAlias /trac /var/www/trac/cgi-bin/trac.wsgi Alias /trac/chrome/ /var/www/trac/htdocs/ <Directory /var/www/trac/cgi-bin/trac.wsgi> WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory>
- Login in Apache Webserver (HTTP als HTTPS-Redirect)
Redirect permanent /login https://dev.opennet-initiative.de/login
- Login in Apache Webserver (HTTPS mit Client-Zertifikat)
<Location "/login"> # client cert auth SSLVerifyClient optional SSLVerifyDepth 3 # forward auth to cgi SSLUserName SSL_CLIENT_S_DN_CN # allow specific cert CN #check disabled, rights granted inside trac - mathias mahnke 2014/04/26 #SSLRequire %{SSL_CLIENT_S_DN_CN} in {"<adminname1>.client.on","<adminname2>.client.on"} # client cert error handling RewriteEngine on RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS RewriteRule .? - [F] ErrorDocument 403 "You need a certificate issued by Opennet Client Sub-CA to access this site." </Location>
- Anlegen eines Git Repositories:
mkdir /var/git/<on_projectname> cd /var/git/<on_projectname> git --bare init git update-server-info cd hooks mv post-update.sample post-update
- nun via Trac Admin Webinterface in Projektumgebung einbinden sowie:
trac-admin /var/www/trac/ changeset added "<on_projectname>" echo "exec trac-admin /var/www/trac/ changeset added \"<on_projectname>\"" >> /var/git/<on_projectname>/hooks/post-update
- sonstige Trac Nacharbeiten:
- Berechtigungen TICKET_CREATE u. TICKET_APPEND für Anonymous erlauben
- Site Logo setzen, Wiki Startseite bearbeiten
- Anlegen einer Gitolite Umgebung siehe Server Installation/gitolite
- Einbinden von Bitten u. Trac-Announcer, Projektumgebung aktualisieren:
trac-admin /var/www/trac/ upgrade trac-admin /var/www/trac wiki upgrade trac-admin /var/www/trac/ deploy /tmp/trac cp -R /tmp/trac/* /var/www/trac/ chown -R www-data:www-data /var/www/trac/ ln -s /usr/share/javascript/flot/jquery.flot.js /var/www/trac/htdocs/bitten/ ln -s /usr/share/javascript/excanvas/excanvas.js /var/www/trac/htdocs/bitten/
- Einbindung von Bitten, Repository Alias "(default") setzen sowie Rechte BUILD_ADMIN an Nutzer und BUILD_VIEW an Anonymous nach Bedarf vergeben
- trac-bitten-slave als Deamon (auf separatem Build Server):
mkdir /var/trac-bitten-slave useradd -d /var/trac-bitten-slave -c "bitten service user" -r -s /bin/false trac-bitten-slave chown -R trac-bitten-slave:trac-bitten-slave /var/bitten cp /usr/share/doc/trac-bitten-slave/examples/trac-bitten-slave.default /etc/default/trac-bitten-slave cp /usr/share/doc/trac-bitten-slave/examples/trac-bitten-slave.init /etc/init.d/trac-bitten-slave chmod +x /etc/init.d/trac-bitten-slave vi /etc/default/trac-bitten-slave DAEMON_HOME="/var/trac-bitten-bitten" DAEMON_ARGS="--work-dir=$DAEMON_HOME --build-dir=$DAEMON_HOME --keep-files" URLS="https://dev.opennet-initiative.de/builds" update-rc.d trac-bitten-slave defaults
Betrieb
Allgemenes
- Nutzer anlegen: Anmeldung erfolgt über Opennet CA Zertifikate der Client Sub-CA. Rechtevergabe per trac-admin.
- Repository anlegen: Git anlegen siehe Server Installation/gitolite, Einbindung per Trac Webadmin GUI sowie Veröffentlichung via Apache Config vornehmen.
- Bitten-Slave ausführen: bitten-slave https://dev.opennet-initiative.de/builds -vv --work-dir=. --build-dir=. --keep-files
- Die Build-Recipes können im trac über den Tab "Admin" - "Build, Configurations" ausgewählt werden. Um den Punkt "Build, Configurations" zu sehen, muss man entsprechende Admin-Rechte im trac haben/bekommen.
Build-Recipe "on_firmware.ar71xx" for continuous builds:
<build description="Build system" xmlns:sh="http://bitten.edgewall.org/tools/sh" xmlns:c="http://bitten.edgewall.org/tools/c" > <step id="Checkout"> <sh:exec file="git" dir="on_firmware" args="pull" /> </step> <step id="Init"> <c:make target="init" file="on_firmware/Makefile" directory="on_firmware" args="" /> </step> <step id="Make"> <c:make target="ar71xx" file="on_firmware/Makefile" directory="on_firmware" args="V=s" /> </step> </build>
Build-Recipe "on_firmware.ar71xx-clean"
<build description="Build system" xmlns:sh="http://bitten.edgewall.org/tools/sh" xmlns:c="http://bitten.edgewall.org/tools/c" > <step id="Clean"> <sh:exec file="rm" args="-rf on_firmware" /> </step> <step id="Checkout"> <sh:exec file="git" args="clone https://dev.opennet-initiative.de/git/on_firmware" /> </step> <step id="Init"> <c:make target="init" file="on_firmware/Makefile" directory="on_firmware" args="" /> </step> <step id="Make-ar71xx"> <c:make target="ar71xx" file="on_firmware/Makefile" directory="on_firmware" args="V=s" /> </step> </build>
Logrotate trac-bitten-slave:
/home/trac-bitten-slave/log/*.log { rotate 10 weekly compress missingok notifempty }
Build von vorn beginnen
Es kann bei größeren Commits vorkommen, dass das Bauen der Firmware nach einem "git pull" Fehler hervorbringt. Typischerweise passiert das, wenn eines der Git Submodule aktualisiert wurde (z.B. OpenWRT). An dieser Stelle muss ein komplett neuer Build angestoßen werden. Mit trac-bitten muss folgendes durchgeführt werden:
- build clean - dafür nur "on_firmware.ar71xx-clean" auswählen und warten bis slave Recipe ausgeführt hat. Die Option "on_firmware.ar71xx-clean" ist nur zugänglich, wenn der Nutzer in der trac-admin Gruppe ist. Dann gibt es auf der Trac-Webseite einen Menüpunkt "Admin". Auf der nächsten Seite "Configurations" auswählen und nun ist auch "on_firmware.ar71xx-clean" auswählbar.
- den bestehenden, bisher fehlerhaften Build, invalidieren (Tab "Build Status" -> dort auf den Build klicken -> "Invalidate build" klicken). Und zusätzlich die Auswahl der Recipes wieder auf Ausgangslage zurücksetzen, sodass "clean" nicht aktiviert ist.
Jetzt sollte automatisch der Slave beginnen alles neu zu bauen.