So installieren und konfigurieren Sie GoCD unter Ubuntu 16.04

Einführung

GoCD ist eine leistungsstarke kontinuierliche Integrations- und Bereitstellungsplattform zur Automatisierung von Test- und Freigabeprozessen. Mit vielen erweiterten Funktionen wie der Möglichkeit, Builds zu vergleichen, komplexe Workflows zu visualisieren und die Versionsverfolgung von Builds zu automatisieren, ist GoCD ein flexibles Tool, mit dem Teams gut getestete Software für Produktionsumgebungen bereitstellen können.

In diesem Handbuch wird gezeigt, wie Sie einen GoCD-Server unter Ubuntu 16.04 einrichten. Wir werden den Server und einen Agenten installieren, um die CI / CD-Arbeit mit den vom Projekt bereitgestellten Paketen abzuschließen. Anschließend konfigurieren wir die Authentifizierung und ändern einige grundlegende Optionen, um unseren Server einzurichten.

Voraussetzungen

Basierend auf den Empfehlungen von the GoCD project benötigen Sie einen Ubuntu 16.04-Server mit * mindestens 2 GB RAM und 2 CPUs Kerne *, um diese Anleitung zu vervollständigen. Zusätzlich, https://docs.gocd.org/current/installation/system_requirements.html#additional-requirements-for-gocd-server[um Build-Artefakte ohne Beschädigung von Daten zu verarbeiten, benötigt Ihr Server eine dedizierte Partition oder Festplatte als Artefaktspeicherort dienen. Wir werden in diesem Handbuch "+ / mnt / artifact-storage +" als Einhängepunkt für die Speicherung von Artefakten verwenden:

Befolgen Sie unsere https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [ Ubuntu 16.04 Anleitung zur Ersteinrichtung des Servers], um einen Nicht-Root-Benutzer mit "+ sudo +" - Berechtigungen einzurichten und eine grundlegende Firewall zu aktivieren. Wenn Sie diese Schritte ausgeführt haben, fahren Sie mit dieser Anleitung fort.

Installieren des GoCD-Servers und des Agenten

Wir werden zunächst die Server- und Agentenpakete von einem dedizierten Repository herunterladen und installieren, das vom GoCD-Projekt bereitgestellt wird.

Zuerst fügen wir die neue Repository-Definition zum Konfigurationsverzeichnis der APT-Quellen hinzu, indem wir Folgendes eingeben:

echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list

Wir müssen APT auch den GoCD GPG-Schlüssel hinzufügen, damit die Signaturen auf den GoCD-Paketen überprüft werden können. Sie können den Schlüssel herunterladen und zu Ihrem System hinzufügen, indem Sie Folgendes eingeben:

curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -

Jetzt können wir den lokalen Paketindex aktualisieren, um eine Liste neuer Pakete abzurufen und die Software zu installieren. Für die Ausführung von GoCD ist Java 8 erforderlich. Daher installieren wir das Paket "+ default-jre " zusammen mit dem CI-Server und dem Agenten. Wir werden auch das Paket ` apache2-utils +` installieren, mit dem wir eine Authentifizierungsdatei generieren:

sudo apt-get update
sudo apt-get install default-jre go-server go-agent apache2-utils

Die Abhängigkeiten und die Software für die kontinuierliche Integration werden heruntergeladen und auf dem Server installiert.

Vorbereiten der GoCD für die erste Verwendung

Bevor wir den GoCD-Server starten, werden wir einige Aufgaben in der Befehlszeile ausführen, um uns fertig zu machen.

Zunächst müssen wir sicherstellen, dass der GoCD-Prozess Zugriff auf den Mount-Punkt für Artefakte hat, damit er dort Assets speichern kann. Der CI-Server wird als Benutzer und Gruppe "+ go " ausgeführt, sodass wir den Besitz des Mount-Punkts " / mnt / artifact-storage +" entsprechend zuweisen können:

sudo chown -R go:go /mnt/artifact-storage

Als Nächstes erstellen wir eine Kennwortdatei und füllen sie mit Informationen zur Authentifizierung. Das file-based authentication plugin von GoCD verwendet das Benutzerauthentifizierungsformat, das mit dem Dienstprogramm + htpasswd + erstellt wurde.

Mit der Option "+ -B " im folgenden Befehl wird der Verschlüsselungsalgorithmus " bcrypt " ausgewählt. Die Option " -c " weist " htpasswd +" an, eine neue Authentifizierungsdatei unter dem angegebenen Pfad zu erstellen. Der Befehl endet mit dem Benutzernamen, für den wir ein Passwort erstellen möchten. Dieser Benutzername ist völlig unabhängig von den Benutzern des Betriebssystems, sodass Sie für diesen Wert verwenden können, was immer Sie möchten:

sudo htpasswd -B -c /etc/go/authentication

Sie werden aufgefordert, ein Kennwort für den neuen Benutzer einzugeben und zu bestätigen. Der Benutzername und eine verschlüsselte Version des Passworts werden in die Datei geschrieben:

OutputNew password:
Re-type new password:
Adding password for user sammy

Sobald Sie eine Authentifizierungsdatei haben, können wir den GoCD-Server und die Agentenprozesse starten. Dies kann eine Weile dauern:

sudo systemctl start go-server go-agent

Auch nach dem Beenden des Befehls wird der Prozess nicht vollständig ausgeführt. Überprüfen Sie zunächst, ob die Dienste erfolgreich gestartet wurden:

sudo systemctl status go-*

Wenn Ihre Ausgabe ähnlich aussieht, wurden beide Prozesse von systemd initialisiert:

Output● go-agent.service - LSB: Go Agent
  Loaded: loaded (/etc/init.d/go-agent; bad; vendor preset: enabled)
  Active:  since Thu 2017-07-27 19:39:18 UTC; 1min 36s ago
    Docs: man:systemd-sysv-generator(8)
 Process: 8911 ExecStart=/etc/init.d/go-agent start (code=exited, status=0/SUCCESS)

. . .
Jul 27 19:39:18 go5 systemd[1]: Started LSB: Go Agent.

● go-server.service - LSB: Go Server
  Loaded: loaded (/etc/init.d/go-server; bad; vendor preset: enabled)
  Active:  since Thu 2017-07-27 19:39:33 UTC; 1min 21s ago
    Docs: man:systemd-sysv-generator(8)
 Process: 8867 ExecStop=/etc/init.d/go-server stop (code=exited, status=0/SUCCESS)
 Process: 8907 ExecStart=/etc/init.d/go-server start (code=exited, status=0/SUCCESS)

. . .
Jul 27 19:39:33 go5 systemd[1]: Started LSB: Go Server.

Als nächstes sollten wir warten, bis der Dienst an die Ports 8153 und 8154 gebunden ist. GoCD überwacht den ersten Port auf HTTP-Datenverkehr und den zweiten auf HTTPS-geschützten Datenverkehr. Während die Prozesse abgeschlossen sind, haben sie möglicherweise noch nicht begonnen, Webdatenverkehr zu akzeptieren.

Beobachten Sie, welche Ports gerade abgehört werden, indem Sie Folgendes eingeben:

sudo watch netstat -plnt

Dadurch werden die empfangsbereiten TCP-Ports überprüft und der Bildschirm alle 2 Sekunden aktualisiert. Wenn GoCD die Ports 8153 und 8154 abhört, sollte der Bildschirm folgendermaßen aussehen:

OutputEvery 2.0s: netstat -plnt                                                    Thu Jul 27 20:16:20 2017

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1736/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1736/sshd
tcp6       0      0 :::                 :::*                    LISTEN      8942/java
tcp6       0      0 :::                 :::*                    LISTEN      8942/java

Wenn diese Überwachungsports angezeigt werden, drücken Sie * STRG-C *, um den Prozessmonitor zu beenden.

Nachdem die Software vollständig ausgeführt wurde, können wir den HTTPS-Port (Port 8154) von GoCD in der UFW-Firewall öffnen. Wir müssen den HTTP-Port nicht öffnen, da alle Verbindungen sicher sein sollen:

sudo ufw allow 8154

Unser Server ist jetzt betriebsbereit. Wir stellen eine Verbindung zum Webinterface her, um mit der Konfiguration fortzufahren.

Einrichten der Kennwortauthentifizierung

Mit der initialisierten GoCD-Serverkomponente, die auf Verbindungen wartet, und unserer Firewall, die Verbindungen zulässt, können wir über einen Webbrowser eine Verbindung zum Dienst herstellen.

Geben Sie in Ihrem Browser das Protokoll "+ https: // " gefolgt vom Domainnamen oder der IP-Adresse Ihres Servers an und enden Sie mit der Portspezifikation ": 8154 +":

https://:8154

In Ihrem Browser wird wahrscheinlich eine Warnung angezeigt, die darauf hinweist, dass das SSL-Zertifikat des Dienstes nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde:

Da GoCD seine Zertifikate selbst signiert, ist dies ein erwartetes Verhalten. Klicken Sie auf * ADVANCED * (ERWEITERT) oder eine ähnliche Option, die in Ihrem Browser verfügbar ist, und fahren Sie dann mit der Anforderung fort.

Wenn Sie sich zum ersten Mal mit GoCD verbinden, gelangen Sie zum Pipeline-Definitionsbildschirm. Anstatt eine Pipeline sofort zu definieren, sollten wir die Aktivierung der Authentifizierung anhand der Kennwortdatei priorisieren, die wir zuvor mit + htpasswd + erstellt haben. Klicken Sie im oberen Navigationsmenü auf * ADMIN * und wählen Sie dann im Untermenü * Sicherheit * die Option * Berechtigungskonfiguration *:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/authorization_config_item.png [Berechtigungskonfigurationsmenü auswählen]

Klicken Sie auf der folgenden Seite oben rechts auf die Schaltfläche * Hinzufügen *. Ein Bildschirm wird angezeigt, in dem Sie die Details Ihres Authentifizierungsanbieters eingeben können.

Geben Sie zunächst einen beliebigen Namen für die neue Autorisierungsmethode in das Feld * Id * ein. Belassen Sie die Auswahl * Plugin-ID * auf “Password File Authentication Plugin for GoCD”. Geben Sie schließlich in das Feld * Kennwortdateipfad * "+ / etc / go / authentication " die Datei ein, die wir mit " htpasswd +" erstellt haben. Wenn Sie fertig sind, klicken Sie auf * Verbindung prüfen *, um sicherzustellen, dass GoCD korrekt auf die Datei zugreifen kann:

image: https://assets.digitalocean.com/articles/gocd_install_1604/enter_auth_and_check.png [Authentifizierung eingeben und Verbindung prüfen]

Wenn GoCD die Meldung "Connection OK" anzeigt, klicken Sie auf "Save" (Speichern), um die neue Authentifizierung zu implementieren.

Sie werden aufgefordert, sich mit dem neuen Schema zu authentifizieren. Dies wird möglicherweise beim ersten Mal als Standard-Browser-Anmeldefeld angezeigt, oder Sie werden zur GoCD-Anmeldeseite weitergeleitet. Melden Sie sich mit dem von Ihnen konfigurierten Benutzernamen und Passwort an:

Ihre GoCD-Installation ist jetzt passwortgeschützt, um unbefugten Zugriff zu verhindern.

Festlegen der Site-URL und des Speicherorts für Artefakte

Nachdem die Webschnittstelle ordnungsgemäß gesichert wurde, können wir die Konfiguration unseres CI-Servers über die Webbenutzeroberfläche abschließen.

Klicken Sie nach dem erneuten Anmelden an der Weboberfläche im oberen Menü auf * ADMIN * und wählen Sie im Dropdown-Menü die Option * Serverkonfiguration * aus:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/server_config_item.png [GoCD-Serverkonfigurationsmenüpunkt]

Sie werden zur Hauptkonfigurationsseite weitergeleitet, auf der wir einige Einstellungen vornehmen können.

Das erste Element, das wir betrachten sollten, ist die * Site-URL * im Abschnitt * Serververwaltung * der Seite. GoCD bietet zwei Einstellungen, die die CI-Server-URL bestimmen: die "Site-URL" und die "Secure Site-URL". Die "Site-URL" ist die Standard-Site-URL, die in den meisten Fällen verwendet wird. Die "Secure Site URL" wird verwendet, wenn die reguläre "Site URL" für die Verwendung von HTTP konfiguriert ist und GoCD sensible Daten übertragen muss. Wenn "Site URL" eine HTTPS-Adresse verwendet, werden alle Verbindungen verschlüsselt und "Secure Site URL" muss nicht festgelegt werden.

Da wir den Zugriff auf den HTTPS-Port nur über die Firewall zugelassen haben, füllen wir * Site-URL * mit dem Protokollbezeichner "+ https: // ", gefolgt von der Domain oder IP-Adresse unseres Servers, gefolgt von ": 8154 + `. Wir lassen die Secure Site URL leer, da unsere normale URL bereits sicher ist:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/set_site_url.png [URL der GoCD-Site festlegen]

Scrollen Sie dann nach unten zum Abschnitt * Pipeline Management * der Seite. Setzen Sie den * Ort des Artefaktverzeichnisses * auf den zuvor erstellten Einhängepunkt + / mnt / artifact-storage +. Sie können die Richtlinie zum Löschen von Artefakten optional anpassen, wenn Sie möchten, dass GoCD die Aufbewahrung von Artefakten automatisch verwaltet. Belassen Sie "Nie", um Artefakte manuell zu verwalten:

Wenn Sie fertig sind, klicken Sie auf die Schaltfläche * SPEICHERN * unten auf der Seite, um Ihre Änderungen zu übernehmen.

Möglicherweise wird in der oberen Menüleiste eine Warnung angezeigt:

Wenn Sie auf die Warnanzeige klicken, wird die vollständige Warnmeldung angezeigt, die besagt, dass GoCD den Speicherort "+ / mnt / artifact-storage +" erst nach einem Neustart verwendet.

Klicken Sie auf das * X *, um die Warnmeldung zu verlassen.

Überprüfen Sie vor dem Neustart des Servers, ob unser Agent erfolgreich beim Server registriert wurde. Klicken Sie im oberen Menü auf den Punkt * AGENTS *. Sie werden zur Liste der Agenten weitergeleitet:

Der von uns gestartete Agentenprozess wurde erfolgreich beim Server registriert, und sein Status wird auf "Inaktiv" gesetzt. Dies bedeutet, dass der Agent aktiviert ist, aber keine Arbeit zugewiesen ist, was wir erwarten.

Nachdem wir bestätigt haben, dass unser Agent vorhanden ist, können wir den GoCD-Serverprozess neu starten, um die Änderung des Artefaktspeicherorts abzuschließen. Starten Sie den Dienst wieder in der Befehlszeile, indem Sie Folgendes eingeben:

sudo systemctl restart go-server

Sobald der Dienst neu gestartet wurde und wieder auf Verbindungen über Port 8154 wartet, können Sie erneut eine Verbindung zur Web-Benutzeroberfläche herstellen.

Fazit

In diesem Handbuch haben wir einen GoCD-Server und -Agent installiert und konfiguriert, die unter Ubuntu 16.04 ausgeführt werden. Wir haben einen dedizierten Artefaktspeicherplatz auf einer separaten Partition eingerichtet, um generierte Build-Assets zu verarbeiten, und die Authentifizierung konfiguriert, um die Webschnittstelle zu sichern.

Sobald GoCD betriebsbereit ist, besteht ein guter nächster Schritt darin, Ihre Installation mit einem vertrauenswürdigen SSL-Zertifikat zu sichern. Folgen Sie unserer Anleitung unter https://www.digitalocean.com/community/tutorials/how-to-configure-gocd-with-let-s-encrypt-ssl-certificates-on-ubuntu-16-04, um GoCD zu konfigurieren mit Lassen Sie uns SSL-Zertifikate verschlüsseln], um zu erfahren, wie dies eingerichtet wird.