Monthly Archives: Juni 2015

[Prunked.Net] Continuous Integration – Teil 4 – Nexus-Installation und -Konfiguration

Die einzige benötigte Abhängigkeit von Nexus, ein Java JDK, haben wir bereits in Teil 2 dieser Reihe installiert und können wir damit überspringen. Zur Installation von Nexus laden wir uns zunächst das aktuellste .tar.gz-Archiv herunter und entpacken es an einem entsprechend geeigneten Ort.

sudo su
cd /usr/local/
NEXUS_ARCHIVE=$(wget -nv --content-disposition https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-latest-bundle.tar.gz 2>&1 | awk '{print substr($6,2,length($6)-2);}')
NEXUS_DIR=$(echo | awk -v NEXUS_ARCHIVE="$NEXUS_ARCHIVE" '{print substr(NEXUS_ARCHIVE,0,length(NEXUS_ARCHIVE)-13);}')
tar -xvzf $NEXUS_ARCHIVE
ln -s $NEXUS_DIR nexus

Danach fügen wir über

echo "NEXUS_HOME=\"/usr/local/nexus\"" >> /etc/environment
source /etc/environment

das Nexus-Home-Verzeichnis zu den Umgebungsvariablen hinzu und lesen letztere neu ein.

Da und damit Nexus nicht unter Root laufen soll, legen wir uns einen neuen Benutzer an:

useradd nexus

Damit Nexus-Benutzer auch auf die von ihm benötigten Ordner und Dateien zugreifen kann, müssen wir ihm noch die Rechte dazu geben:

chown -R nexus:nexus nexus $NEXUS_DIR sonatype-work/nexus

Nun müssen wir Nexus-Startup-Script noch beibringen, unter welchen Benutzer es laufen soll. Zusätzlich konfigurieren in diesem auch gleich das Nexus-Home-Verzeichnis (ist für den nächsten Schritt zur Konfiguration als Service wichtig, also machen wir es direkt). Dazu

nano $NEXUS_DIR/bin/nexus

ausführen. Über STRG+W suchen wir nach NEXUS_HOME= und setzen den Wert auf „/usr/local/nexus“. Danach suchen wir nach #RUN_AS_USER=, entfernen das Kommentarzeichen und setzen den Wert auf „nexus“. Die beiden Zeilen sollten danach so aussehen:

NEXUS_HOME="/usr/local/nexus"
RUN_AS_USER="nexus"

Ein kleiner Test-Start von Nexus kann nicht schaden und sollte ohne größere Fehler klappen:

$NEXUS_DIR/bin/nexus console

Nach kurzer Zeit sollte Nexus auf IP:8081/nexus verfügbar sein (Benutzername: admin, Passwort: admin123).

Als nächstes richten wir Nexus als Service ein, damit er bei einem Neustart mitgestartet wird. Dazu beenden wir den Konsolenmodus mittels STRG+C und führen folgendes aus:

cd /etc/init.d/
cp $NEXUS_HOME/bin/nexus .
chmod 755 nexus
chown root nexus
update-rc.d nexus defaults
service nexus start

Jetzt sollte noch die Checkliste nach der Installation (Post-Install Checklist) im Handbuch durchgelesen und durchgeführt werden (wobei der Punkt Configuring Nexus as a Service übersprungen werden kann, da wir diesen bereits vollzogen haben).

Danach ist die Installation von Nexus abgeschlossen. Die weitere Konfiguration geschieht über das Web-Interface.

Im Web-Interface als admin eingeloggt, klicken wir in Liste links unter Administration auf Server. Im sich öffnenden Konfigurationsdialog unter Security Settings wählen wir aus der Liste der Available Realms den Eintrag NuGet API-Key Realm aus, fügen ihn der Liste der Selected Realms hinzu und klicken auf Save.

Danach gehen wir in der linken Menüliste unter Repositories/Views auf Repositories. Hier sind bereits einige Einträge hinterlegt; für den späteren Verlauf legen wir uns über den Button Add… noch folgende zusätzliche Repositories an:

TypeRepository IDRepository NameProviderRemote Storage Location
proxynuget-galleryNuGet GalleryNuGethttps://www.nuget.org/api/v2
hostednuget-internal-releasesNuGet Internal Releases FeedNuGet
hostednuget-internal-snapshotsNuGet Internal Snapshots FeedNuGet

Nach Anlegen der Repositories findet ihr unter dem Reiter NuGet die jeweilige URL, unter der das Repository erreichbar ist sowie ggf. den API Key, über den das NuGet Package gepusht werden kann. Wichtig sind diese Informationen für die Konfiguration des Paketmanagers im Visual Studio oder von NuGet im Jenkins.

Damit ist auch die Erstkonfiguration von Nexus abgeschlossen.

[Prunked.Net] Continuous Integration – Teil 3 – GitLab-Installation und -Konfiguration

Die Installation von GitLab ist mit den Omnibus Packages sehr einfach geworden. Wir wechseln zunächst wieder über

sudo su

zu Root und installieren über

apt-get -y install curl openssh-server ca-certificates postfix

die benötigten Abgängigkeiten (Wenn Postfix installiert wird, entweder selbst konfigurieren oder einfach den Standard Internet Site mit Hostnamen beibehalten). Danach installieren wir über

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
apt-get -y install gitlab-ce

GitLab selbst. Nun noch die Konfiguration über

gitlab-ctl reconfigure

durchführen, und wir haben auf einem vorkonfigurierten nginx-Server auf Port 80 eine lauffähige GitLab-Instanz (Benutzername: root, Passwort: 5iveL!fe). Anmelden, Passwort ändern, erneut anmelden, anschauen und freuen. 😉

Als Vorbereitung für den später zu installierenden Jenkins können wir bereits jetzt einen entsprechenden Deploy Key in GitLab hinterlegen. Wechselt dazu mit angemeldetem Benutzer in die Admin area (die drei Zahnräder in der Leiste oben rechts) und hier über die Menüleiste links in die Deploy Keys. Über den Button New Deploy Key könnt ihr nun einen neuen SSH Public Key hinzufügen.

Für Informationen zum Erzeugen eines neuen SSH-Key-Paares bitte den Link beim Hinzufügen des neuen Deploy Keys beachten.

Windows-Benutzer können zur Erzeugung z.B. puttygen nutzen. (Achtung: Hierbei dann den generierten Public Key aus der Textbox kopieren und in GitLab einfügen; den Inhalt der Datei des gespeicherten Public Keys nimmt GitLab nicht an!) Keys speichern nicht vergessen!!! (Private Key bitte an einem sicheren Ort aufbewahren!!!)

Nun könnt ihr nach Herzenslust GitLab erforschen, neue Gruppen und Projekte erstellen, Benutzer hinzufügen etc. Viel Spaß dabei! 😉

[Prunked.Net] Continuous Integration – Teil 2 – OS-Installation

Installiert wird die Server-Edition von Ubuntu 14.04.2 LTS.

Nach dem Booten von CD/DVD wählen wir zunächst die gewünschte Sprache aus (English). Nun wählen wir noch nach Wunsch über F4 die Optionen aus (Install a minimal virtual machine). Danach auf Install Ubuntu Server, und los geht’s 😉

Als nächstes wählen wir die Sprache, in der das Setup durchgeführt wird (English). Ist diese gewählt, führt uns der nächste Schritt zur Auswahl des Standorts (other -> Europe -> Germany). Als nächstes wählen wir die gewünschte Lokalisierung (en_US.UTF-8).

Einen Schritt weiter verneinen wir die Frage, ob das Tastaturlayout erkannt werden soll, und wählen über die darauf folgenden Bildschirme unser gewünschtes Layout aus (German -> German – German (dead grave acute).

Sind mehrere Netzwerkschnittstellen in eurem System vorhanden, könnt ihr nun auswählen, welche primär genutzt werden soll (euer späteres eth0).

Nach Angabe von Hostname, vollständiger Name eines neuen Benutzers, Benutzername, Paswort und Passwortbestätigung, Verschlüsselung des Benutzerverzeichnisses, Bestätigung oder Korrektur der erkannten Zeitzone können wir nun unsere Festplatte nach unseren Wünschen partitionieren (Guided – use entire disk -> Auswahl der Festplatte -> Yes).

Wir werden noch nach einem evtl. vorhandenen HTTP-Proxy gefragt. Wer keinen hat, kann den Eintrag einfach leer lassen, ansonsten müsst ihr entsprechend die URL eintragen. Mit Continue geht es weiter.

Der nächste Bildschirm fragt ab, ob ihr automatische Updates zulassen wollt (No automatic updates). Zusätzlich zur Ubuntu-Installation könnt ihr auswählen, welche Pakete nachinstalliert werden sollen ([OpenSSH server]).

Als letztes werden wir noch gefragt, ob wir den Bootloader in den MBR der Festplatte installieren wollen (Yes). Danach sind wir mit der Installation durch und können über Continue das erste Mal in unser neues System booten.

Meldet euch nun mit dem Benutzernamen und Passwort, die ihr gewählt habt, an. Ein ifconfig später haben wir die IP-Adresse heraus und können nach Bedarf alle folgenden Schritte per SSH weitermachen.

Die nächsten Schritte benötigen zumeist Root-Rechte, wechseln wir also über

sudo su

zu diesem.

Hinweis: Solltet ihr beabsichtigen, Mono unter Linux nutzen zu wollen, empfiehlt es sich, als nächstes die Installationsquelle des Mono-Project über

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list

einzubinden. Bei mir bestand zu einem späteren Zeitpunkt immer das Problem, das ich mich in einer „Dependency Hell “ (sprich: für Mono benötigte Abhängigkeiten konnten nicht korrekt aufgelöst und installiert werden) befand.

Bringen wir als nächstes unser System auf den aktuellen Stand.

apt-get -y update
apt-get -y upgrade
apt-get -y dist-upgrade

Zusätzlich sollten wir noch ein paar weitere benötigte Pakete wie z.B. nano, wgetgit, default-jdk und mono-complete über

apt-get -y install nano wget git default-jdk mono-complete

installieren. Fügen wir nun JAVA_HOME zu den Umgebungsvariablen hinzu und lesen letztere neu ein:

echo "JAVA_HOME=\"/usr/lib/jvm/default-java\"" >> /etc/environment
source /etc/environment

Ein abschließendes

reboot

und die Grundinstallation des Systems abgeschlossen.