[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
-
Upload
wellnet-srl -
Category
Technology
-
view
8 -
download
0
Transcript of [Luca Cracco] - DevOps: strumenti di automazione per Drupal8
![Page 1: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/1.jpg)
![Page 2: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/2.jpg)
ROBOMODERN TASK RUNNER FOR PHP
![Page 3: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/3.jpg)
LUCA CRACCO
Freelance & Drupal Developer @luca_cracco
github.com/lucacracco
![Page 4: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/4.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/5.jpg)
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 6: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/6.jpg)
TASK RUNNER PHPTask PHPBLDRRocketter
![Page 7: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/7.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/8.jpg)
..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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/9.jpg)
INSTALLAZIONECOMPOSER
Aggiungendolo al composer.json del progetto
o installandolo globalmente
requiredev: "consolidation/robo": "^1.0.0"
composer global require consolidation/robo
![Page 10: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/10.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/11.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/12.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/13.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/14.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/15.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/16.jpg)
INCLUDERE UN TASKAggiungerlo al progetto
Richiamarlo nel RoboFile
composer require boedah/robodrush
class RoboFile extends \Robo\Tasks use \Boedah\Robo\Task\Drush\loadTasks; public function test() // ...
![Page 17: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/17.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/18.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/19.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/20.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/21.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/22.jpg)
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.0alpha0' ); exit($statusCode);
![Page 23: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/23.jpg)
DRUPAL8 & COMPOSERUsare Composer con DrupalComposer template per progetti Drupal
![Page 24: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/24.jpg)
ROBO & DRUPALIntegrazione Robo con Drush:
boedah/robo-drush$this>taskDrushStack() >drupalRootDirectory('/var/www/html/somesite') >uri('sub.example.com') >maintenanceOn() >updateDb() >revertAllFeatures() >maintenanceOff() >run();
![Page 25: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/25.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/26.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/27.jpg)
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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/28.jpg)
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:fromdatabase 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](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/29.jpg)
![Page 30: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/30.jpg)
DRUPALDAYROMA 2017
![Page 31: [Luca Cracco] - DevOps: strumenti di automazione per Drupal8](https://reader031.fdocumenti.com/reader031/viewer/2022022410/58e4b2281a28ab1c1f8b4ff1/html5/thumbnails/31.jpg)