drupal 8 – ¿Orden de comandos drush para implementación automatizada?

Pregunta:

¿En qué orden se deben ejecutar los siguientes comandos drush?

  • config-import
  • actualizadob
  • actualizaciones de entidad

Además, veo que las actualizaciones de entidades fallan mucho debido a las tablas field_delete_data * existentes. ¿Cómo puedo eliminarlos como parte de mi implementación automatizada?

Respuesta:

Drush 10.3.0 ahora proporciona un comando de deploy para estandarizar cómo funciona la implementación de Drupal. Este comando realiza lo siguiente:

drush updatedb --no-cache-clear drush cache:rebuild drush config:import drush cache:rebuild drush deploy:hook

¡Las actualizaciones de la base de datos siempre vienen antes de la importación de la configuración! El soporte para actualizaciones automáticas de entidades se ha eliminado del núcleo de Drupal ( cambio de registro ) y entup se ha eliminado del núcleo de Drush. Siempre que sea necesario crear, modificar o eliminar un tipo de entidad o una definición de almacenamiento de campo, debe hacerlo a través de hook_update_N() .


Aquí está la rutina de implementación actualizada con la que estoy más feliz.

drush state:set system.maintenance_mode 1
drush cache:rebuild
git pull
composer install --no-dev
drush cache:rebuild
drush deploy
drush state:set system.maintenance_mode 0
drush cache:rebuild

Esto también significa que debe ejecutar dos versiones si desea desinstalar y eliminar un módulo contrib. Primera versión para implementar la configuración actualizada que desactiva el módulo. Segunda versión para implementar el archivo composer.json actualizado y bloquear después de eliminarlo con Composer.

Para hacer posibles lanzamientos consecutivos reales, es posible que desee pasar el compromiso SHA1 del lanzamiento actual al script de implementación y luego reemplazar git pull con una rutina más exacta (donde $1 es el SHA1):

# If not empty 1st argument passed to the script, do:
if [ -n "$1" ]; then
  git reset --hard "$1"
else
  git pull
fi

De lo contrario, no se puede garantizar la consecutividad cuando empuja dos nuevos lanzamientos a la vez o en un período corto. Como entonces, el git pull activado de la primera versión simplemente extraerá los últimos cambios (de la segunda versión), donde en su lugar debería extraer solo los cambios incluidos en la primera versión. Vea el repositorio de muestra completo leymannx/drupal-circleci-behat .

El crédito por este fragmento de git es para CircleCI . Así lo están haciendo en sus contenedores.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım