netcup News

netcup Adventskalender 2022

26.11.2022, Kategorie: News

Weihnachten steht vor der Tür – und damit auch der Adventskalender von netcup! Nach alter netcup Tradition öffnen wir am 01. Dezember pünktlich um 0:00 Uhr das Türchen Nummer 1. An den folgenden 24 Tagen warten hinter jedem Türchen spannende Angebote und Überraschungen auf euch. 

Wir sind froh auch dieses Jahr den beliebten netcup Adventskalender anzukündigen. Vom 01. Dezember bis Heiligabend öffnet sich im netcup Adventskalender jeden Tag ein neues Türchen. Hinter jedem Türchen verbirgt sich ein tolles, weihnachtliches Sonderangebot.

Wie in den letzten Jahren wollen wir auch in diesem Jahr eine Spende für einen wohltätigen Zweck tätigen. Von allen Bestellungen, die durch das Sonderangebot am 24.12.2022 generiert werden, werden wir die gesamten Gebühren des ersten Jahres an eine gemeinnützige Organisation spenden. Weitere Informationen über die Organisation und die Spende werden auf unseren Social-Media-Kanälen bekannt gegeben.

Im netcup Adventskalender ist für jede und jeden etwas dabei. Täglich erwarten euch verschiedene Sonderangebote aus unseren beliebtesten Produktkategorien wie Webhosting, Root-Server, VPS und Domains. Zudem freuen wir uns sehr, auch in diesem Jahr wieder die beliebten netcup Merchandise Produkte im Adventskalender anbieten zu können.

Die Nachfrage nach unseren Adventskalender-Sonderangeboten ist jedes Jahr sehr hoch. Bei besonders nachgefragten Angeboten versuchen wir die verfügbaren Stückzahlen nach Möglichkeit wieder aufzufüllen. Auf Twitter und Facebook wird bekannt gegeben, wenn das Kontingent für das jeweilige Angebot erneut aufgefüllt wird.

Wir sind bereits voller Vorfreude auf die Adventszeit und hoffen, dass wir diese Freude nun auch bei euch schüren konnten. Alle unsere Angebote wurden mit größter Sorgfalt ausgearbeitet und mit viel Liebe in den Adventskalender gepackt. Damit möchten wir allen unseren Kundinnen und Kunden die Vorweihnachtszeit ein wenig versüßen.

In diesem Sinne wünschen wir eine schöne und besinnliche Adventszeit!


Fahrplan für den Black Friday 2022

18.11.2022, Kategorie: News

netcup Aktionen am Black Friday 2020Auch in diesem Jahr gibt es wieder spannende Aktionen rund um den Black Friday. Wir bei netcup befinden uns bereits in den Startlöchern und erwarten am 25.11. einen galaktischen Sturm mit einer Fülle von Aktions-Schnäppchen. In diesem Fahrplan geben wir schon im Vorhinein spannende Informationen über den Ablauf des Black Friday preis.

Nicht nur am Freitag, 25.11.2022 gibt es unglaubliche Schnäppchen und Sonderangebote. Bereits am Montag, den 21.11.2022 ab 10:00 Uhr erwartet euch die Domain Week. Hier können sowohl die Bestands- als auch Neukunden eine unbegrenzte Stückzahl von stark reduzierten Domains erwerben.

Die Domain Week mündet dann in den großen Angeboten vom Black Friday. Am 25.11.2022 ab 7:00 Uhr werden nach einem genau festgelegten Zeitplan nach und nach tolle Schnäppchen aus den Kategorien Webhosting, vServer und Root Server verfügbar sein. Alle Angebotsprodukte stehen dann zur jeweils unten genannten Uhrzeit auf www.netcup-sonderangebote.de zum Verkauf. Bestellt werden kann das Sonderangebot solange, wie der Vorrat reicht oder bis spätestens 18:00 am Black Friday. Zum Teil ist die Stückzahl der Sonderangebote stark limitiert, darum empfiehlt es sich, gut vorbereitet zu sein, um direkt bei dem richtigen Angebot zuschlagen zu können.

Der Fahrplan auf dieser Seite gibt eine Übersicht über die geplanten Schnäppchen. So gibt es bereits im Vorfeld für alle die Möglichkeit, die für sich passenden Angebote herauszusuchen.

Möglicherweise aufkommende Fragen haben wir in diesem Beitrag beantwortet: FAQ zu den Aktionen am Black Friday.


netcup Domain Week | Start: Montag, 21.11.2022 ab 10:00

Bereits vor dem eigentlichen Black Friday startet unsere Domain Week. Es gibt unbegrenzt Domains zu teilweise stark vergünstigten Preisen im Angebot.
Die Aktionen gelten für Bestands- und Neukunden in der Zeit von Mo, 21.11.2022 10:00 bis Fr, 25.11.2022 06:59.

  • 10:00 Uhr : .de-Domain 0,13 € / Monat zzgl. 2 € Einrichtungsgebühr (Stückzahl unbegrenzt)
  • 10:00 Uhr : .at-Domain 0,86 € / Monat (Stückzahl unbegrenzt)
  • 10:00 Uhr : .ch-Domain 0,60 € / Monat (Stückzahl unbegrenzt)
  • 10:00 Uhr : .li-Domain 0,60 € / Monat (Stückzahl unbegrenzt)
  • 10:00 Uhr : .eu-Domain 0,42 € / Monat (Stückzahl unbegrenzt)
  • 10:00 Uhr : .com-Domain 0,99 € / Monat (Stückzahl unbegrenzt)

Sonderangebote am Black Friday, 25.11.2022 ab 07:00

Die regulären Aktionen gelten für Neu- und Bestandskunden am Fr, 25.11.2022 ab 07:00 bis spätestens 18:00 bzw. solange der Vorrat reicht.

  • 07:00 Uhr : Cloud vLAN Giga statt 12,99 € NUR 6,69 € / Monat (Stückzahl unbegrenzt)
  • 07:00 Uhr : Webhosting Black Comet statt 6,52 € NUR 5,05 € / Monat + die ersten drei Monate gratis (Stückzahl unbegrenzt)
  • 07:00 Uhr : RS 4000 G9.5 SE NUR 31,58 € / Monat (maximal 111 Stück)
  • 08:00 Uhr : Managed PS 2000 statt 52,30 € NUR 44,97 € / Monat (maximal 44 Stück)
  • 08:00 Uhr : RS 2000 G9.5 SE NUR 16,89 € / Monat (maximal 111 Stück)
  • 09:00 Uhr : Webhosting 8000 SE statt 10,60 € NUR 6,21 € / Monat (Stückzahl unbegrenzt)
  • 09:00 Uhr : VPS 2000 G10 SE NUR 13,07 € / Monat (maximal 222 Stück)
  • 10:00 Uhr : RS Black Galaxy NUR 56,66 € / Monat (maximal 111 Stück)
  • 11:00 Uhr : Cloud vLAN 2,5 Gbit/s statt 20,51 € NUR 11,28 € / Monat (Stückzahl unbegrenzt)
  • 11:00 Uhr : VPS Black Planet NUR 25,05 € / Monat (maximal 111 Stück)
  • 12:00 Uhr : VPS 1000 G10 SE NUR 9,53 € / Monat (maximal 222 Stück)
  • 12:00 Uhr : RS Black Star NUR 24,43 € / Monat (maximal 111 Stück)
  • 13:00 Uhr : Reseller Level B statt 19,00 € NUR 10,44 € / Monat (Stückzahl unbegrenzt)
    • –> 13:30 Uhr : Refill Slot. Wir füllen manche ausverkauften Produkte wieder auf.
  • 14:00 Uhr : VPS 6000 G10 SE NUR 34,88 € / Monat (maximal 111 Stück)
  • 14:00 Uhr : Webhosting 2000 SE statt 3,25 € NUR 2,58 € / Monat (Stückzahl unbegrenzt)
    • –> 14:30 Uhr : Refill Slot. Wir füllen manche ausverkauften Produkte wieder auf.
  • 15:00 Uhr : RS 1000 G9.5 SE NUR 9,81 € / Monat (maximal 111 Stück)
    • –> 15:30 Uhr : Refill Slot. Wir füllen manche ausverkauften Produkte wieder auf.
  • 16:00 Uhr : Managed PS 4000 statt 70,28 € NUR 59,99 € / Monat (maximal 44 Stück)
  • 16:00 Uhr : VPS Black Moon NUR 5,76 € / Monat (maximal 222 Stück)
  • 17:00 Uhr : Webhosting 1000 SE statt 2,17 € NUR 1,08 € / Monat (Stückzahl unbegrenzt)

 

Änderungen oder Erweiterungen der Aktionen werden auf unserem Sonderangebote-Blog und auf Twitter bekannt gegeben. Der Fahrplan wird bei Bedarf aktualisiert.


Alle Preisangaben in Euro und inkl. deutscher MwSt. Die Aktionen der Domain Week gelten von Mo, 21.11.2022 10:00 bis Fr, 25.11.2022 06:59. Die regulären Aktionen gelten ausschließlich am 25.11.2022 und nur solange der Vorrat reicht bzw. bis 18:00. Irrtümer sind nicht ausgeschlossen. Es gelten die Preisangaben in unserem Onlineshop unter www.netcup.de. Die Aktionen können nicht mit Gutscheinen kombiniert werden.


FAQ zu den Aktionen am Black Friday 2022

18.11.2022, Kategorie: News

FAQ zu den netcup Aktionen am Black Friday 2020

Der Black Friday sorgt bei netcup jedes Jahr für großen Ansturm. Um Interessent:innen schon im Vorhinein bestmöglich auf diese heißen Tage vorzubereiten, gibt es hier ein paar wichtige Vorab-Infos. In aller Kürze beantworten wir in diesem FAQ Beitrag zum Black Friday mögliche Fragen, die rund um die Aktionen aufkommen können.

Die netcup Aktionen am Black Friday sollen all unseren Kund:innen Freude bereiten. Deshalb gibt es in diesen Black Friday FAQ nun einige Informationen vorab, um für alle ein bestmögliches Kauferlebnis zu ermöglichen.

Allgemeine Fragen zur Bestellung oder unseren Produkten beantworten wir übrigens in den FAQ in unserem WIKI.


  • Was ist die Domain Week?
    Die Domain Week beginnt am Mo, 21.11.2022 um 10:00 Uhr und endet am Fr, 25.11.2022 um 06:59 Uhr. In diesem Zeitraum gibt es für Bestands- sowie Neukunden die Möglichkeit ein großes Sortiment von Domains zu einem vergünstigten Preis zu erwerben. Alle Domains sind in diesem Zeitraum unbegrenzt verfügbar.
  • Was ist unter regulären Aktionen am Black Friday zu verstehen?
    Die regulären Aktionen am Black Friday beginnen ab Fr., 25.11.2022 um 07:00  Uhr und enden um 18:00 Uhr. Die Produkte werden nacheinander nach einem definierten Zeitplan verfügbar sein. Einige Produkte sind durch ein Zeitlimit oder eine Stückzahl begrenzt. Hier gilt first-come, first-serve.
  • Wo finde ich detaillierte Informationen zu den Aktionsprodukten?
    Die Aktionen werden zur definierten Uhrzeit im Fahrplan im netcup Sonderangebote-Blog veröffentlicht. Ab diesem Zeitpunkt sind alle Details zu den Aktionsprodukten ersichtlich.
  • Gibt es ein Bestelllimit pro Aktion?
    Grundsätzlich gibt es kein Bestelllimit pro Aktionsprodukt. Für einige Produkte gibt es eine zeitliche Wartefrist für eine erneute Bestellung. Damit stellen wir sicher, dass alle Kund:innen eine faire Chance auf ein Produkt erhalten.
  • Können die Aktionen am Black Friday mit Gutscheinen kombiniert werden?
    Nein, die Aktionen sind nicht mit Gutscheinen kombinierbar.
  • Kann ich bestehende Produkte/Verträge auf Aktionen vom Black Friday upgraden?
    Nein, das ist nicht möglich.
  • Ich habe die Aktion verpasst. Gibt es eine Möglichkeit nachträglich die Produkte zu bestellen?
    Nein, das ist leider nicht möglich. Aktionen, die die vorgegebene Stückzahl erreicht haben, sind nicht mehr bestellbar. Sobald das Zeitlimit erreicht ist, ist das Produkt ebenfalls nicht mehr bestellbar. Spätestens um 18:00 sind alle Aktionen des Black Friday vorbei und nicht mehr bestellbar.
  • Eine Aktion war sehr schnell ausverkauft. Gibt es Wiederauffüllungen?
    Möglicherweise. Falls es uns möglich ist, bieten wir im Laufe des Black Friday bei besonders nachgefragten Aktionsprodukten Wiederauffüllungen an. Diese werden rechtzeitig auf Twitter kommuniziert.
  • Ist die Bestpreisgarantie auf die Aktionen anwendbar?
    Nein, die Bestpreisgarantie ist nicht auf die Aktionen am Black Friday anwendbar.
  • Ist die Zufriedenheitsgarantie auf die Aktionen am Black Friday anwendbar?
    Ja, die Zufriedenheitsgarantie ist auch bei Aktionen zu Webhosting- und Root-Server-Produkten gültig.
  • Ändert sich der Preis nach dem ersten Jahr bzw. der ersten Abrechnungsperiode?
    Nein, der Preis der Aktion ist dauerhaft gültig. Eine Ausnahme besteht für notwendige, allgemeine Preiserhöhungen nach unseren AGB.
  • Warum gibt es bei den meisten Produkten nur eine automatische Standortauswahl?
    Um an Black Friday Produkte mit speziellen Konditionen anbieten zu können, mussten diese anders kalkuliert werden, als unsere regulären Produkte. Die Standortauswahl ist dafür entscheidend, je nach den Kapazitäten, die wir verfügbar haben. Ob hierbei automatisch das Rechenzentrum in Wien oder Nürnberg verwendet wird, hängt also von der verfügbaren Kapazität in den Rechenzentren ab. Würden wir eine Standortpräferenz bei unseren Black Friday Deals anbieten, könnten wir die günstigen Preise und speziellen Leistungen in dieser Form nicht ermöglichen.

Wir hoffen mit unseren Black Friday FAQ Klarheit zu schaffen und wünschen viel Spaß beim Schnäppchen Shoppen!


vspace.one e.V. – Referenzstory

03.11.2022, Kategorie: Kooperation

Grafik und Logo vspace.one e.V.Dieser Beitrag zeigt, wie mithilfe von Jenkins eine React-basierte Website von GitHub als Container auf einem virtuellen Server automatisiert bereitgestellt werden kann. Ziel ist es, allein durch eine Versionierungsoperation einer Änderung („Release“) diese neue Version innerhalb von kurzer Zeit automatisiert zu veröffentlichen.

Anlass des Artikels ist eine Case Study, die darstellt auf welche Weise wir als vspace.one e. V. den von netcup bereitgestellten Root-Server einsetzen, und um unseren Ansatz als Beispiel für ähnliche Anwendungszwecke zu teilen.

 

Grundlagen

Ein kurzer Überblick über die eingesetzten Technologien.

Jenkins

Jenkins ist ein von Kohsuke Kawaguchi entwickeltes, webbasiertes Tool zur Umsetzung von Buildautomatisierung. Das Open-Source Tool wird von der Community mit einer Vielzahl an Plugins unterstützt und kann von jedem selbst Betrieben werden, sodass es aufgrund seiner vielseitigen Einsetzbarkeit das meistgenutzte Tool für CI/CD ist. Durch viele, größtenteils kostenlose, Plugins kann Jenkins für jede aktuell verfügbare Programmiersprache verwendet werden. /

Mehr zu Jenkins.

git

git ist ein freies Versionsverwaltungssystem für Quellcode und wurde ursprünglich von Linus Torvalds für die Entwicklung des Linux Kernels entwickelt. Github dagegen ist eine Webplattform, um mit git versionierte Repositories zu verwalten und auch öffentlich tu teilen.

Viele weitere Projekte des vspace.one sind hier auf Github einzusehen. Alternativ zu Github gibt es auch Gitlab oder Gitea, welche sogar selbst gehosted werden können.

Container

VMs und Container sind beides Konzepte der Virtualisierung. Beide sind jedoch Lösungen für unterschiedliche Probleme. Während bei VMs tatsächliche Hardwareressourcen virtualisiert werden, arbeiten Container eine Abstraktionsebene höher und sind isolierte Prozesse innerhalb vom Host-Betriebssystem. Docker ist eine Open-Source Implementierung, welche der Bereitstellung von Anwendungen innerhalb portabler Container dient.

Docker Images sind üblicherweise auf hub.docker.com zu finden. Images von vspace.one.

React

React ist ein NodeJS Framework zur Entwicklung von One-Page-Web-Apps und wird im vspace.one zur Entwicklung der Website verwendet. Prinzipiell ist vieles in diesem Artikel auch auf Webanwendungen anwendbar, welche in anderen Sprachen und Frameworks entwickelt worden sind. Daher wird nicht genauer auf dieses Framework eingegangen.

Umsetzung

Zunächst sollen alle Abschnitte der Umsetzung einzeln beschrieben und zum Schluss zusammengesetzt und ganzheitlich betrachtet werden. Der Ansatz für jede Automatisierung läuft idR genauso ab: alle einzelnen Schritte sollten zuvor einmal manuell durchgeführt werden.

Versionierung während der Entwicklung

Die Versionierung findet über git statt, damit der Quelltext auch auf der Plattform github.com veröffentlicht werden kann. Verwendet wird hier ein einfacher Development-Branch-Workflow, der durch das nachfolgende Schaubild verdeutlicht wird:

Development-Branch-Workflow

Damit der Veröffentlichungsworkflow korrekt funktioniert, muss die Pipeline in Jenkins zwischen einem „fertigen“ und einem „unfertigen“ Zustand unterscheiden können. Das wird durch die meisten üblichen Git-Flows ermöglicht, da in der Regel ein funktionsfähiger und zur Veröffentlichung geeigneter Stand in einem master-Branch erwartet wird. Dev-Branches wie der bei uns als „beta“ bezeichnete Branch sind eine Erweiterung vom dauerhaften master-Branch, die einen Zwischenstand von neuen Änderungen vor einer Veröffentlichung sammeln. Auf diesen Branches ist es dann möglich mehrere Änderungen vor einer Veröffentlichung sowohl zu sammeln als auch die Kombination dieser zu testen.

Da es immer wieder vorkommt, dass manche Änderungen etwas mehr Arbeit und somit auch Zeit benötigen, werden oft weitere Branches aus dem beta-Branch abgezweigt. Diese konzentrieren sich meist nur auf eine bestimmte größere Änderung und vermeiden somit Konflikte und Komplexität, die bei gleichzeitiger Arbeit (vielleicht sogar mehrerer Personen) auftreten könnten.

Diese ganzen Änderungen müssen anschließend auch an Jenkins oder andere Automatisierungstools mitgeteilt werden. Dies ist auf Github möglich, indem für ein Repository Webhooks eingestellt werden. Webhooks sind simple HTTPS-POST-Aufrufe auf einen Webserver, welcher beispielsweise Jenkins sein könnte. Mit diesen Aufrufen werden diverse Informationen von Github mitgeliefert, wie beispielsweise der Grund für den Webhook, geänderte Branches usw. Auf Basis dieser Informationen kann dann über den weiteren Ablauf entschieden werden, zum Beispiel verschiedene Pipelines für den master oder den beta Branch auszuführen.

Webhooks

Erstellen/Bauen/Veröffentlichen des Containers

Da wir die Website als Gesamtpaket in einem Container-Image verpacken muss hierfür das nötige Tooling entsprechend konfiguriert werden. Grundsätzlich funktioniert das für alle Programmiersprachen. Es gibt natürlich von Sprache zu Sprache unterschiede, denn am Ende muss im Image das fertig kompilierte Programm oder in unserem Fall mit NodeJS inklusive dem vollständigen Quelltext und allen benötigten NPM-Paketen zur Verfügung stehen.

Am Anfang sollte immer der übliche Entwicklungsprozess betrachtet und festgehalten werden. Dieser ist für unsere Webseite recht einfach gehalten. Vorbedingung ist es Version 11 von NodeJS sowie NPM zur Verfügung zu haben. Den Check-out vom git-Repository können wir an dieser Stelle weglassen, da sich Jenkins später selbst darum kümmert. An der Stelle gehen wir einfach davon aus einen beliebigen funktionstüchtigen Branch vorliegen zu haben.

Um anschließend die benötigten NPM-Pakete zu laden und die Website zu starten sind nur diese vier Befehle nötig:

Diese Schritte müssen dann genauso oder zumindest ähnlich in der Dockerfile auftauchen.

In der Dockerfile gibt es noch die Besonderheit, dass die Umgebungen für install/build und für die spätere Ausführung getrennt werden. Hintergrund ist, dass wir im Produktionsbetrieb nur mit den Daten aus dem mit „npm build“ generierten build-Ordner arbeiten wollen. Mehr zum Dockerfile Format.

Damit lässt sich nun mit einem Befehl ein Container-Image erstellen:

Die Ausgaben zeigen dann den Buildprozess von NPM. Das resultierende Image kann nun auf eine beliebige Image-Registry hochgeladen werden. In unserem Fall ist das hub.docker.com und das image heißt vspaceone/web-react.

Update der Website auf dem Server

Im letzten Abschnitt wurde das Container-Image gebaut. Dieses sollte anschließend ausgeführt werden. Am einfachsten lässt sich das mit docker-compose erreichen. Dazu muss man eine Datei namens docker-compose.yml mit folgendem Inhalt anlegen:

version: “3”

Darin werden das auszuführende Container-Image selbst und der Port angegeben, unter welchem die Anwendung im Container erreichbar sein soll. Mit „docker-compose up -d“ kann der Container im Hintergrund gestartet werden.

Im docker-compose.yml ist zu sehen, dass die Anwendung damit auf Port 80 erreichbar sein wird. Das bedeutet auch, dass noch keine TLS-Verschlüsselung im Container stattfindet. In unserem Fall ist das in Ordnung, da auf dem Webserver aus Sicherheitsgründen sowieso kein Container ein direktes Portmapping bekommt. Stattdessen wird ein Reverseproxy davorgeschaltet, welcher in unserem Fall Traefik2 ist. Alternativ können natürlich auch andere Reverse Proxies verwendet werden, wie z. B. Apache oder NGINX. Soll eine Anwendung allerdings trotzdem direkt freigegeben werden, muss statt dem „expose“ Attribut „ports“ angegeben werden.

Bei dem Update handelt es sich lediglich um einen Neustart vom Container. Mit „docker-compose pull“ wird dabei die neue Image-Version heruntergeladen und mit „docker-compose up -d“ der Container gestoppt und mit dem neuen Image neugestartet.

Dieser Prozess muss ebenso automatisch ausführbar sein. In unserem Fall setzen wir wieder auf Webhooks, diesmal mit dem simplen Tool. Dieses empfängt Webhooks von Jenkins mit unterschiedlichen Daten, anhand derer WebhookD festgelegte Scripts wie in unserem Fall dieses ausführt:

Um alles sicher und minimalistisch zu gestalten, verwenden wir keinerlei Variablen die WebhookD aus den Webhooks bei der Ausführung von Skripten zur Verfügung stellt. Dadurch vermeidet man am besten Code-Injection. Zusätzlich ist die URL der Webhooks geheim und beinhaltet ein Secret damit ein Update nicht versehentlich oder böswillig ausgeführt werden kann.

Verbinden der einzelnen Phasen mit Jenkins

Alle bisherigen Phasen können nun in Jenkins mit Hilfe einer sogenannten Pipeline verbunden werden. Was dann an allen genannten Stellen passiert soll das folgende Diagramm noch zusammenfassen:

Verbindung Phasen mit Jenkins

  1. Aus dem Abschnitt „Versionierung“: Jenkins muss das git-Repository herunterladen. Das ist nicht nur wichtig, damit der Quellcode des Projekts gebaut werden kann, sondern weil sich im gleichen Repository auch das „Jenkinsfile“ befindet. Dieses beinhaltet wiederum Code, welcher die Jenkins Pipeline definiert, die dann durch Jenkins ausgeführt werden kann.
  2. Aus dem Abschnitt „Erstellen/Bauen/Veröffentlichen des Containers“: Jenkins führt hier den beschriebenen Bauvorgang anhand der im Jenkinsfile festgelegten Befehle aus.
  3. Veröffentlichung des erstellten Container-Image auf dem Docker-Hub durch die Jenkins-Pipeline.
  4. Aus dem Abschnitt „Update der Website auf dem Server“: Jenkins benachrichtigt den Server über eine Webhook, dass eine neue Version des Images auf dem Docker-Hub bereitsteht.
  5. Daraufhin lädt der Server das neue Image und tauscht den laufenden Container durch einen aktualisieren aus.

Damit Jenkins diesen Prozess kennt wird er in der Jenkinsfile definiert. Eine vereinfachte Version wird hier zur Veranschaulichung dargestellt.

Die Jenkinsfile wird in einer Groovy-basierten Domain Specific Language geschrieben, daher sieht die Syntax zunächst ungewöhnlich aus. Verwendet wird für dieses Beispiel die deklarative Syntax. Die geskriptete Syntax ist dagegen viel näher an regulärem Groovy-Code.

Jede deklarative Pipeline beginnt zuerst mit dem pipeline-Block:

In einer Pipeline soll die erste Deklaration stets festlegen auf welchem „Agent“ eine Pipeline ausgeführt werden soll. Für dieses Beispiel gehen wir nicht weiter drauf ein und geben an, einen beliebigen verfügbaren zu verwenden. Es ist natürlich in unserem Fall einer vorhanden, auf dem alle Tools wie git, docker und co. vorinstalliert sind.

Anschließend können Umgebungsvariablen festgelegt werden. In Jenkins können geheime Zugangsdaten im Credential-Storage gespeichert und auf Pipelines über ihre ID abgerufen werden. Damit werden diese nie im Klartext sichtbar, weder in der Pipeline noch in den Logs der Ausführung. Zudem legen wir gleich fest, wie das gebaute Image genannt werden soll.

Zuletzt soll nun der zuvor bereits ausführlich betrachtete Build-Ablauf definiert werden. Dieser wird in Stages unterteilt. Da wir sichergestellt haben, dass die Anwendung beim Build-Prozess des Image auch mitgebaut und „eingebacken“ wird, muss lediglich das Image gebaut und veröffentlicht werden. Dadurch ließe sich diese Pipeline grundsätzlich für alles Image-Builds mit Docker wiederverwenden.

In Jenkins ausgeführt sieht das folgendermaßen aus:

Jenkins

Die vollständige Pipeline:

Fazit

Diese Art von Ende zu Ende Automatisierung des Lebenszyklus hat eine breite Verwendung in der sogenannten DevOps Arbeitsweise. Ziel ist es die Entwickler (Developers) möglichst eng in den Administrationsprozess und die Systemadministratoren (IT oder auch Operations) der Anwendung möglichst eng in die Entwicklung einzubinden. Abgesehen von dem im Firmenumfeld zu erwartetem Mehrwert durch die Ermöglichung einer enormen Beschleunigung der Durchlaufzeiten von Änderungen und Features hat das besonders im Open-Source-Bereich und eben auch in Vereinen wie dem vspace.one positive Effekte.

Dadurch, dass der Lebenszyklus einer Anwendung durchgehend automatisiert wird, entsteht zusätzliches Feedback für die Maintainer eines Projekts bezüglich Lauffähigkeit und Qualität. Das und auch eine automatische Bereitstellung eines Testsystems für manuelle Tests oder gar die Ausführung automatischer Tests senkt die Hürde besonders für neue Beiträge von Einsteigern. Auch durch berufliche Erfahrungen einiger Mitglieder konnte dieser Prozess immer weiter optimiert werden.

Dieses ganze Setup betreiben wir im vspace.one e. V. auf einem von netcup bereitgestellten RS 2000 G9 Root Server bereits seit mehreren Jahren erfolgreich. Mittlerweile sind auch viele weitere Anwendungen zu Jenkins und der Webseite dazugekommen wie beispielsweise das Wikisystem (DokuWiki), ein Monitoringsystem (Prometheus, Grafana, Alertmanager), Gitea für kritischere oder interne Infrastrukturprojekte, Nextcloud, Mitgliederverwaltung, Mailing und noch einige mehr. Die 4 AMD-Epyc-Kerne, 16GB RAM sowie der 320GB große SSD-Speicher bieten für alle diese Anwendungen ausreichend Leistung.

Unsererseits ist es eine klare Empfehlung, sich in Containerisierung (z.B. mit Docker) einzulesen und diese in solchen Setups (einzelner Server, viele Anwendungen; oft auch bei privaten Homeservern anzutreffen) extensiv zu nutzen. Damit lässt sich eine klare Trennung zwischen Daten und der Anwendung selbst herstellen. So werden Updates, Backups und (z.B. mit Docker Compose) das Klonen und zu migrieren einzelner Anwendungen oder des ganzen Server super einfach!

Autoren: Damian Jesionek, Moritz Klaiber