Maison >développement back-end >tutoriel php >Utilisez un webhook pour déployer automatiquement des projets PHP

Utilisez un webhook pour déployer automatiquement des projets PHP

藏色散人
藏色散人avant
2020-01-03 17:54:223371parcourir

1. Parlons d'abord du principe du déploiement automatique. Généralement, lorsque nous poussons le code, nous pouvons automatiquement demander l'url définie dans le webhook pour compléter une requête et une réponse. Ainsi, tant que le contenu du fichier PHP demandé par l'adresse URL que nous avons définie est d'exécuter la commande git push en ligne de commande, nous pouvons pousser le code vers l'extrémité distante à chaque fois que nous le poussons localement, et le serveur git pull automatiquement. pour extraire la dernière branche.

2. Ensuite, nous devons définir deux endroits :

①Les paramètres du webhook du projet git :

Généralement, sur la plateforme où nous hébergeons le code, il y a il y en aura un dans les paramètres du projet. Il n'y a généralement qu'un seul élément de contenu dans les paramètres du webhook, qui est le paramètre d'URL. Ici, j'ai défini http://www.xxxxx.com/webhook.php

(. évidemment, je suis dans le répertoire racine du site Web. Je lance un fichier webhook.php, puis chaque fois que je pousse le code vers l'extrémité distante, le fichier webhook.php de mon site Web sera accessible)

②Le fichier hook côté serveur (où le code s'exécute) ( webhook.php) paramètres :

$command = 'cd 代码位置';
$output = shell_exec($command);
 
$command = 'git pull';
$output = shell_exec($command);
print $output;

Voici deux phrases simples. Première commande cd pour entrer dans le répertoire correspondant, puis exécutez la commande git pull

Principalement pour l'utilisation de la fonction shell_exec(), il s'agit d'une fonction permettant à PHP d'exécuter la ligne de commande. Les étudiants peuvent la présenter en détail sur Baidu

Ce qu'il faut noter ici, c'est que lorsque je le fais. exécuté la commande shell_exec() auparavant, le serveur ne répondait plus et restait bloqué, j'ai donc utilisé la commande

$output = shell_exec('ls');
print_r($output);

pour tester et j'ai découvert qu'elle avait également expiré, ce qui était très étrange, alors j'ai continué à la mettre de côté et Je n'arrivais pas à comprendre ce qui se passait. Après tout, il ne s'agissait que de trois ou cinq lignes de code et je ne savais pas pourquoi il continuait à demander un délai d'attente. Deux mois plus tard, je me suis demandé s'il s'agissait d'un problème avec l'encodage des chaînes de l'impression originale ? On a donc les lignes de code suivantes :

$encode = mb_detect_encoding($output, array('ASCII','GB2312','GBK','UTF-8'));
$trans = iconv( $encode, "UTF-8",$output);
print $trans;

Ensuite il peut être exécuté. . . Je ne me souviens pas pourquoi shell_exec() n'arrêtait pas d'expirer auparavant. Les amis qui l'ont rencontré à nouveau peuvent essayer de ne pas imprimer le contenu renvoyé ou d'encoder le contenu imprimé. Cependant, je crois qu'il y a encore un petit nombre d'amis qui sont confrontés à ce problème dégoûtant.

Pour plus de connaissances sur PHP, veuillez visiter le Tutoriel PHP !

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