Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Gitlab CentOS 7 - API (curl)
Gitlab ist ein, in der Community Edition unter einer MIT-Lizenz zur Verfügung gestelltes System, zur Verwaltung von Git-Repositorys im Browser, was den unentgeltlichen Betrieb auf einem eigenen Server ermöglicht.
Nachfolgend soll beschrieben werden, wie ein Zugriff auf die GitLab API mittels einer *NIX - shell
(hier bash
) unter Nutzung des Befehls curl
durchgeführt werden kann. (Inklusive Authentifizierung gegen einen bestehenden .htaccess
-Schutz)
Gitlab gibt es ebenfalls in einer kostenpflichtigen Enterprise Edition
Beschreibung | Externer Link |
---|---|
Homepage | https://gitlab.com/ |
Dokumentation | https://about.gitlab.com/documentation/ |
Omnibus Doku. | https://docs.gitlab.com/omnibus/ |
Installation | https://about.gitlab.com/downloads/ |
Versionsvergleich | https://about.gitlab.com/features/#compare |
API Dokumentation | https://docs.gitlab.com/ee/api/README.html |
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root
zu werden, geben Sie bitte nachfolgenden Befehl ein:
$ su - Password:
Voraussetzungen
Als Voraussetzung für die hier, nachfolgend dargestellte Installation von Gitlab sind folgende Komponenten erforderlich:
-
- Siehe auch den internen Link: GitLab CentOS 7
Nachfolgende rpm
-Pakete sind als Abhängigkeit erforderlich und werden ebenfalls benötigt:
Vorbereitung
Um Zugriff auf die GitLab API mittels einer *NIX - shell
(hier bash
) unter Nutzung des Befehls curl
zu erlangen sin zusätzlich zu den genannten Voraussetzungen auch die
- Erstellung eines Access Tokens
durch den Benutzer in dessen User Settings | Access Tokens
(Benutzereinstellungen | Zugriff „Token“) erforderlich.
Access Tokens: Erstellen
Nachfolgende Beschreibung zeigt, wie ein Access Token über die Gitlab-Web-Oberfläche erstellt werden kann.
Schritt 1
Nach erfolgreicher Anmeldung, muss im oberen Menü das Symbol für den Benutzer ausgewählt werden und dort der Menüpunkt [Settings] (Einstellungen) ebenfalls ausgewählt werden, wie nachfolgende Bildschirmkopie zeigt:
Schritt 2
Anschließend wird im linken Bildschirmbereich der Menüpunkt [Access Tokens] ausgewählt, wie nachfolgende Bildschirmkopie zeigt:
Schritt 3
Hier muss nun ein Name für den Access Token vergeben werden und der Zugriff auf die api erlaubt werden, bevor die Schaltfläche [Create personal access token] ausgewählt wird, wie ebenfalls nachfolgende Bildschirmkopie zeigt:
Feld | Standard Wert | Neuer Wert | Beschreibung |
---|---|---|---|
Name | API Token | Name des Access Token | |
Scopes | api | api ✔ | Zugriff auf die api gestatten |
Schritt 4
Nachdem der Access Token erfolgreich erstellt wurde, kann dieser in die Zwischenablage des Betriebssystems kopiert werden, wie nachfolgende Bildschirmkopie zeigt:
WICHTIG - Bitte den Access Token sicher speichern, da dieser NICHT mehr in der Gitlab-Web-Oberfläche ersichtlich ist !!!
HINWEIS - Falls der Access Token vergessen wurde, kann der „vergessene“ gelöscht und ein neuer erstellt werden.
Access Token |
---|
j9rnycMbMSCyjKddBq8C |
Schritt 5
Anschließend ist der Access Token nutzbar - aber über die Gitlab-Web-Oberfläche nicht mehr ersichtlich, wie nachfolgende Bildschirmkopie zeigt:
API: Abfragen
Nachfolgende Beispiele zeigen den Aufbau für den Befehl curl
und wie dieser dazu verwendet werden kann, Abfragen gegen die GitLab API durchzuführen.
Nachfolgende Erklärungen beschreiben den Aufbau des curl
-Befehls-Syntax anhand dem nachfolgendem Beispiel:
# curl -s -u "user" --header "PRIVATE-TOKEN: j9rnycMbMSCyjKddBq8C" "https://serverC8.tachtler.net/api/v4/version" | python -mjson.tool Enter host password for user 'user':
Erzeugt die Ausgabe der aktuellen Version von Gitlab:
- Siehe auch zur Beschreibung, den nachfolgenden externen Link: https://docs.gitlab.com/ee/api/version.html
{ "revision": "c90ae59", "version": "11.5.1" }
Nachfolgend der Befehlsaufbau:
Befehl/Paramater | Beschreibung |
---|---|
curl | Der Befehl curl selbst |
-s | Silent - Unterdrückt jegliche Ausgaben die vom Befehl curl selbst sind |
-u ”[username]” | User - (Benutzername) aus Gitlab |
−−header ”[token]” | Access Token-Angabe für den Zugriff auf Gitlab |
[URL] | URL mit Angabe der Informationen, welche ermittelt werden sollen |
| | Umleiten der Ausgabe in eine pipe (Kanal/Rohr) zu dem nachfolgendem Befehl |
python −mjson.tool | Python-Befehlsaufruf zur JSON Formatierten Ausgabe |
HINWEIS - Der Paramater -u [username]
muss nur angegeben werden, wenn ein .htaccess
-Schutz besteht!
HINWEIS - Eine Passwortabfrage erfolgt nur, wenn der Paramerter -u [username]
angegeben wurde!
HINWEIS - Die Passwortabfrage bezieht sich nur auf die .htaccess
-Abfrage, falls vorhanden!
HINWEIS - Der Benutzer -u [username]
aus der .htaccess
-Abfrage kann vom Gitlab-Benutzer differieren!
HINWEIS - Der Gitlab-Benutzer wird nur durch den Access Token identifiziert!
Eine Liste der Möglichen Abfragen, kann unter nachfolgendem externen Link eingesehen werden:
*¹ Project API
*¹ HINWEIS - Ausserhalb der alphabetischen Reihenfolge, das dies ein Bestandteil für nachfolgende Befehle ist!
Nachfolgende Erklärungen beschreiben den Aufbau des curl
-Befehls-Syntax zur Ermittlung aller Projekte aus Gitlab:
# curl -s -u "user" --header "PRIVATE-TOKEN: j9rnycMbMSCyjKddBq8C" "https://gitlab.tachtler.net/api/v4/projects/" | python -mjson.tool | grep -e \"id\" -e \"web_url\" Enter host password for user 'user':
Erzeugt die Ausgabe der aktuellen Projekte von Gitlab:
- Siehe auch zur Beschreibung, den nachfolgenden externen Link: https://docs.gitlab.com/ee/api/projects.html
"id": 8, "id": 2, "id": 2, "web_url": "https://serverC8.tachtler.net/gitlabuser" "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter",
Nachfolgend der Befehlsaufbau:
Befehl/Paramater | Beschreibung |
---|---|
curl | Der Befehl curl selbst |
-s | Silent - Unterdrückt jegliche Ausgaben die vom Befehl curl selbst sind |
-u ”[username]” | User - (Benutzername) aus Gitlab |
−−header ”[token]” | Access Token-Angabe für den Zugriff auf Gitlab |
[URL] | URL mit Angabe der Informationen, welche ermittelt werden sollen |
| | Umleiten der Ausgabe in eine pipe (Kanal/Rohr) zu dem nachfolgendem Befehl |
python −mjson.tool | Python-Befehlsaufruf zur JSON Formatierten Ausgabe |
| | Umleiten der Ausgabe in eine pipe (Kanal/Rohr) zu dem nachfolgendem Befehl |
grep -e \„id\“ -e \„web_url\“ | Filter der Ausgabe nach ”id” und ”web_url” |
HINWEIS - Die Projekt-ID ist immer die am weitesten links stehende, hier: ”id”: 8,
!
HINWEIS - Weiter eingerückte ID's sind die des „Parent“, hier: '”id”: 2,'' !
Pipelines API
Nachfolgende Abfragen gegen die API beziehen sich auf den CI / CD Runner und dessen
HINWEIS - Zur Ermittlung der Projekt-ID - siehe nachfolgenden internen Link:
Nachfolgende Möglichkeiten der Informationsbeschaffung können durchgeführt werden:
Möglichkeit | Externer Link |
---|---|
Auflistung der Projektpipelines | https://docs.gitlab.com/ee/api/pipelines.html#list-project-pipelines |
Eine einzelne Pipeline abfragen | https://docs.gitlab.com/ee/api/pipelines.html#get-a-single-pipeline |
Erstellen einer neuen Pipeline | https://docs.gitlab.com/ee/api/pipelines.html#create-a-new-pipeline |
Wiederholung von Aufträgen in einer Pipeline | https://docs.gitlab.com/ee/api/pipelines.html#retry-jobs-in-a-pipeline |
Abbrechen eines Pipeline-Auftrags | https://docs.gitlab.com/ee/api/pipelines.html#cancel-a-pipelines-jobs |
Eine Pipeline löschen | https://docs.gitlab.com/ee/api/pipelines.html#delete-a-pipeline |
- Hier geht es weiter… / To be continued …