Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

[DrupalCampSpain2018] CircleCI

Download to read offline

[DrupalCampSpain2018] CircleCI

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

[DrupalCampSpain2018] CircleCI

  1. 1. CircleCI Continuous Integration and Delivery Ruben Egiguren (keopx) 26/05/2018
  2. 2. Me podéis encontrar en: ▸ Blog: www.keopx.net ▸ Drupal: www.drupal.org/u/keopx ▸ Twitter: @regiguren Me llamo Ruben Egiguren (keopx)
  3. 3. Podéis encontrarnos en: ▸ Web: www.biko2.com ▸ Drupal: www.drupal.org/Biko2 ▸ Twitter: @biko2 Trabajo en
  4. 4. Introducción
  5. 5. Introducción Objetivo ▸ Qué es CircleCI ▸ Docker ▸ Drush ▸ Robo ▸ Behat ▸ Configuración
  6. 6. Qué es la integración continua
  7. 7. Qué es la integración continua ▸ La integración continua permite que su equipo entregue más software, con mayor calidad, durante un período de tiempo más largo. ▸ Una implementación exitosa de CI requiere una gestión adecuada del sprint, el producto y el riesgo financiero.
  8. 8. Que es la integración continua Otras herramientas más conocidas: ▸ Jenkins ▸ Travis ▸ CircleCI ▸ Hay muchos otros (GitLab, Pipelines Bitbucket ...)
  9. 9. Docker
  10. 10. Docker ▸ Usar imagenes Docker. ▸ Permite usar un Dockerfile. ▸ Se recomienda usar una imagen existente. ▸ Apache + PHP: ▹ https://hub.docker.com/r/keopx/drupal8ci/ ▹ Dispone de diferentes versiones de PHP ▸ MySQL ▹ https://hub.docker.com/r/keopx/mysql/ ▹ Dispone de diferentes versiones de MySQL ▸ Selenium para Behat ▹ https://hub.docker.com/r/selenium/standal one-chrome-debug/
  11. 11. Drush
  12. 12. Drush ▸ Drush permite ejecutar tareas varias: ▹ Instalación del sitio (limpio). ▹ Update de la base de datos ▹ Importar el CMI ▹ Limpiar cache ▹ ...
  13. 13. Robo Modern Task Runner for PHP
  14. 14. Robo ▸ Robo es un lanzador de tareas tareas totalmente personalizables al estilo PHP (OOP). ▸ Robo tiene una lista completa de tareas comunes integradas para desarrollo, prueba e implementación. ▸ Usar Robo para: ▹ Automatizar tareas comunes. ▹ Inicializar workers. ▹ Ejecutar tareas en paralelo ▹ Ejecutar comandos ▹ Ejecutar tests ▹ Ver cambios en el sistema de ficheros. ▹ ...
  15. 15. Behat A php framework for autotesting your business expectations.
  16. 16. Behat ▸ Behat es un framework open source Behavior-Driven Development para PHP. ▸ Es una herramienta para mantener la entrega de software importante a través de la comunicación continua, el descubrimiento deliberado y la automatización de pruebas. ▸ Escribes historias en lenguaje (casi) natural que describen el comportamiento de tu aplicación.
  17. 17. CircleCI
  18. 18. CircleCI ▸ Con CircleCI crea entornos personalizados. ▸ Aplica flujos de trabajo para controlar su pipeline de compilación. ▸ Flexibilidad en la asignación de recursos flexible. ▸ Notificaciones. ▸ Recompilar y acceso por ssh para realizar pasos manuales. ▸ ...
  19. 19. ▸ El documento de circleci se configura en una carpeta oculta y el formato yaml. ▹ .circleci/config.yml ▸ Autenticate con tu cuenta de GitHub/Bitbucket en https://circleci.com ▸ Permite a CircleCI ver los cambios de tu repositorio ▸ Este documento contiene la información de la configuración, tareas y demás. ▹ https://circleci.com/docs/2.0/examples/ Configuración
  20. 20. ▸ Vía workflows: ▹ Separa las tareas en sub-tareas ▹ Las subtareas se ejecutan en paralelo. Pros - Procesamiento paralelo
  21. 21. ## Defines images and working directory. defaults: &defaults docker: - image: keopx/drupal8ci:7.1 - image: selenium/standalone-chrome-debug:3.7.1-beryllium - image: keopx/mysql:5.7 environment: MYSQL_ALLOW_EMPTY_PASSWORD: 1 working_directory: /var/www/html Pros - Docker compose style
  22. 22. Pros - Acceso SSH al entorno
  23. 23. Pros - Ejecutar localmente Documentación: https://circleci.com/docs/2.0/local-cli/
  24. 24. ▸ El servicio gratuito únicamente permite una concurrentia. ▹ Esto es, dos tareas simultáneamente. ▸ No es tan personalizable como Jenkins. CONTRAS
  25. 25. ▸ Conocimiento: ▹ ~50 horas desde "nunca lo hemos usado Circle" hasta hecho. ▸ Mantenimiento muy mínimo: ▹ unas pocas horas dos veces al año para las actualizaciones básicas de Drupal. ▸ Gratis a xxx€/mes: ▹ Escalable según las necesidades de su organización. PROS - Costes
  26. 26. ▸ El documento de circleci se configura en una carpeta oculta y el formato yaml. ▹ .circleci/config.yml ▸ Este documento contiene la información de la configuración, tareas y demás. CircleCI - Configuración
  27. 27. CircleCI - Drupal
  28. 28. ## Defines images and working directory. defaults: &defaults docker: - image: keopx/drupal8ci:7.1 - image: selenium/standalone-chrome-debug:3.7.1-beryllium - image: keopx/mysql:5.7 environment: MYSQL_ALLOW_EMPTY_PASSWORD: 1 working_directory: /var/www/html Circle CI - Configuración
  29. 29. #Jobs ## Job to run Unit and Kernel tests. unit_kernel_tests: &unit_kernel_tests <<: *defaults steps: - checkout - *copy_robo - restore_cache: *restore_cache - run: name: Run PHPUnit tests command: robo job:run-unit-tests - store_test_results: path: /var/www/html/artifacts/phpunit - store_artifacts: path: /var/www/html/artifacts - save_cache: *save_cache Circle CI - Configuración
  30. 30. # Declare a workflow that runs all of our jobs in parallel. workflows: version: 2 test_and_lint: jobs: - run-unit-kernel-tests - run-behat-tests - run-code-sniffer - run-code-coverage Circle CI - Configuración
  31. 31. public function jobRunUnitTests() { $collection = $this->collectionBuilder(); $collection->addTask($this->installDependencies()); $collection->addTask($this->waitForDatabase()); $collection->addTask($this->installDrupal()); $collection->addTaskList($this->runUnitTests()); return $collection->run(); } protected function runUnitTests() { $force = true; $tasks = []; $tasks[] = $this->taskFilesystemStack() ->copy('.circleci/config/phpunit-drupal-8.5.xml', 'web/core/phpunit.xml', $force) ->mkdir('artifacts/phpunit', 777); $tasks[] = $this->taskExecStack() ->dir('web') ->exec('../vendor/bin/phpunit -c core --debug --verbose --log-junit ../artifacts/phpunit/phpunit.xml modules/custom'); return $tasks; } Circle CI - Configuración
  32. 32. Gracias
  33. 33. Recursos
  34. 34. ▸ Basada en la presentación de @juampynr y @deviantintegral en la DrupalCon 2018 de Nashville. ▹ Continuous Integration has never been so easy ▹ Video ▸ Artículos ▹ https://www.lullabot.com/articles/continuo us-integration-drupal-8-circleci ▹ Repositorio ▹ Video Recursos
  35. 35. ▸ Proyecto ▹ https://github.com/Lullabot/drupal8ci ▸ Ejemplos CircleCI ▹ https://circleci.com/docs/2.0/examples/ Recursos
  36. 36. Biko2 www.biko2.com +34.91.436.48.54 info@biko2.com Ruben Egiguren (keopx)

[DrupalCampSpain2018] CircleCI

Views

Total views

701

On Slideshare

0

From embeds

0

Number of embeds

170

Actions

Downloads

4

Shares

0

Comments

0

Likes

0

×