Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:gitlab_centos_7_-_api_curl

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

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:

Nachfolgende rpm-Pakete sind als Abhängigkeit erforderlich und werden ebenfalls benötigt:

  • curl - ist im base-Repository von CentOS enthalten und normalerweise bereits installiert

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:

Gitlab - User - Settings

Schritt 2

Anschließend wird im linken Bildschirmbereich der Menüpunkt [Access Tokens] ausgewählt, wie nachfolgende Bildschirmkopie zeigt:

Gitlab - User - Settings - Access Tokens

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:

Gitlab - User - Settings - Access Tokens - Create personal access token

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:

Gitlab - User - Settings - Access Tokens - Create personal access token - Created

:!: 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:

Gitlab - User - Settings - Access Tokens - Create personal access token - Created - Overview

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:

{
    "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, da 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://serverC8.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:

        "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:

Auflistung der Projektpipelines

Nachfolgende Erklärungen beschreiben den Aufbau des curl-Befehls-Syntax zur Auflistung aller Projektpipelines, eines bestimmten Projekts mit der entsprechenden Projekt-ID aus Gitlab:

# curl -s -u "user" --header "PRIVATE-TOKEN: j9rnycMbMSCyjKddBq8C" "https://serverC8.tachtler.net/api/v4/projects/8/pipelines" | python -mjson.tool
Enter host password for user 'user':

Erzeugt die Ausgabe der aktuellen Pipelines des Projekts 8 von Gitlab:

[
    {
        "id": 100,
        "ref": "development",
        "sha": "773b0e8bfb601567d38c9bda72e2b6fc9f614504",
        "status": "success",
        "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter/pipelines/100"
    },
    {
        "id": 99,
        "ref": "development",
        "sha": "2f16427b80aac4bb9afca89734243ab255762c9e",
        "status": "success",
        "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter/pipelines/99"
    },
    {
        "id": 98,
        "ref": "master",
        "sha": "477470a96c79e521a8cbd8f7282e73c2b15ea5e4",
        "status": "success",
        "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter/pipelines/98"
    },
    {
        "id": 97,
        "ref": "development",
        "sha": "0facb923e1d665d0b9b3604502b34cb765ef2232",
        "status": "success",
        "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter/pipelines/97"
    },
    {
        "id": 96,
        "ref": "development",
        "sha": "d5cd8f2a7c125d23adb6f5bfd2a07b78c73d67d3",
        "status": "success",
        "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter/pipelines/96"
    },
    {
        "id": 95,
        "ref": "development",
        "sha": "abc956e74618f26d76cdd87a4a226afd944103cc",
        "status": "failed",
        "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter/pipelines/95"
    },
    {
        "id": 94,
        "ref": "development",
        "sha": "e1b86374e5f04eb8ffa647295854d94e3bcaa013",
        "status": "failed",
        "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter/pipelines/94"
    }
]

Eine einzelne Pipeline abfragen

Nachfolgende Erklärungen beschreiben den Aufbau des curl-Befehls-Syntax zur Auflistung einer Projektpipelines, eines bestimmten Projekts mit der entsprechenden Projekt-ID aus Gitlab:

# curl -s -u "user" --header "PRIVATE-TOKEN: j9rnycMbMSCyjKddBq8C" "https://serverC8.tachtler.net/api/v4/projects/8/pipelines/100" | python -mjson.tool
Enter host password for user 'user':

Erzeugt die Ausgabe einer Pipelines des Projekts 8 von Gitlab:

{
    "before_sha": "2f27427b80aac4bb9afca88734243bd25576229e",
    "committed_at": null,
    "coverage": null,
    "created_at": "2018-12-08T06:54:36.800Z",
    "duration": 8,
    "finished_at": "2018-12-08T06:54:48.963Z",
    "id": 100,
    "ref": "development",
    "sha": "772b0e8bfb601467d38c9cda72e2b6fc7f614504",
    "started_at": "2018-12-08T06:54:38.748Z",
    "status": "success",
    "tag": false,
    "updated_at": "2018-12-08T06:54:48.978Z",
    "user": {
        "avatar_url": null,
        "id": 2,
        "name": "Klaus Tachtler",
        "state": "active",
        "username": "gitlabuser",
        "web_url": "https://serverC8.tachtler.net/klaus"
    },
    "web_url": "https://serverC8.tachtler.net/gitlabuser/jmilter-footermilter/pipelines/100",
    "yaml_errors": null
}

Eine Pipeline löschen

:!: HINWEIS - Erst ab Gitlab Version 11.6.x verfügbar!

Nachfolgende Erklärungen beschreiben den Aufbau des curl-Befehls-Syntax zur Löschung einer Projektpipelines, eines bestimmten Projekts mit der entsprechenden Projekt-ID aus Gitlab:

# curl -s -u "user" --header "PRIVATE-TOKEN: j9rnycMbMSCyjKddBq8C" --request "DELETE" "https://serverC8.tachtler.net/api/v4/projects/8/pipelines/100" | python -mjson.tool
Enter host password for user 'user':

Erzeugt die Ausgabe zur Löschung einer Pipelines des Projekts 8 von Gitlab:

 

Nachbereitung

Nachdem alle GitLab API-Abfragen durchgeführt worden sind, kann der Access Token mit nachfolgendem Vorgehen widerrufen werden.

Access Token: widerrufen

Nachfolgende Beschreibung zeigt, wie ein Access Token über die Gitlab-Web-Oberfläche widerrufen 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:

Gitlab - User - Settings

Schritt 2

Anschließend wird im linken Bildschirmbereich der Menüpunkt [Access Tokens] ausgewählt, wie nachfolgende Bildschirmkopie zeigt:

Gitlab - User - Settings - Access Tokens

Schritt 3

Anschließend kann der Access Token in der Auflistung aller Access Token widerrufen werden, indem die Schaltfläche [Revoke], wie nachfolgende Bildschirmkopie zeigt:

Gitlab - User - Settings - Access Tokens - Create personal access token - Overview

Schritt 4

Nachdem der Access Token widerrufen wurde, wird dies mit nachfolgender Anzeige bestätigt:

Gitlab - User - Settings - Access Tokens - Create personal access token - revoked

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/gitlab_centos_7_-_api_curl.txt · Zuletzt geändert: 2018/12/09 10:47 von klaus