Maison >cadre php >PensezPHP >À propos du serveur de webhooks extrayant automatiquement le code php thinkphp6

À propos du serveur de webhooks extrayant automatiquement le code php thinkphp6

藏色散人
藏色散人avant
2021-06-24 15:18:572332parcourir

Préparatifs Github

1. Ajouter des webhooks dans les paramètres de l'entrepôt

Prenons l'exemple d'un entrepôt privé :
À propos du serveur de webhooks extrayant automatiquement le code php thinkphp6

1. Après avoir créé l'entrepôt, cliquez sur paramètres.

Définir le chemin d'accès aux webhooks :
À propos du serveur de webhooks extrayant automatiquement le code php thinkphp6

En prenant mon propre projet comme exemple, le framework utilise tp6. Créez un fichier nommé basic.php sous public/, qui est un fichier auquel GitHub peut accéder et exécuter lorsque le code est transmis au serveur.
Ce fichier est utilisé pour exécuter des commandes shell Lorsque le lien est déclenché, les commandes du fichier sont automatiquement exécutées, réalisant ainsi un git pull automatique.

2. Testez si le lien est valide et si le fichier a été consulté

À propos du serveur de webhooks extrayant automatiquement le code php thinkphp6

Comme le montre l'image ci-dessus, lorsque le vert ✅ apparaît, cela signifie que le lien a été consulté, lorsque la marque rouge ⚠️ apparaît, cela signifie que le fichier n'a pas été consulté. Utilisez-le pour vérifier s'il y a un problème de lien ou un problème de code.
  • [x] Github est maintenant terminé.

    Déploiement de code PHP

    1. Ajoutez un fichier hook et exécutez la commande shell

    Certaines sont présentées ci-dessous 内联代码片.

<?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);//将每次拉取信息追加写入到日志里
    }
?>
  • [x] À ce stade, la partie shell php de la commande est terminée et peut être déboguée en fonction des différents besoins du projet.

    Gestion des erreurs courantes

    1. Le shell n'est pas désactivé dans le fichier .php.ini Cette erreur est relativement courante et peut être facilement trouvée lors du débogage, je n'entrerai donc pas dans les détails. détails ici.

    Méthode de traitement : Supprimez shell_exec dans php.ini et redémarrez le service.

    2. Problème d'autorisation .git, modifiez le groupe d'autorisations de fichier dans le répertoire .git/ en www

    Généralement, il n'apparaîtra pas. Lorsqu'une erreur d'autorisation se produit, il est recommandé de vérifier si. le répertoire de fichiers est le groupe d'autorisations que vous avez défini. Sinon, vous pouvez utiliser la commande suivante pour modifier le groupe d'autorisations de fichier
    //以www用户组为例
    chown -R www:www file/

    3. Problème de groupe d'autorisations

    Vérifiez étape par étape. sont sûrs qu'il n'y a pas de problème avec le processus précédent mais que le code ne fonctionne toujours pas automatiquement. Lors de l'extraction, exécutez manuellement le shell ci-dessus. Si le code est extrait avec succès, le problème du shell peut être éliminé. Ouvrez l'enregistrement du journal. Si le contenu de l'enregistrement du journal est vide, vous pouvez essayer de remplacer l'ancienne version par la nouvelle version

    4. Une erreur similaire à l'échec de la vérification de la clé d'hôte.^M fatal : impossible. lire à distance apparaît. rep......

    C'est parce qu'il y a un problème avec la clé d'autorisation La clé publique pour se connecter à github n'est pas créée dans le groupe d'autorisation www
    L'auteur ici. utilise cette méthode pour le résoudre. S'il y a un grand patron. Si vous avez d'autres solutions, veuillez laisser un message en message privé ou dans la zone de commentaires.
    vim Ouvrez /etc/sudoers Ajoutez une ligne de www sous root pour exécuter les autorisations sudo sans mot de passe
    À propos du serveur de webhooks extrayant automatiquement le code php thinkphp6

    5. Terminé, maintenant votre webhook. est Il est prêt à fonctionner. Modifiez le fichier, soumettez-le et interrogez le journal.

    À propos du serveur de webhooks extrayant automatiquement le code php thinkphp6

    Environnement local centos + php7.3 + nginx

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer