Benutzer-Werkzeuge

Webseiten-Werkzeuge


docu:gitlab-ci

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
docu:gitlab-ci [2017/11/22 08:05]
sage
docu:gitlab-ci [2018/05/14 17:43] (aktuell)
sage [Während des Build-Prozesses Zugriff auf anderes Gitlab-Repo gewähren] Namen des Scriptes synchronisiert
Zeile 1: Zeile 1:
 +====== Gitlab CI/CD ======
 +
 +Gitlab bietet eine automatische Continous Build/​Continous Deployment Pipeline. Damit wird in jedem, entsprend vorbereiteten,​ Projekt nach einer Änderung des Git-Repositories automatisch der Code ausgechecked,​ gebaut, evtl. Tests durchgeführt und in ein ausführbares Format gebracht. Wenn diese Schritte erfolgreich sind, kann das fertige Programm auch in der [[:​docu:​informatikcomputecloud|ICC]] automatisch ausgeführt werden und Messdaten direkt in Gitlab beobachtet werden.
 +
 +Im Wurzelverzeichnis eines Projektes muss die Datei ''​.gitlab-ci.yml''​ existieren. Diese wird dann mit im gemeinsamen GitLab-Runner über Kubernetes innerhalb der ICC ausgeführt. Für Spezialfälle können auch eigene Runner angebunden werden. Siehe [[:​docu:​gitlab-ci#​eigene_build_runner|ensprechenden Abschnitt]] weiter unten.
 +
 ===== Minimales .gitlab-ci.yml ===== ===== Minimales .gitlab-ci.yml =====
  
Zeile 34: Zeile 40:
   - Ein SSH Schlüsselpaar erzeugen. Dies sollte auf keinen Fall ihr persönliches Paar sein.   - Ein SSH Schlüsselpaar erzeugen. Dies sollte auf keinen Fall ihr persönliches Paar sein.
   - Den öffentlichen Schlüssel legen Sie in dem Projekt **auf das zugegriffen werden soll** ​ als Deploy Key ab. Öffnen Sie dazu im Sidebar die Seite "''//​Settings | Repository//''"​ und erweitern den Abschnitt "''//​Deploy Keys//''"​. Legen Sie nun einen neuen Deploy Key an. Hier finden Sie auch einen Link auf detailierte Informationen zur Erzeugung und Formatierung der benötigten Schlüssel.   - Den öffentlichen Schlüssel legen Sie in dem Projekt **auf das zugegriffen werden soll** ​ als Deploy Key ab. Öffnen Sie dazu im Sidebar die Seite "''//​Settings | Repository//''"​ und erweitern den Abschnitt "''//​Deploy Keys//''"​. Legen Sie nun einen neuen Deploy Key an. Hier finden Sie auch einen Link auf detailierte Informationen zur Erzeugung und Formatierung der benötigten Schlüssel.
-  - Den Private ​Schlüssel legen in das Projekt **von dem aus zugegriffen werden soll** ​ als geheime Variable ab. Öffnen Sie dazu im Sidebar die Seite "''//​Settings | CI/​CD//''"​ und erweitern den Abschnit "''//​Secret variables//''"​. Legen Sie eine Variable mit dem Namen "​SSH_PRIVATE_KEY"​ an und füllen Sie deren Wert auf den private Key.+  - Den private ​Schlüssel legen Sie in das Projekt **aus dem heraus ​zugegriffen werden soll** ​ als geheime Variable ab. Öffnen Sie dazu im Sidebar die Seite "''//​Settings | CI/​CD//''"​ und erweitern den Abschnit "''//​Secret variables//''"​. Legen Sie eine Variable mit dem Namen "​SSH_PRIVATE_KEY"​ an und füllen Sie deren Wert auf den private Key.
   - In dem Projekt von dem aus zugegriffen werden soll fügen, Sie folgenden Abschnitt zur ''​.gitlab-ci.yml'' ​ hinzu (oder erweitern ihn, wenn Sie schon einen solchen Abschnitt haben:   - In dem Projekt von dem aus zugegriffen werden soll fügen, Sie folgenden Abschnitt zur ''​.gitlab-ci.yml'' ​ hinzu (oder erweitern ihn, wenn Sie schon einen solchen Abschnitt haben:
  
Zeile 40: Zeile 46:
 before_script:​ before_script:​
   # setup SSH if on ubuntu   # setup SSH if on ubuntu
-  - eval $(bash ./​scripts/​setup-ssh-on-ubuntu.sh "​$SSH_PRIVATE_KEY"​)+  - eval $(bash ./​scripts/​setup-ssh.sh "​$SSH_PRIVATE_KEY"​)
 </​code>​ </​code>​
-  - Folgendes Script unter ''​scripts/​setup-ssh.sh'' ​ hinzufügen:​ 
  
-<​code>#​!/​bin/​bash+  - Folgendes Script dem zugreifenden Projekt unter ''​scripts/​setup-ssh.sh'' ​ hinzufügen:​ 
 + 
 +<​code>​ 
 +#!/bin/bash
 # #
 # set up the SSH agent to access the repositories of the dependencies of # set up the SSH agent to access the repositories of the dependencies of
Zeile 59: Zeile 67:
   debian|ubuntu)   debian|ubuntu)
     # Install ssh-agent if not already installed, it is required by Docker.     # Install ssh-agent if not already installed, it is required by Docker.
-    which ssh-agent >/​dev/​null || ( apt-get update -y && apt-get install openssh-client -y )+    which ssh-agent>/​dev/​null || ( apt-get update -y && apt-get install openssh-client -y )
  
     # Run ssh-agent (inside the build environment)     # Run ssh-agent (inside the build environment)
Zeile 65: Zeile 73:
  
     # need info here too     # need info here too
-    eval $AGENT_SETUP >/​dev/​null+    eval $AGENT_SETUP>/​dev/​null
  
     # Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store     # Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
Zeile 79: Zeile 87:
     mkdir -p ~/.ssh     mkdir -p ~/.ssh
  
-    [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n"​ > ~/​.ssh/​config+    [[ -f /​.dockerenv ​|]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n">​ ~/​.ssh/​config
   ;;   ;;
   *)   *)
Zeile 86: Zeile 94:
 esac esac
 </​code>​ </​code>​
 +
  
 ===== Docker Images in Gitlab Build bauen ===== ===== Docker Images in Gitlab Build bauen =====
docu/gitlab-ci.1511334348.txt.gz · Zuletzt geändert: 2017/11/22 08:05 von sage