Website-Icon HOPPLIN GmbH [dev] Blog

Webhook für entferntes satis erstellen

Rate this post

Vorgestern bin ich über das Problem gestolpert, dass ich via CI-Runner mein entferntes satis – Verzeichnis aktualisieren möchte. Dies soll automatisiert passieren, wenn der master sich ändert oder eine Version (Tag) erstellt wird.

Lösungsansatz

Nach einigen Überlegungen habe ich mich dafür entschieden, dieses “Anstoßen” über die Datei .gitlab-ci.yml zu steuern.

Zuerst benötigst du auf dem entfernten satis Server einen eigenen virtuellen Host oder einen Bereich innerhalb des satis-Verzeichnisses. Ich habe mich dafür entschieden, das in einen Bereich zu legen. Zunächst habe ich mir ein kleines PHP-Skript gesucht, mit dem ich mein bin/satis Binary ansprechen kann. Meine Wahl fiel auf:

GitHub.com/andanlobat/satis-webhook

Dieses Verzeichnis liegt liegt auf der Ebene meiner satis.json Datei.

user@hostsystem: ls
nginx/ public/ satis/ satis.json satis-webhook/

Meine nginx Konfiguration habe ich um eine entsprechende Location erweitert. Dazu habe ich einen Random-String verwendet, eine Basic Authentifizierung ist generell vor geschalten.

user@hostsystem: openssl rand -base64 18
tUZ4GFBz7qiHD9KkHtNHWyFa

satis-repository.conf – …[]…

location ^~ /tUZ4GFBz7qiHD9KkHtNHWyFa {
  alias "[PFAD]/satis-webhook";
  index webhook.php;
  alias "[PFAD]/satis-webhook";
  try_files $uri $uri/ /tUZ4GFBz7qiHD9KkHtNHWyFa/webhook.php;
  if (!-e $request_filename) { 
    rewrite ^ /tUZ4GFBz7qiHD9KkHtNHWyFa/webhook.php last;
  }
  location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass localhost:9000;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
  }
}

Nun brauche ich hier auch wieder eine Variable im Git-Repository um mich an der Basic Authentifizierung anzumelden. Ich nenne sie SATIS_TOKEN (besteht wieder aus 2 zufälligen Strings die in der htpasswd hinterlegt werden müssen.

user@hostsystem: openssl rand -base64 12
8KB0gMhi3nGl3x1z
user@hostsystem: openssl rand -base64 12 
cTTFd1nLPCFQIBXi
user@hostsystem: htpasswd [datei] 8KB0gMhi3nGl3x1z
New password: 
Re-type new password: 
Adding password for user 8KB0gMhi3nGl3x1z

Mein SATIS_TOKEN: 8KB0gMhi3nGl3x1z:cTTFd1nLPCFQIBXi
In Gitlab öffne ich die Einstellungsseite des Repository in den Bereich “CI / CD” und gehe in den Bereich Variablen. Dort lege ich eine geschützte Variable an.

Nun kann ich diesen Token in meiner .gitlab-ci.yml Datei aufrufen und und den Webhook anstoßen:
.gitlab-ci.yml

deploy on satis:
  stage: deploy
  image: php:7.1-alpine
  tags:
  - docker
  script:
  - curl -u "$SATIS_TOKEN" -o - https://[SATISURL]]/tUZ4GFBz7qiHD9KkHtNHWyFa/webhook.php
  environment:
    name: production
  only:
  - tags
  - master
Die mobile Version verlassen