From 9506acd2547c47ee3a2cdb5a08df57d02da8f985 Mon Sep 17 00:00:00 2001 From: Mateusz Zalewski Date: Wed, 30 Sep 2020 16:00:12 +0200 Subject: [PATCH 1/2] Explain migrations UPGRADE in details --- UPGRADE-1.8.md | 48 ++++++++++++++++++++++++++++++- etc/migrations-1.8.sh | 67 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 etc/migrations-1.8.sh diff --git a/UPGRADE-1.8.md b/UPGRADE-1.8.md index f7fba979a67..0645be0229d 100644 --- a/UPGRADE-1.8.md +++ b/UPGRADE-1.8.md @@ -147,6 +147,12 @@ time out during this ajax request (previously no serialization group was defined in some admin URLs you can now replace `/admin` by `/%sylius_admin.path_name%`. Also the route is now dynamic. You can change the `SYLIUS_ADMIN_ROUTING_PATH_NAME` environment variable to custom the admin's URL. +## Special attention + +### Migrations + +As we switched to the `3.0` version of Doctrine Migrations, there are some things that need to be changed in the application that is upgraded to Sylius 1.8: + 1. Replace the DoctrineMigrationsBundle configuration in `config/packages/doctrine_migrations.yaml`: ``` @@ -158,9 +164,49 @@ Also the route is now dynamic. You can change the `SYLIUS_ADMIN_ROUTING_PATH_NAM + storage: + table_storage: + table_name: sylius_migrations + + migrations_paths: + + 'DoctrineMigrations': 'src/Migrations' ``` -## Special attention +1. Remove all the legacy Sylius-Standard migrations (they're not needed anymore) + + ```bash + rm "src/Migrations/Version20170912085504.php" + #... + ``` + +1. Mark all migrations from **@SyliusCoreBundle** and **@SyliusAdminApiBundle** as executed +(they're the same as legacy ones, just not recognized by the doctrine _yet_) + + ```bash + bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161202011555" --add --no-interaction + #... + ``` + + > BEWARE! + + If you're using some Sylius plugins you'll probably need to handle their migrations as well. + You can either leave them in your `src/Migrations/` catalog and treat as _your own_ or use the migrations from the vendors. + However, it assumes that plugin provides a proper integration with Doctrine Migrations 3.0 - as, for example, + [Invoicing Plugin](https://github.com/Sylius/InvoicingPlugin/blob/master/src/DependencyInjection/SyliusInvoicingExtension.php#L33). + + > TIP + + Take a look at [etc/migrations-1.8.sh](etc/migrations-1.8.sh) script - it would execute points 2) and 3) automatically. + +1. Do the same for your own migrations. Assuming your migrations namespace is `DoctrineMigrations` and +migrations catalog is `src/Migrations`, you can run such a script: + + ```bash + #!/bin/bash + + for file in $(ls -1 src/Migrations/ | sed -e 's/\..*$//') + do + bin/console doctrine:migrations:version "DoctrineMigrations\\${file}" --add --no-interaction + done + ``` + +1. Run `bin/console doctrine:migrations:migrate` to apply migrations added in Sylius 1.8 ### Translations diff --git a/etc/migrations-1.8.sh b/etc/migrations-1.8.sh new file mode 100644 index 00000000000..ae7df751dc1 --- /dev/null +++ b/etc/migrations-1.8.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +echo "Removing redundant Sylius-Standard migrations" + +rm "src/Migrations/Version20170912085504.php" +rm "src/Migrations/Version20170913125128.php" +rm "src/Migrations/Version20171003103916.php" +rm "src/Migrations/Version20180102140039.php" +rm "src/Migrations/Version20190109095211.php" +rm "src/Migrations/Version20190109160409.php" +rm "src/Migrations/Version20190508083953.php" +rm "src/Migrations/Version20190621035710.php" +rm "src/Migrations/Version20191119131635.php" +rm "src/Migrations/Version20200301170604.php" + +echo "Adding executed migrations from Sylius" + +bin/console doctrine:migrations:sync-metadata-storage +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161202011555" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161209095131" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161214153137" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161215103325" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161219160441" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161220092422" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161221133514" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161223091334" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161223164558" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170103120334" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170109143010" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170110120125" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170116215417" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170117075436" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170120164250" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170124221955" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170201094058" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170206122839" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170206141520" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170208102345" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170208103250" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170214095710" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170214104908" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170215143031" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170217141621" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170220150813" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170223071604" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170301135010" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170303170201" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170321131352" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170327135945" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170401200415" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170518123056" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170824124122" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20170913125128" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20171003103916" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20180102140039" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20180226142349" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20190109095211" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20190109160409" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20190204092544" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20190416073011" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20190607135638" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20200110132702" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20200122082429" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20200202104152" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\AdminApiBundle\Migrations\Version20161202011556" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\AdminApiBundle\Migrations\Version20170313125424" --add --no-interaction +bin/console doctrine:migrations:version "Sylius\Bundle\AdminApiBundle\Migrations\Version20170711151342" --add --no-interaction From e2047b2cf65e126fc30ed9b079ca7815ef1b1b12 Mon Sep 17 00:00:00 2001 From: Mateusz Zalewski Date: Thu, 1 Oct 2020 13:26:48 +0200 Subject: [PATCH 2/2] Prepend application "migrations_path" configuration --- .../CoreBundle/DependencyInjection/SyliusCoreExtension.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Sylius/Bundle/CoreBundle/DependencyInjection/SyliusCoreExtension.php b/src/Sylius/Bundle/CoreBundle/DependencyInjection/SyliusCoreExtension.php index 908332279d1..7a7101b3a82 100644 --- a/src/Sylius/Bundle/CoreBundle/DependencyInjection/SyliusCoreExtension.php +++ b/src/Sylius/Bundle/CoreBundle/DependencyInjection/SyliusCoreExtension.php @@ -111,5 +111,11 @@ private function prependDoctrineMigrations(ContainerBuilder $container): void 'Sylius\Bundle\CoreBundle\Migrations' => [], ], ]); + + // set application "migrations_path" configuration as default to not require `--namespace` option for `doctrine:migrations:diff` + $doctrineConfig = $container->getExtensionConfig('doctrine_migrations'); + if (count($doctrineConfig) > 2 && isset($doctrineConfig[count($doctrineConfig)-1]['migrations_paths'])) { + $container->prependExtensionConfig('doctrine_migrations', \array_pop($doctrineConfig)); + } } }