Setup für automatische Updates
Marvin Buchmann edited this page 5 years ago

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