Server Installation/trac: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(Betrieb: weitere Erklärung für "on_firmware.ar71xx-clean")
(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 ==
  
 
* 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 ===
+
== 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 ===
+
== 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'''
+
=== 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, 12: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
  • 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.

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge