- Comenzar un proyecto
- Pon un boilerplate en tu
vida proyecto
- Boilerplate en detalle
- Otros usos
- ¿Esto no es como...?
- ¿Demo?
- Preguntas
- Unirse a un proyecto
-
Empezar un nuevo proyecto
- Recodar decisiones
- Recordar cómo hacerlas
- Código
- Infraestructura local
- Código de referencia sobre el que construir
- Plantilla sobre la que extender
- Una base de la que partir
- Iniciar proyectos rápidamente
- Base de código (Drupal y herramientas)
- Decisiones tećnicas
- Estandarización
- Reducción del tiempo de onboarding
- Reducción de estrés
- Proyectos autocontenidos en el repositorio
- Herramientas estándar
- Código Drupal y Drush
- Preconfiguraciones
- Entorno de ejecución sobre Docker4Drupal
- Testing: Behat, BackstopJS, PHPUnit
- Wiki de documentación con MkDocs
- Análisis de código
- Fácil manejo (ocultar sintáxis de gestión)
- Instalación con un comando
- ...
composer create-project --ignore-platform-reqs
metadrop/drupal-boilerplate mi-proyecto
- PHP (para creación inicial)
- Composer (para creación inicial)
- Drush Launcher (recomendado por comodidad)
- Docker
- Docker Compose
- Linux (en teoría funciona en otros SO)
- Basado en Docker4Drupal
- Apache, NGINX, MariaDB, PostgreSQL, PHP…
- Varias versiones disponibles cambiando .env
- Redis, Memcached, NodeJS, Solr, Elasticsearch…
- Configuración estándar de Docker Compose
- Theme base con Bootstrap (4 ó 5)
- Generación automática de subtheme para el proyecto
- Sass, ES6 y BrowerSync
- Módulo Components
- Opcional, puede no crearse
- Aliases de entornos
- drush.yml
- drush.yml local
- Ejemplo fichero Policy
- No sobreescribir BD de producción
- Desarrollo orientado a comportamiento
- Tests de aceptación
- Lenguaje natural (para no técnicos)
- Usa un navegador real o ligero
- Contextos adicionales (Nuvole, Metadrop)
- Tests de regresión visual
- Se crean referencias contra las que se testea
- Se puede definir grado de similitud o ignorar zonas
- Resultados visuales
make backstopjs-reference
make backstopjs-test
(Realizar algún cambio)
make backstopjs-test
- Integrados con Drupal core
- UnitTestCase: test unitarios
- KernelTestBase: tests con Drupal casi levantado
- BrowserTestBase: tests de navegador
- WebDriverTestBase: tests de navegador con JS
(Tests unitarios del móddulo Redirect)
make test web/modules/contrib/redirect/tests/src/Unit
(Todos los tests del móddulo Redirect, más lento)
make test web/modules/contrib/redirect/tests
- Depuración paso a paso
- Examinar variables
- Seguir flujo de ejecución
- Imprescindible si programas
cp docker-compose.xdebug.override.yml.dist
docker-compose.xdebug.override.yml
vi docker-compose.xdebug.override.yml
(Configurar según IDE)
make xdebug
make xdebug-disable
- Git hook al comitear llama a GrumPHP
- Formato mensaje de commit
- PHPlint: Sintáxis PHP
- YAMLint: Sintáxis YAML
- Errores en ficheros Composer
- JSON Lint: Sintáxis JSON
- DrupalCheck: diversas comprobaciones
- PHPCD: Detector de copia/pega
- CodeSniffer: Coding standards y buenas prácticas
- Lanzado manualmente
- Ideal para tendencias en testing automático
- CodeSniffer: Coding standards y buenas prácticas
- PHPMD: Código maloliente
- PHPCD: Detector de copia/pega
- Wiki para documentar temas técnicos
- Ej: Architecture decision record (ADR)
- Se intenta que el proyecto esté autocontenido
- MailHog: capturador de correos salientes
- Adminer: interfaz gráfico para la BD
- Portainer: información sobre contenedores
- ...
make info
make test
make behat
make frontend
make setup
make setup-from-config
make shell
make drush
make logs
- Pequeña colección de scripts de utilidades
- Backup (BD, código y ficheros de contenido)
- Construir recursos frontend (Ej: Sass)
- Actualización automática de paquetes Composer
- Recarga entorno local con entorno de referencia
- Probar un módulo o theme, rápidamente
- Montar otro entorno de un proyecto, rápidamente
- Contribuir al core o una extensión, rápidamente
- ¿Estilo Simplytest.me en local?
- make setup o make setup-from-config y empezar
- Estandarizar decisiones
- Estandarizar integración con CI
- Estandarizar X
- Usable en CI si acepta Docker Compose
- Mismo entorno que en desarrollo local
- (que debería ser igual o muy parecido a Prod)
- ¡Actualizaciones cuasi-automáticas!
- Aplicarlo a un proyecto existente
- Crear boilerplate e integrar código
- Integrar composer.json
- Tiempo: unas pocas horas
- Sí y no
- Se centran en el eje de infraestructura
- Potentes y guiados
- Ciertos límites
- Hay solapamiento (sobre todo en Docker4Drupal)
- Futuro: compatible con DDEV, Lando, Docksal
- Futuro: más decisiones técnicas, más opciones, ...