Skip to content

Semaphore - Die API

Verschoben Ansible
  • Nehmen wir mal an, wir haben bei Gitlab oder auch Github, oder was auch immer, ein Repo das wir gelegentlich bearbeiten und das danach automatisch auf einen Server soll. So was ist ja in der Entwicklung von Software normal. Dafür gibt es ganz viele Möglichkeiten, ich habe mir gedacht das kann man sicherlich auch mit einem Playbook realisieren. Mittlerweile, nach vielen Kopfschmerzen, funktioniert es.

    PyCharm (commit & push) -> Gitlab -> Semaphore (Playbook) -> Server mit Applikation

    Wir müssen also mit Gitlab das Playbook auf dem Semaphore Server triggern. Meine ersten Versuche zielten darauf ab, meinen lokalen Semaphore Server zu triggern. Dazu wollte ich die IPv6 Adresse benutzen. Dies scheiterte aber die ganze Zeit.

    Die Docker Container, die Gitlab startet, scheinen keine IPv6 Funktionalität zu besitzen!?? Da ich aber schauen wollte, ob das so klappt wie ich mir das vorstellte, habe ich einen Semaphore Server im Netz aufgesetzt. Und da funktionierte es (IPv4 & IPv6) einwandfrei.

    Ok, die Doku zur API (Application Programming Interface) findet man -> https://docs.ansible-semaphore.com/administration-guide/api

    Ganz wichtig ist das Thema Authentifizierung. Damit ein User auf die API zugreifen kann, benötigt dieser meistens einen s.g. Token. Den kann man mit der API auch erzeugen, aber zuerst muss man sich mal anmelden, an der API.

    LOGIN

    curl -v -c /tmp/semaphore-cookie -XPOST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{"auth": "YOUR_LOGIN", "password": "YOUR_PASSWORD"}' \
    http://localhost:3000/api/auth/login
    

    Login & Passowort sind die Login Daten Eures Semaphores Users. Danach ist man angemeldet und kann weiter arbeiten.

    TOKEN erzeugen

    curl -v -b /tmp/semaphore-cookie -XPOST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    http://localhost:3000/api/user/tokens
    
    
    curl -v -b /tmp/semaphore-cookie \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    http://localhost:3000/api/user/tokens
    

    Danach erscheint in der Konsole die Ausgabe und man kann sich den Token kopieren. Damit kann man dann weiter arbeiten. Beispiel aus der Doku.

    [{"id":"YOUR_ACCESS_TOKEN","created":"2017-03-11T13:13:13Z","expired":false,"user_id":1}]
    

    Um jetzt mit Gitlab einen Task anzustoßen, braucht man diesen curl-String.

    curl -v -XPOST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
    -d '{"template_id": 1}' \
    http://localhost:3000/api/project/1/tasks
    

    Ok, das bekommt man hin, oder? War für mich leider doch ein sehr lange Sessions des Ausprobierens usw. Das Problem war die Formatierung des curl-Strings bei gitlab. Ok, weiter geht es.

    Gitlab

    Wir legen im Gitlab Projekt eine Datei mit dem Namen

    gitlab-ci.yml
    

    an. Die Testdatei hat folgenden Inhalt.

    # Here we test to trigger a semaphore task from gitlab runner.
    stages:
      - deploy
    
    deploy:
      stage: deploy
    
      script:
        # $SEMAPHORE_API_TOKEN is stored in gitlab Settings/ CI/CD / Variables
        >
        curl -v -XPOST -H 'Content-Type: application/json' -H 'Accept: application/json' -H "Authorization: Bearer $SEMAPHORE_API_TOKEN " -d '{"template_id": 2}' https://<DOMAIN>/api/project/2/tasks
      only:
        - master  # Specify the branch to trigger the pipeline (adjust as needed)
    

    Ich wollte den Code eigentlich lesbar reinschreiben, also mit \ mehrere Zeilen. Aber alle meine Versuche sind gescheitert, egal was ich im Internet gefunden habe oder auch bei ChatGPT, es ging erst als ich alles in eine Zeile geklatscht habe. Naja, dann halt nicht.

    Wie ihr seht, habe ich zu dem Token was kommentiert.

    # $SEMAPHORE_API_TOKEN is stored in gitlab Settings/ CI/CD / Variables
    

    Unter dem Pfad kann man Token usw. ablegen und ihnen einen Namen geben. Damit kann man die sensiblen Informationen aus dem Code raushalten. Wenn man dann noch in den Einstellungen, den Token auf masked setzt, wird er auch in den Logs usw. nicht angezeigt, sondern maskiert.

    > authorization: Bearer [MASKED]
    

    Das sieht ja schon gut aus 🙂 Wenn man nun was in Pycharm editiert und das per commit & push nach gitlab befördert, führt gitlab nach der Ausführung der Befehle das File gitlab-ci.yml aus.
    Und das sorgt dafür, das der entsprechende Task auf dem Semaphore Server ausgeführt wird.

    Ein wunderbares Spielzeug 🙂 Viel Spaß beim Spielen!

    Wer Fehler findet, bitte kommentieren. Ich mag es nicht, wenn unnützes Zeug im Internet steht.

  • Ich hasse schlecht lesbaren Code, scheint man sich bei Python so anzugewöhnen. Habe da nochmal was mit der langen Zeile getestet.

    stages:
      - deploy
    
    deploy:
      stage: deploy
    
      script:
        # $SEMAPHORE_API_TOKEN is stored in gitlab Settings/ CI/CD / Variables
        - >-
         curl -v XPOST
         -H 'Content-Type: application/json'
         -H 'Accept: application/json'
         -H "Authorization: Bearer $SEMAPHORE_API_TOKEN "
         -d '{"template_id": 2}'
         https://<DOMAIN>/api/project/2/tasks
      only:
        - master  # Specify the branch to trigger the pipeline (adjust as needed)
    

    Hier noch was Dr. ChatGPT dazu schreibt

    631de9d4-b04d-4043-bfff-c5f2d1b6eea7-grafik.png

    Erledigt - läuft 🙂 Und verstanden habe ich es auch.

  • FrankMF FrankM verschob dieses Thema von Linux am

  • Nextcloud Hub8 (29.0.0) released

    Nextcloud
    2
    0 Stimmen
    2 Beiträge
    207 Aufrufe
    FrankMF

    Ich möchte hier aber auch nicht unterschlagen, dass viele der Neuerungen bei meiner Installation nicht funktionieren. Hauptsächlich Funktionen im Zusammenhang mit der neuen Teams Funktion.

    Da ich schon sehr lange Nextcloud nutze, kenne ich das von den 0.0er Versionen. Da braucht es erst mal ein paar Updates, bis das fehlerfrei funktioniert.

  • KDE Plasma 6 - Beta 2

    Linux
    2
    0 Stimmen
    2 Beiträge
    175 Aufrufe
    FrankMF

    Leider hat die Realität mich etwas vom Testen neuer Software abgehalten, aber jetzt geht es langsam wieder los. Den Start macht KDE Plasma 6 - Beta 2. Auch wenn ich schon brennend auf die RC1 warte, die lässt aber noch auf sich warten...

    https://pointieststick.com/category/this-week-in-kde/

    Ok, also die Beta 2 auf meinen Stick und ab damit in mein Testsystem. Einmal starten, kurz danach taucht der KDE Neon Desktop auf.

    20240110_201838.jpg

    20240110_201852.jpg

    Und klick, wird die Installation gestartet. Danach begrüßt uns dieses Fenster. Ich weiß nicht, warum diese Information nicht automatisch ermittelt wird - nervig.

    20240110_201924.jpg

    Der Rest der Installation lief einwandfrei, ich habe aber keine besondere Installation vorgenommen. Ganze NVMe plattgemacht und alles drauf. Nichts verschlüsselt usw. Eine Installation, die ich so für meinen Haupt-PC nicht machen würde.

    Eine Kleinigkeit ist mir noch aufgefallen. Der Calamares Installer der benutzt wird, hat bei mir keine Sonderzeichen akzeptiert. Ich hoffe das wird bis zum Release gefixt.

    Hier noch kurz das Testsystem

    Screenshot_20240111_210201.png

    Ich nutze ausschließlich Wayland, das läuft einfach wesentlich besser. Aber, ich weiß da draußen gibt es viele die das nicht mögen. Das schöne an Linux - ihr habt die freie Wahl.

    Was war mir negativ aufgefallen? Installer - keine automatische Standortbestimmung Installer - nimmt keine Sonderzeichen für das PW an Login Window - nach Eingabe PW wird die Taste RETURN nicht akzeptiert. Muss ich mit der Maus anklicken. Skalierung auf meinem Monitor nicht optimal - Schrift unscharf Was ist mir positiv aufgefallen? Ich nutze einen 4K Monitor zum Testen. Die Skalierung war automatisch auf 175%. Eine fast perfekte Wahl, wenn da nicht die unscharfe Schrift wäre. Ich habe das auf 150% gestellt, danach war es deutlich besser. Updates kann man sich über das grafische Frontend holen Standby-Modus ging Und einen nervigen FF Bug konnte ich nicht nachstellen. Auf meinem aktuellen System, KDE Plasma 5, flackert der Bildschirm gelegentlich, wenn ich in der Taskleiste durch die geöffneten FF Fenster scrolle. Bei Plasma 6 konnte ich das bis jetzt noch nicht feststellen. Fazit

    Sieht gut aus, der Release von KDE Plasma 6 wird gut. Ich freu mich drauf. Und diesen komischen Updatevorgang den KDE Neon da benutzt, diesen M$ Style, den könnt ihr direkt wieder in die Mülltonne kloppen. Das möchte ich bei Linux nicht sehen.

    Screenshot_20240111_214255.png

  • Wichtige Links

    Angeheftet Ansible
    1
    0 Stimmen
    1 Beiträge
    87 Aufrufe
    Niemand hat geantwortet
  • Rest-Server Version 0.12.1 released

    Linux
    1
    0 Stimmen
    1 Beiträge
    88 Aufrufe
    Niemand hat geantwortet
  • Ubiquiti ER-X - Switch

    Verschoben OpenWRT & Ubiquiti ER-X
    1
    0 Stimmen
    1 Beiträge
    256 Aufrufe
    Niemand hat geantwortet
  • Kopia - HTTP/2 deadlock

    Kopia
    1
    0 Stimmen
    1 Beiträge
    205 Aufrufe
    Niemand hat geantwortet
  • Kopia - Mounten einer Sicherung

    Verschoben Kopia
    1
    0 Stimmen
    1 Beiträge
    205 Aufrufe
    Niemand hat geantwortet
  • NVMe Firmware - Daten werden benötigt

    Linux
    1
    0 Stimmen
    1 Beiträge
    707 Aufrufe
    Niemand hat geantwortet