This will delete the page "Setup für automatische Updates". Please be certain.
SSH Deployment Key einrichten
Auf dem Webspace per ssh-keygen ein Schlüsselpaar in ~/priv/ erstellen:
ssh-keygen -f ~/priv/deployment-key -t rsa -b 4096
Auf dem Webspace eine SSH-Konfiguration hinterlegen und den erstellten Key als IdentityFile definieren:
~/.ssh/config
Host git.cybob-one.com
Hostname git.cybob-one.com
IdentityFile ~/priv/deployment-key
IdentitiesOnly yes
Erstellten Schlüssel (public) für das Repository unter Einstellungen->Deplyoment Keys hinterlegen
Extension aus dem Repository laden
git clone gogs@git.cybob-one.com:marvin/webhook-test.git
Webhook-Skript ablegen (und ggf. Pfade/Logik anpassen)
Bsp.
<?php
$logDir = __DIR__ . '/log/';
$extensionDir = __DIR__ . '/some_subdirectory/';
$jsonData = file_get_contents('php://input');
// log
file_put_contents($logDir . time() . '.json', $jsonData);
$arrData = json_decode($jsonData, true);
if (!isset($_REQUEST['extension']) || !$_REQUEST['extension']) die('no extension defined');
if (!is_dir($extensionDir . $_REQUEST['extension'])) die('extension not found');
if (
$arrData['action'] == 'closed'
&& $arrData['pull_request']['merged']
&& $arrData['pull_request']['base_branch'] === 'master'
) {
$extensionName = $_REQUEST['extension'];
echo shell_exec("cd $extensionDir$extensionName && git pull 2>&1");
} else {
die('nothing to do here');
}
Webhook für das Repository einrichten
Payload URL: https://url-zum-skript/?extension=webhook-test
Inhaltstyp: application/json
Secret: noch egal
Auslösen nur bei Pull-Request
Aktiv
This will delete the page "Setup für automatische Updates". Please be certain.