Über Web-Hooks zieht der Server automatisch Code von PHP thinkphp6

藏色散人
Freigeben: 2021-06-26 09:05:11
nach vorne
2286 Leute haben es durchsucht

Github-Vorbereitungen

1. Fügen Sie Webhooks in den Warehouse-Einstellungen hinzu

Nehmen Sie ein privates Warehouse als Beispiel:
Über Web-Hooks zieht der Server automatisch Code von PHP thinkphp6

1 Klicken Sie nach dem Erstellen des Warehouse auf Einstellungen.

Webhooks-Zugriffspfad festlegen:
Über Web-Hooks zieht der Server automatisch Code von PHP thinkphp6

Nehmen Sie mein eigenes Projekt als Beispiel, das Framework verwendet tp6. Erstellen Sie unter public/ eine Datei mit dem Namen „basic.php“. Dabei handelt es sich um eine Datei, auf die GitHub zugreifen und die sie ausführen kann, wenn der Code an den Server übertragen wird.
Diese Datei wird zum Ausführen von Shell-Befehlen verwendet. Wenn der Link ausgelöst wird, werden die Befehle in der Datei automatisch ausgeführt, wodurch ein automatischer Git-Pull realisiert wird.

2. Testen Sie, ob der Link gültig ist und ob auf die Datei zugegriffen wurde.

Über Web-Hooks zieht der Server automatisch Code von PHP thinkphp6

Wie im Bild oben gezeigt, bedeutet es, dass auf den Link zugegriffen wurde, und wenn ein rotes ⚠️ erscheint erscheint, bedeutet dies, dass auf die Datei nicht zugegriffen wurde. Verwenden Sie dies, um zu überprüfen, ob ein Linkproblem oder ein Codeproblem vorliegt.
  • [x] Github ist jetzt fertig.

    PHP-Code-Bereitstellung

    1. Hook-Datei hinzufügen und Shell-Befehl ausführen

    Einige werden unten gezeigt 内联代码片.

<?php     //git webhook 自动部署脚本
    $requestBody = file_get_contents("php://input");    //接收数据
    if (empty($requestBody)) {              //判断数据是不是空
        die(&#39;send fail&#39;);
    }
    $content = json_decode($requestBody, true);     //数据转换
    //若是主分支且提交数大于0
    if ($content[&#39;ref&#39;]==&#39;refs/heads/main&#39;) {
     //或将命令加入 shell里,看个人需求 git reset --hard origin/master && git clean -f
        $res = shell_exec(&#39;cd /www/wwwroot/xxxx/ && echo `sudo git pull` >> b.log');//PHP函数执行git命令
        $res_log = '-------------------------'.PHP_EOL;
        $res_log .= ' 在' . date('Y-m-d H:i:s') . '向' . $content['repository']['name'] . '项目的' . $content['ref'] . '分支push'.$res;
        file_put_contents("git-webhook.txt", $res_log, FILE_APPEND);//将每次拉取信息追加写入到日志里
    }
?>
Nach dem Login kopieren
  • [x] Zu diesem Zeitpunkt ist der PHP-Shell-Teil des Befehls abgeschlossen und kann je nach Projektanforderungen debuggt werden.

    Häufige Fehlerbehandlung

    1. Die Shell ist in der .php.ini-Datei nicht deaktiviert. Dieser Fehler kommt relativ häufig vor und ist beim Debuggen leicht zu finden, daher werde ich nicht auf Details eingehen.

    Methode: Shell_exec in php.ini löschen und den Dienst neu starten.

    2. .git-Berechtigungsproblem, ändern Sie die Dateiberechtigungsgruppe im .git/-Verzeichnis in www

    Im Allgemeinen wird es nicht angezeigt. Wenn ein Berechtigungsfehler auftritt, wird empfohlen, zunächst zu überprüfen, ob das Dateiverzeichnis die Berechtigungsgruppe ist Wenn nicht, können Sie den folgenden Befehl verwenden, um das Problem der Dateiberechtigungsgruppe zu ändern: Schritt für Schritt, wenn festgestellt wird, dass kein Problem mit dem vorherigen Prozess vorliegt und der Code vorhanden ist Wird die obige Shell immer noch nicht automatisch abgerufen, kann das Shell-Problem behoben werden. Öffnen Sie den Protokolldatensatz. Wenn der Inhalt des Protokolldatensatzes leer ist, können Sie versuchen, die alte Version durch die neue Version zu ersetzen. 4. Ein Fehler ähnlich der Host-Schlüsselüberprüfung ist fehlgeschlagen.^M Schwerwiegend: Vom Remote-Repräsentanten konnte nicht gelesen werden. .. ...

    Das liegt daran, dass es ein Problem mit dem Berechtigungsschlüssel gibt, der nicht in der WWW-Berechtigungsgruppe erstellt wird.

    Der Autor hier verwendet diese Methode, um das Problem zu lösen. Bitte zögern Sie nicht, eine private Nachricht oder eine Nachricht im Kommentarbereich zu senden.
    vim Öffnen Sie /etc/sudoers. Fügen Sie eine Zeile www unter root hinzu, um Sudo-Berechtigungen ohne Passwort auszuführen.



    5. Fertig, jetzt kann Ihr Webhook funktionieren, die Datei ändern und übermitteln und das Protokoll abfragen.
    Über Web-Hooks zieht der Server automatisch Code von PHP thinkphp6

    Lokale Umgebung Centos + PHP7.3 + Nginx

    Über Web-Hooks zieht der Server automatisch Code von PHP thinkphp6

Das obige ist der detaillierte Inhalt vonÜber Web-Hooks zieht der Server automatisch Code von PHP thinkphp6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage