[luca cracco] - devops: strumenti di automazione per drupal8

31

Upload: wellnet-srl

Post on 05-Apr-2017

7 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8
Page 2: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

ROBOMODERN TASK RUNNER FOR PHP

Page 3: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

LUCA CRACCO

Freelance & Drupal Developer @luca_cracco

github.com/lucacracco

Page 4: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

CHE COS'È ROBORobo è un E' scritto in PHP con una programmazione orientataagli oggettiHa a disposizione moltissimi task/comandi per losviluppo, test, distribuzione, ecc..

task runner

Page 5: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

TASK RUNNERSSono tools che permetto di automatizzare le operazionipiù riccorenti; sia semplici operazioni di minificazione del

css sia compilazione e pubblicazione di codice

Tra i più conosciuti troviamo , , .. maanche , , ...

Buildbot JenkinsGrunt Gulp

Page 7: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

USARE ROBO PEREseguire comandiLanciare testAutomatizzare le opereazioni più comuniEseguire attività parallelePercepire cambiamenti sul filesystemInizializzare ambienti e progetti

Page 8: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

..PERCHÈ ROBO?E' scritto in PHP ad oggettiSupporto per i comandi: robo listComandi con convalida, colori ANSI, ecc..Si può installare con Composer per il progettoVi sono un sacco di task già pronti

Page 9: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

INSTALLAZIONECOMPOSER

Aggiungendolo al composer.json del progetto

o installandolo globalmente

require­dev: "consolidation/robo": "^1.0.0"

composer global require consolidation/robo

Page 10: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

INSTALLAZIONEPHAR

o scaricandolo via HTTPS da

Oppure installandolo in /usr/bin

wget http://robo.li/robo.phar

GitHub releases

sudo chmod +x robo.phar && mv robo.phar /usr/bin/robo

Page 11: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

PER INIZIARE...Creiamo il nostro Robole.php con

Ed ecco il file:

cd mio_progetto robo init

/** * This is project's console commands * configuration for Robo task runner. * * @see http://robo.li/ */ class RoboFile extends \Robo\Tasks // define public methods as commands

Page 12: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

COMANDI

Eseguendo:

class RoboFile extends \Robo\Tasks function hello($world) $this­>say("Hello, $world");

robo hello Paolo Hello, Paolo

Page 13: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

ARGOMENTI

Eseguendo:

class RoboFile extends \Robo\Tasks function helloOne($world = "Francesco") $this­>say("Hello, $world"); function helloMulti(array $world) $this­>say("Hello, " . implode(', ', $world));

robo hello:one Hello, Francesco robo hello:multi Paolo Francesco Hello, Paolo Francesco

Page 14: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

OPZIONI

Eseguendo:

function hello($opts = ['silent' => false]) if (!$opts['silent']) $this­>say("Hello, world");

robo hello Hello, world robo hello ­­silent

Page 15: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

ROBO TASKSBase Tasks, FileSystem Tasks, File Tasks, Composer Tasks,

VCS Tasks, Development Tasks, Assets Tasks, ArchiveTasks, SSH, Rsync Tasks, Testing Tasks, NPM Tasks, Bower

Tasks, Gulp Tasks, Docker Tasks, ApiGen Tasks, e moltialtri in Packagist.org

Page 16: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

INCLUDERE UN TASKAggiungerlo al progetto

Richiamarlo nel RoboFile

composer require boedah/robo­drush

class RoboFile extends \Robo\Tasks use \Boedah\Robo\Task\Drush\loadTasks; public function test() // ...

Page 17: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

CREARE UN TASKTRAIT LOADTASKS.PHP

namespace MyAssetTasks; trait loadTasks /** * Example task to compile assets * * @param string $pathToCompileAssets * @return \MyAssetTasks\CompileAssets */ protected function taskCompileAssets($path = null) // Always construct your tasks with the `task()` task builder. return $this­>task(CompileAssets::class, $path);

Page 18: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

CREARE UN TASKTASK IMPLEMENTATION

class CompileAssets implements \Robo\Contract\TaskInterface // configuration params protected $path; protected $to; function __construct($path) $this­>path = $path; function to($filename) $this­>to = $filename; // must return $this return $this; // must implement Run

Page 19: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

IO: ROBO\OUTPUTStampare messaggi

Oppure interagire:

$this­>say("Hello");

$name = $this­>ask("What is your name?");

Page 20: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

TASK VS STACKLe classi Stack contengono un insieme di task da eseguire

uno dopo l'altro. Inoltre può essere configurato perbloccarsi al primo errore che incontra senza proseguire

con gli altri task.$this­>stopOnFail(true);

Page 21: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

STACK VS COLLECTIONRobo offre delle collection di task che permettono il

rilevamento degli errori e il recupero/rollback. Se uno deitask della collection va in errore, l'operazione viene

interrotta; attività di rollback può essere quindi eseguitaper ripristinare il sistema allo stato originale.

Page 22: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

ROBOFILES MULTIPLIE' possibile fornire il maggior numero di classi di comandi

(Robofile) direttamente al costruttore RoboRunner$commandClasses = [ \MyProject\Commands\BuildCommands::class, \MyProject\Commands\DeployCommands::class ]; $statusCode = \Robo\Robo::run( $_SERVER['argv'], $commandClasses, 'MyAppName', '0.0.0­alpha0' ); exit($statusCode);

Page 23: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

DRUPAL8 & COMPOSERUsare Composer con DrupalComposer template per progetti Drupal

Page 24: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

ROBO & DRUPALIntegrazione Robo con Drush:

boedah/robo-drush$this­>taskDrushStack() ­>drupalRootDirectory('/var/www/html/some­site') ­>uri('sub.example.com') ­>maintenanceOn() ­>updateDb() ­>revertAllFeatures() ­>maintenanceOff() ­>run();

Page 25: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

ROBO DRUPAL8 BUILDERRoboDrushTasks Robo/DrushYaml Files Configurations

Work in progress.. github.com/lucacracco/robo-drupal8

Page 26: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

YAML CONFIGURATIONS# Enviroment environment: local # Base Path base_path: /var/www/html # Path to drush drush_path: ./vendor/bin/drush # Domani used domain: 'http://test.dd' # Database Configuration database: url: 'mysql://drupal:drupal@mysql_test:3306/drupal' prefix: ''

Page 27: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

TASKS CUSTOMpublic function deploy($opts = self::OPTS) $this­>say("Deploy"); // Init parameters. $this­>init($opts['environment'], $opts['site']); // Execute functions. $this­>backupDatabase(); $this­>importConfig(); $this­>rebuildCache(); $this­>entityUpdates(); $this­>coreCron();

Page 28: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

ROBO COMMANDS vendor/bin/robo list Robo version 1.0.5 Available commands: deploy Deploy. help Displays help for a command list Lists commands build build:conf Build a site from configuration files. build:from­database Build an existing site by importing the database. build:new Build a site from scratch. configuration configuration:export Export configuration after clear cache. configuration:import Import configuration. features features:import Import features.

Page 29: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8
Page 30: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8

DRUPALDAYROMA 2017

Page 31: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8