GitLab CE: Continuous Integration, Jobs and Runners

NWS GitLab CE Hosting Zur Verwaltung von auf git basierenden Projekten bietet GitLab CE neben Issue Tracker und Wiki auch eine Continuous Integration (CI) Umgebung. Pro Projekt kann eine CI-Konfiguration mit Job Definitionen gesetzt werden, welche nach jedem Commit von sogenannten GitLab Runner ausgeführt werden.  Die klassische CI-Pipeline (vom Build bis zum Deploy) kann mit Hilfe von Stages abgebildet werden. Die CI-Konfiguration wird als Datei (.gitlab-ci.yml) im Projekt mit abgespeichert.

 

Im folgendem ein kleines Beispiel welches einen GitLab Runner mit Docker Executor verwendet:

.gitlab-ci.yml

image: debian:latest
stages:
  - build
  - test
  - deploy

job1:
  stage: build
  script: 'ping -c 4 nws.netways.de'

job2:
  stage: test
  script: 'ping -c 4 netways.de'

job3:
  stage: deploy
  script: 'echo "deploying"'

after_script:
  - 'echo "do some housekeeping"'

 

Mit jedem Commit im Projekt werden die definierten Stages build, test und deploy und deren Jobs durchlaufen und von GitLab CE natürlich auch schön visualisiert wird.

This slideshow requires JavaScript.

GitLab Runner können verschiedene Executor haben, beginnend mit der klassischen Shell über Parallels hinzu Docker und Kubernetes. Wem das alles zu viel ist kann auch unsere vorkonfiguriertes GitLab CE mit Runner ausprobieren oder bei unserem Manged Services nach einem maßgeschneidertem Angebot nachfragen.

Achim Ledermueller

Autor: Achim Ledermueller

Der Exil Regensburger kam 2012 zu NETWAYS, nachdem er dort sein Wirtschaftsinformatik Studium beendet hatte. In der Managed Services Abteilung ist unter anderem für die Automatisierung des RZ-Betriebs und der Evaluierung und Einführung neuer Technologien zuständig.

Externe Überwachung durch Icinga2 Satelliten bei NETWAYS Web Services

Über den NWS icinga2 Satellite wurde ja bereits im März berichtet. Dieser ermöglicht seine Dienste, wie z.B. HTTP,IMAP,POP3,SMTP, ICMP von extern zu überwachen. Durch das Cluster und Zonenkonzept von Icinga2 ist es eine Leichtigkeit diese Satelliten in seine bestehende Umgebung zu integrieren.

Unser Team Infrastruktur will sich nun diesen Service natürlich auch zu nutze machen und seine externe Überwachung mit Satelliten in Kalifornien und Tokyo erweitern. Das ermöglicht uns zum Beispiel Latenzen und Verfügbarkeit spezieller Services zu überwachen, die außerhalb von Europa aufgerufen werden.

Dieser Service wird dann auch allen unseren Kunden bei NETWAYS Managed Services zur Verfügung stehen.

Martin Schuster

Autor: Martin Schuster

Martin gehört zu den Urgesteinen bei NETWAYS und leitet zusammen mit Sebastian das Managed Services Team. Vorher war er bei 100world als Systems Engineer angestellt. Während er früher Nürnbergs Partykönig war, ist er nun stolzer Papa und verbringt seine Freizeit damit das Haus zu renovieren.

NETWAYS stellt sich vor -Daniel Neuberger

This entry is part of 31 in the series Mitarbeitervorstellung

                                   Name: Daniel Neuberger
Alter: 31
Position bei NETWAYS: Senior Consultant

Ausbildung: Fachinformatiker für Systemintegration
Bei NETWAYS seit: April 2017

Was genau gehört zu Deinem Aufgabenbereich bei NETWAYS?
Bei NETWAYS bin ich als Senior Linux Consultant für die Beratung und die Umsetzung beim Kunden vor Ort verantwortlich. Meine Themenschwerpunkte sind Icinga2, Elastic, Ansible und Bareos. Ein weiterer Aufgabenbereich ist das Halten von Trainings für Bareos und Icinga2.

Was macht Dir an Deiner Arbeit am meisten Spaß?

Wenn ich in immer unterschiedlichen Umgebungen und mit wechselnden Anforderungen mit dem Kunden gemeinsam eine entsprechende Lösung finden und umsetzen kann, dann bringt mir meine Arbeit Spaß. Das Arbeiten mit Menschen ist das was die Arbeit in der IT für mich nicht eintönig werden lässt. Auch ein gutes kollegiales Umfeld ist mir wichtig und steigert den Spaß bei der Arbeit entscheidend.

Wie bist Du zur IT und speziell Linux und anderer Open Source Software gekommen?

Zur IT als Beruf kam ich erst spät. Bis zu meiner ersten Lehre mit 21 beschränkte sich der Umgang mit Computern seit meinem 13 Lebensjahr auf das Spielen und dieses für solches entsprechend zu warten und zu rüsten. Dann kam die erste Lehre als käufmännischer Assistent für Informationsdatenverarbeitung und danach die zweite Lehre zum Fachinformatiker wo meine Leidenschaft für Linux entfacht wurde. Das erste größere Open Source Projekt, mit dem ich dann in Berührung kam, war Bacula, was auch der Grundstein für meine nach der Lehre folgenden Consulting-Jahre im Open Source Backup Bereich für Bacula und Bareos war.

Welche größeren oder besonders interessanten Projekte stehen zukünftig an?

42

Was machst Du, wenn Du mal nicht bei NETWAYS bist?

Wenn ich nicht bei NETWAYS bin, dann erhole ich mich gerne in der Natur beim Mountain Biken oder beim Arbeiten und Entspannen in unserem Garten hinter dem Haus. Dort stehen auch unsere Bienen, deren Pflege und Zucht ich mich gemeinsam mit meiner Frau widme. Wenn ich dann nicht mal vom Rad gestürzt bin oder die Bienen mich zerstochen haben, gehe ich auch noch auf die Matte und mache etwas Judo.

Wie geht es in Zukunft bei Dir weiter?
Das ist immer schwer zu sagen. Man kann die Zukunft nicht voraus sagen. Aber man kann sich diese vorstellen und versuchen, diese entsprechend der Vorstellung zu gestalten. In dieser Vorstellung freue ich mich langfristig darauf, bei NETWAYS meinem Beruf im Einklang mit meinem privaten Leben nachgehen zu können.

Daniel Neuberger

Autor: Daniel Neuberger

Nach seiner Ausbildung zum Fachinformatiker für Systemintegration und Tätigkeit als Systemadministrator kam er 2012 zum Consulting. Nach nun mehr als 4 Jahren Linux und Open Source Backup Consulting zieht es ihn in die Welt des Monitorings und System Management. Seit April 2017 verstärkt er das Netways Professional Services Team im Consulting rund um die Themen Elastic, Icinga und Bareos. Wenn er gerade mal nicht um anderen zu Helfen durch die Welt tingelt geht er seiner Leidenschaft für die Natur beim Biken und der Imkerei nach und kassiert dabei schon mal einen Stich.

Alt, aber bewährt

Immer wieder geht es in der IT um Vergleiche,  z.B. bei der Web-Entwicklung (NodeJS vs. PHP), der Datenhaltung (MongoDB vs. SQL-Datenbanken) oder auch scheinbaren Kleinigkeiten wie das Einlesen einer Datei in den Arbeitsspeicher.

Letztgenannter Vorgang würde bspw. in der Programmiersprache C unter Linux und anderen POSIX-Systemen wie folgt aussehen (Prüfungen auf Fehler habe ich der Übersichtlichkeit halber weggelassen):

void* read_file(char const *path, size_t *length) {
    int fd;
    struct stat stats;
    void *buf, *pos;
    ssize_t current_read;
    size_t remain;
    
    fd = open(path, O_RDONLY);
    fstat(fd, &stats);
    buf = malloc(stats.st_size);
 
    pos = buf;
    remain = stats.st_size;
    for (;;) {
        current_read = read(fd, pos, remain);        
        if (current_read == 0) {
            break;
        }
 
        *(char**)&pos += current_read;
        remain -= (size_t)current_read;
    }
    
    close(fd);
    *length = stats.st_size;
    return buf;
}

Die Alternative dazu wäre die Verwendung von mmap():

void* read_file_via_mmap(char const *path, size_t *length) {
    int fd;
    struct stat stats;
    void *addr, *buf;
    
    fd = open(path, O_RDONLY);
    fstat(fd, &stats);
    addr = mmap(NULL, stats.st_size, PROT_READ, MAP_SHARED, fd, 0);
    buf = malloc(stats.st_size);
 
    memcpy(buf, addr, stats.st_size);
 
    munmap(addr, stats.st_size);
    close(fd);
    *length = stats.st_size;
    return buf;
}

Deren Verfechter werben damit, dass die Anzahl der Systemaufrufe pro Datei konstant ist. Dem kann ich nicht widersprechen – die Datei wird mit open() geöffnet und mit mmap() in den Adressbereich integriert. Damit kann auf den Inhalt zugegriffen werden als befände er sich im Arbeitsspeicher. Das ermöglicht das anschließende Kopieren mit Hilfe von memcpy().

Aber das hilft einem nur weiter, wenn das auch tatsächlich messbar Zeit spart – dies ist definitiv nicht der Fall:

aklimov@ws-aklimov:~$ time ./read garbage

real    0m8.108s
user    0m0.000s
sys     0m3.664s
aklimov@ws-aklimov:~$ time ./mmap garbage

real    0m8.099s
user    0m0.652s
sys     0m3.000s
aklimov@ws-aklimov:~$

Das Lesen einer Datei (3 GB) hat im konkreten Fall nicht viel weniger Zeit in Anspruch genommen. Die Verwendung von mmap() hat lediglich ca. 660 Millisekunden von der linken in die rechte Tasche transferiert. Um genau zu sein – die Systemaufrufe der konventionellen Methode (strace):

open("garbage", O_RDONLY)               = 3                                                                                                                                                  
read(3, "\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0"..., 3221225472) = 2147479552                                                      
read(3, "\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0\377\0"..., 1073745920) = 1073745920                                                      
read(3, "", 0)                          = 0
close(3)                                = 0

… vs. mmap():

open("garbage", O_RDONLY)               = 3
mmap(NULL, 3221225472, PROT_READ, MAP_SHARED, 3, 0) = 0x7ff5423c6000
munmap(0x7ff5423c6000, 3221225472)      = 0
close(3)                                = 0

Zwar benötigt die konventionelle Methode im konkreten Fall einen Systemaufruf mehr, aber angesichts der Dateigröße ist das meiner Meinung nach trotzdem vergleichsweise effizient.

Fazit

Nicht alles was glänzt ist auch Gold. Und mit Kaffeesatzlesen ist niemandem geholfen.

Alexander Klimov

Autor: Alexander Klimov

Alexander hat Ende 2013 mit einem Praktikum bei NETWAYS gestartet. Als leidenschaftlicher Programmierer und begeisterter Anhänger der Idee freier Software, hat er sich dabei innerhalb kürzester Zeit in die Herzen seiner Kollegen im Development geschlichen. Wäre nicht ausgerechnet Gandhi sein Vorbild, würde er von dort aus daran arbeiten, seinen geheimen Plan, erst die Abteilung und dann die Weltherrschaft an sich zu reißen, zu realisieren - tut er aber nicht. Stattdessen beschreitet er mit der Arbeit an Icinga Web 2 und seiner Ausbildung bei uns friedliche Wege.

Support-Chat für die eigene Website – mit Rocket.Chat

Rocket.Chat bietet neben der umfangreichen Vernetzung bestehender Teams auch ein ganz besonderes Feature, den Supportchat. Dieser eignet sich für Websitenbetreiber, um direkt und ohne Wartezeit mit dem Besucher kommunizieren zu können. In diesem Artikel gehe ich einmal auf die Einrichtung und Einbindung eines solchen Supportchats auf der eigenen Website ein.

Installation
Zu Beginn muss Rocket.Chat installiert und auf einer Public-Domain erreichbar gemacht werden. Diese Domain muss auch für die weitere Verwendung bei der Einrichtung von Rocket.Chat angegeben werden.

Einrichtung
Die Einrichtung ist mit wenigen Klicks erledigt. Wichtig: In jedem Fall sollte die manuelle Freischaltung des Userkontos (der Support-Kollegen) erfolgen, anderenfalls kann sich jeder einfach registrieren und den Support-Chat als Dritter auch unterstützen. Zu finden ist diese Option unter Administration->Accounts->Registration “

Einbindung
Nun geht es eigentlich schon zum letzten Schritt, der Einbindung auf die Website. In der Administrationsoberfläche des Livechats ist nun der Quellcode zum Einbetten des eigenen Iframes vorbereitet. Dieses Script muss bei auf jeder Webiste auftauchen, auf der der Supportchat erscheinen soll. Das Ganze sieht dann in etwa so aus.

<!-- Start of Rocket.Chat Livechat Script -->
<script type="text/javascript">
(function(w, d, s, u) {
 w.RocketChat = function(c) { w.RocketChat._.push(c) }; w.RocketChat._ = []; w.RocketChat.url = u;
 var h = d.getElementsByTagName(s)[0], j = d.createElement(s);
 j.async = true; j.src = 'https://222-rocketchat-63af3-web.nws.netways.de/packages/rocketchat_livechat/assets/rocket-livechat.js';
 h.parentNode.insertBefore(j, h);
})(window, document, 'script', 'https://222-rocketchat-63af3-web.nws.netways.de/livechat');
</script>
<!-- End of Rocket.Chat Livechat Script -->

Am Ende kann noch etwas am Erscheinungsbild geschraubt werden, damit sich der Chat sauber in die eigene Seite einfügt. Fertig! Um weitere Agents als Supportkollegen in den Chat aufzunehmen, müssen diese noch in der Admin-Bereich des Livechats als “Livechat-Agents” hinzugefügt werden.

Wie werden die Anfragen verteilt?
Falls mehrere Kollegen im Livechat zur Verfügung stehen, so werden die Anfragen Round Robin an diese verteilt. Wenn kein Kollege online ist, fordert der Livechat etwas Geduld vom Besucher und schickt eine E-Mail an den Websitenbetreiber mit den eingegebenen Kontaktdaten.

Aus Kundensicht zu testen ist unser toller Livechat in seiner vollen Pracht auf unserer NWS-Website (wir freuen uns über jede Anfrage). Dort kann selbiger auch direkt als eigene Instanz für 30 Tage völlig kostenfrei und unverbindlich getestet werden – ohne Einschränkungen!

Unsere Kunden profitieren stets von den aktuellsten Software-Versionen, höchster Verfügbarkeit, freundlichem Support und fairen Preisen. Bei allen unserer NWS-Instanzen erhalten Sie natürlich vollen Administrationszugriff und teilen sich die Applikation nicht mit anderen Kunden. Alle Applikationen stehen binnen Sekunden ready-to-use zur Verfügung.

Übrigens, für WordPress und andere Applikationen gibt es bereits fertige Rocket.Chat Livechat Plugins.

Interesse? erfahren Sie mehr über unsere Rocket.Chat-Pakete

 

Georg Mimietz

Autor: Georg Mimietz

Georg kam im April 2009 zu NETWAYS, um seine Ausbildung als Fachinformatiker für Systemintegration zu machen. Nach einigen Jahren im Bereich Managed Services ist er in den Vertrieb gewechselt und kümmerte sich dort überwiegend um die Bereiche Shop und Managed Services. Seit 2015 ist er als Teamlead für den Support verantwortlich und kümmert sich um Kundenanfragen und die Ressourcenplanung. Darüber hinaus erledigt er in Nacht-und-Nebel-Aktionen Dinge, für die andere zwei Wochen brauchen.

OSDC 2017 Countdown – 5 weeks until Berlin

This entry is part 6 of 17 in the series OSDC 2017 Countdown

OSDC-Countdown 2017: Inspecting Security of Docker formatted Container Images by Ján Lieskovský


OSDC 2017 | Simplifying Complex IT Infrastructures with Open Source | May 16 – 18, 2017

Join us in Berlin and be part of the Open Source Data Center Conference 2017, where internationally recognized Open Source specialists report on the latest developments in Data Center solutions and share their experiences and best practices with experienced administrators and architects. This is also a great opportunity for you to deepen and expand your own know-how in a relaxed atmosphere as well as to establish contacts and to get to know the Open Source community.

Next to the speeches, you have the opportunity to take place in one of three interesting hands-on workshops on May 16.

More information and your tickets can be found on: www.osdc.de

See you in Berlin!

Julia Hackbarth

Autor: Julia Hackbarth

Julia ist seit 2015 bei NETWAYS. Sie hat im September ihre Ausbildung zur Kauffrau für Büromanagement gestartet. Etwas zu organisieren macht ihr großen Spaß und sie freut sich auf vielseitige Herausforderungen. In ihrer Freizeit spielt Handball eine große Rolle: Julia steht selbst aktiv auf dem Feld, übernimmt aber auch gerne den Part als Schiedsrichterin.