2687gelesen 0Kommentare
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