Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve 1.8 migrations upgrade instructions #11898

Merged
merged 2 commits into from
Oct 1, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
48 changes: 47 additions & 1 deletion UPGRADE-1.8.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`:

```
Expand All @@ -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

Expand Down
67 changes: 67 additions & 0 deletions etc/migrations-1.8.sh
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
}
}