Skip to content

Instantly share code, notes, and snippets.

@edirpedro
Last active November 13, 2017 22:34
Show Gist options
  • Save edirpedro/2c246df06def7e597b88588efd13f936 to your computer and use it in GitHub Desktop.
Save edirpedro/2c246df06def7e597b88588efd13f936 to your computer and use it in GitHub Desktop.
Git Deploy via Webhook
<?php
/*
*
* Lista de checagem para fazer Deploy via Webhook
* = = = = = = = = = = = = = = = = = = = = = = = = = = = =
*
* Coloque este arquivo na pasta ./public_html
*
* O servidor possui acesso via SSH?
*
* O git foi iniciado na pasta raiz?
* (git init --bare .git)
*
* O repositório esta vinculado ao git?
* (git remote add origin REPOSITÓRIO)
*
* Corrigiu o caminho para o .git na variável TARGET?
* (pode ser dirname($_SERVER['DOCUMENT_ROOT']) para pegar a pasta raíz automaticamente)
*
* Corrigiu o caminho para o repositório local na variável REPO?
* (pode ser $_SERVER['DOCUMENT_ROOT'] para pegar a pasta pública automaticamente)
*
* Definiu qual será a branch utilizada na variável BRANCH?
*
* Onde criar uma chave SSH?
* (pasta ~/.ssh da raíz do usurário na hospedagem)
*
* Como gerar uma chave SSH?
* (ssh-keygen -t rsa -C "[email protected]")
*
* A chave criada esta registrada no repositório do Bitbucket?
* (conteúdo do arquivo id_rsa.pub deve ser registrado em Repositório > Settings > Access Keys)
*
* Alterou o token de acesso para torná-lo único?
*
* Um webhook foi criado para acionar este arquivo?
* (registre a url abaixo em Repositório > Settings > Webhooks)
*
* Testou este arquivo pelo navegador e funcionou? Parabéns!
* (http://seudominio.com.br/deploy.php?access_token=CHAVEAQUI)
*
*/
define('ACCESS_TOKEN', 'fAfj597nJDFSf6aDg5g8aRNugkhgu');
define('TARGET', "/caminho/pasta/raiz");
define('REPO', TARGET . '/public_html');
define('BRANCH', 'master');
if(isset($_GET['access_token']) && $_GET['access_token'] == ACCESS_TOKEN) {
echo shell_exec(
'cd ' . TARGET
. ' && git fetch --all'
. ' && export GIT_WORK_TREE=' . REPO
. ' && git checkout -f origin/' . BRANCH
. ' 2>&1'
);
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment