Hoy en día la mayoría de mis proyectos secundarios se gestionan con Github. Tiene más ventajas y flexibilidad para gestionar las versiones de los archivos. Estoy siguiendo un sistema de webhooks diferente para desplegar automáticamente mis antiguos proyectos PHP. No estoy seguro de los estándares, pero la siguiente solución es un enfoque alternativo que puede resolver tu problema de despliegue para cada push de Github.
Crear un repositorio privado en Github
Ve a Github y crea un repositorio privado.
Genera un token de usuario
Ve a la Configuración de Github -> Configuración del Desarrollador -> Tokens de Acceso Personal. Aquí puedes elegir la fecha de caducidad del token.
Clona tu proyecto
Puedes comprobar el proyecto usando el token secreto de desarrollador. Asegúrate de no compartir el token de desarrollador con nadie y de no confirmarlo en Github.
Has push a los cambios
Puedes crear o añadir archivos aquí y hacer push al repositorio
Cambios en el repositorio
Aquí he agregado un index.php
Hacer deploy al archivo Webhook
Cree un archivo your-php-application-deploy.php en el nivel raíz /var/www/html para Apache. Si estás usando XAMPP, créalo en el directorio opt/lampp/htdocs. Aquí el código utiliza su propia secret key para la ejecución del código directamente.
Ejecución del shell
-
- Elimina la carpeta del proyecto existente
- Clona el proyecto usando el token de desarrollador
- Elimina la carpeta .git para evitar el archivo git config
Nota: Aquí va el código secreto no el token personal de desarrollador de Github
Permisos de ejecución
Para ejecutar el shell hay que aplicar el permiso de usuario www-data .
Apache
XAMPP
Añadir Webhook
Ve a la configuración del proyecto Github y selecciona webhook. Encontrarás el botón Añadir Webhook
Crear un Webhook
Añade la url de deploy.php con tu código secreto.
Haz push de los nuevos cambios
Puedes modificar o añadir archivos aquí y hacer push al repositorio
Entregas recientes
Ahora cada push de Github activará el archivo de despliegue de webhook.
Request
Solicitud de Github con código secreto.
Respuesta del archivo webhook
Respuesta del webhook.