Simple PHP Git deploy script

https://github.com/markomarkovic/simple-php-git-deploy/

Dans sa version d’Avril 2016, le développeur n’a pas prévu de permettre de lancer des commandes “post deployment” càd après que le deploiement a été réalisé.

Dans son fichier deploy.php actuel, il a prévu le cleaning ci-dessous. J’ai ajouté la dernière ligne concernant deploy-done.php qui est donc un script que j’ai écris et qui doit être dans le même dossier que le script deploy.php

deploy.php


// =[ Post-Deployment steps ]=

// Remove the TMP_DIR (depends on CLEAN_UP)
if (CLEAN_UP) {
    $commands['cleanup'] = sprintf(
        'rm -rf %s'
        , TMP_DIR
    );
}

if(file_exists(TARGET_DIR.'deploy-done.php')) $commands['after-deploy']='php '.TARGET_DIR.'deploy-done.php '.SECRET_ACCESS_TOKEN;

// =[ Run the command steps ]=

deploy-done.php

Le fichier est programmé comme suit :

<?php

require_once('deploy-config.php');

if ($_GET) {
   $sat = isset($_GET['sat'])?$_GET['sat']:'';
} else {
    // Script started on the command line
   $sat = $argv[1];
}

if ($sat !== SECRET_ACCESS_TOKEN) {
   header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden', true, 403);
   die('<h2>ACCESS DENIED!</h2>');
}

/**
 * Copy a file, or recursively copy a folder and its contents
 * @author      Aidan Lister <aidan@php.net>
 * @version     1.0.1
 * @link        http://aidanlister.com/2004/04/recursively-copying-directories-in-php/
 * @param       string   $source    Source path
 * @param       string   $dest      Destination path
 * @param       int      $permissions New folder creation permissions
 * @return      bool     Returns true on success, false on failure
 */
function xcopy($source, $dest, $permissions = 0755) {

   // Check for symlinks
   if (is_link($source)) return symlink(readlink($source), $dest);

   // Simple copy for a file
   if (is_file($source)) return copy($source, $dest);

   // Make destination directory
   if (!is_dir($dest)) mkdir($dest, $permissions);

   // Loop through the folder
   $dir = dir($source);
   while (false !== $entry = $dir->read()) {
      // Skip pointers
      if ($entry  '.' || $entry  '..') continue;
      // Deep copy directories
      xcopy("$source/$entry", "$dest/$entry", $permissions);
   }

   // Clean up
   $dir->close();
   return true;

} // function xcopy()

if (is_dir($folder=TARGET_DIR.'gulp')) shell_exec('rm -rf '.$folder);
if (is_dir($folder=TARGET_DIR.'src')) shell_exec('rm -rf '.$folder);

if (is_dir($folder=TARGET_DIR.'dist')) { xcopy($folder, TARGET_DIR); shell_exec('rm -rf '.$folder); }

L’objectif est, au bas du script

  1. De supprimer le dossier /gulp s’il existe
  2. De supprimer le dossier /src s’il existe
  3. De déplacer tous les fichiers du dossier /dist vers le dossier . (parent donc) puis de supprimer /dist.

deploy-config.php

Le fichier deploy-config.php est programmé de la sorte :

define('SECRET_ACCESS_TOKEN’, 'Cette information est cryptée');

define('REMOTE_REPOSITORY’, 'Cette information est cryptée');

define('TARGET_DIR’, 'Cette information est cryptée');