PHP Classes

How to Setup a PHP GitHub Webhook to Deploy Projects Automatically Using the Package Webhook Deploy: Webhook handler to update projects from GitHub

Recommend this page to a friend!
  Info   View files Example   View files View files (8)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog (1)    
Last Updated Ratings Unique User Downloads Download Rankings
2024-05-05 (2 days ago) RSS 2.0 feedNot yet rated by the usersTotal: 12 This week: 12All time: 11,288 This week: 7Up
Version License PHP version Categories
webhookdeploy 1.0The PHP License7Files and Folders, Web services, Proj..., P...
Description 

Author

This package provides a Webhook handler to update projects from GitHub.

It provides a class that can take data sent by GitHub to a Webhook site address.

The class processes the data sent to the Webhook address and updates files in the site project folder from the Git repository that was updated on GitHub.

Picture of Matheusz Maydana
  Performance   Level  
Name: Matheusz Maydana <contact>
Classes: 3 packages by
Country: Brazil Brazil
Innovation award
Innovation award
Nominee: 1x

Example

<?php

declare(strict_types=1);

namespace
App\Public;

$pathVendor = __DIR__.'/../../vendor/autoload.php';
$pathLoader = __DIR__.'/../Utils/loader.php';
if(!
file_exists($pathLoader)){
    die(
'Loader não encontrado.');
}
require_once
$pathLoader;

if (!
file_exists($pathVendor)) {
    die(
'Execute o comando: composer install');
}

require_once
$pathVendor;

use
App\GitHub\GitHubHandler;
use
App\Utils\Env;
use
App\Utils\Logger;
use
Exception;

$env = new Env();
$logger = new Logger();

try {

   
$githubHandler = new GithubHandler(
       
env: $env,
       
logger: $logger,
       
headers: $_SERVER,
       
dataPost: file_get_contents('php://input')
    );

   
$githubHandler->execute();

    echo
$githubHandler->response;
    exit;

}catch (
Exception $erro){

   
$logger->log($erro->getMessage());

   
header('HTTP/1.1 500 Internal Server Error');
    echo
$erro->getMessage();
    exit;
}



Details

Configuração do Webhook para Deploy Automatizado

Este repositório contém instruções e arquivos necessários para configurar um webhook que permite o deploy automatizado de projetos hospedados no GitHub. Siga os passos abaixo para configurar o webhook em seu servidor.

Configurações Iniciais

Criação do arquivo .env

Na raiz do repositório, crie um arquivo chamado .env e insira o seguinte conteúdo:

SECRET_WEBHOOK_GITHUB=XXXXXXXXXXXX
PERSONAL_ACCESS_TOKEN_GITHUB=XXXXXXXXXXXXXXXXXX
USUARIO_GITHUB=XXXXX
DIRETORIO_DE_PROJETOS=/folder/my/projects

  • SECRET_WEBOOK_GITHUB: É a 'secret' que você configura no momento que cria o webhook no github. (Instruções)
  • PERSONAL_ACCESS_TOKEN_GITHUB: É o token de acesso pessoal que você pode gerar nas configurações da sua conta de desenvolvedor do GitHub. (Obter Token)
  • USUARIO_GITHUB: Seu nome de usuário do GitHub. Por exemplo, se o seu perfil é `https://github.com/minhaConta`, o valor seria `minhaConta`
  • DIRETORIO_DE_PROJETOS: Este é o diretório no servidor onde estão localizados os repositórios dos projetos. É a pasta principal que será usada para o deploy.

Configuração do Webhook

Configure o VirtualHost (Apache) ou a maneira como o domínio do projeto é apontado para a pasta ~/src/Public.


  Files folder image Files  
File Role Description
Files folder imagesrc (3 directories)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  src  
File Role Description
Files folder imageGitHub (1 file)
Files folder imagePublic (2 files)
Files folder imageUtils (3 files)

  Files folder image Files  /  src  /  GitHub  
File Role Description
  Plain text file GitHubHandler.php Class Class source

  Files folder image Files  /  src  /  Public  
File Role Description
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file robots.txt Doc. Documentation

  Files folder image Files  /  src  /  Utils  
File Role Description
  Plain text file Env.php Class Class source
  Accessible without login Plain text file loader.php Aux. Auxiliary script
  Plain text file Logger.php Class Class source

 Version Control Unique User Downloads Download Rankings  
 100%
Total:12
This week:12
All time:11,288
This week:7Up