目前正在使用TYPO3站点TYPO3 v9 Composer升级到下一个主要版本10.4。
我如何自动化这个过程--而不是手动地将composer命令放在一起,检查每个扩展并找出我需要升级到哪个版本,有什么方法可以自动完成这个任务,还是帮助创建带有所有系统和第三方扩展的composer require命令?
因此,我想执行以下操作(或类似的操作):
composer require typo3/cms-backend:10.4 typo3/cms-core:10.4 ...(all system extension) \
... helhum/typo3-console:^6.0.0 ... (3rdparty extensions with correct version constraint) \
--update-with-dependencies 发布于 2021-03-06 11:50:39
自动更新是个好主意,因为它降低了重新启动后端锁/内容冻结所需的时间。
对于最后重新启动,我的步骤是:
为了使其工作,您只需要一个脚本,它允许您在本地(或作为CI管道)经常重复更新过程,直到您对可重复的结果感到满意为止。
我知道这里有一些帮助脚本/扩展来促进这一点,但我更愿意把它放在一起作为shell脚本。在本地,我将有最新的代码,我们现在准备的是一个脚本,它将新代码与旧数据集成(我指DB & /fileadmin,/uploads)。
以下是一些提示:
ddev pull命令,可以方便地获取实时数据。直到现在,我使用了这个ddev的自定义命令。vendor/bin/typo3 cleanup:命名空间中的命令可以降低处理不一致数据库的可能性。vendor/bin/typo3cms upgrade:wizard运行它们vendor/bin/typo3cms database:import <<< "UPDATE tt_content SET hidden=1 WHERE ..."。vendor/bin/typo3cms database:updateschema对于你的问题:
我是在一个独家执行核心和3 3rdparty扩展的更新,还是禁用(一些)3 3rdparty扩展更安全?
如果安装了某些扩展,某些升级向导的行为可能会有所不同。对于依赖TCA的迁移来说尤其如此。因此,我建议在一步内更新所有扩展。
另外,我如何自动化这个过程(composer命令)
按照我的方式,您必须只运行这个composer命令一次,然后提交composer.lock。构建它可能有点麻烦,但我不认为有必要将其自动化。
发布于 2021-09-17 08:05:13
当我写这个问题时,我没有意识到,打字已经有了一个内置的解决方案。使用rector,您可以在切换到下一个主要版本时,在composer.json中自动更新扩展版本。
有关最新的说明,请参见打印3/驱动程序的正式文档:
重要:当下一个版本的扩展不可用时,这不会给您一个警告(当您尝试composer update时,您将得到这个警告)。与往常一样,您应该使用版本控制系统,在准备就绪之前不要提交更改。致力于开发系统,而不是生产。
您可以使用rector/rector检查和修复PHP文件,但也可以使用composer.json。
例如,这样做是为了测试:
composer require typo3/cms-core:^10.4.0
composer require dmind/cookieman:^2.9.2
composer require georgringer/news
composer require rector/rector --dev(我在本例中使用了这个扩展cookieman,因为最新版本每个只支持一个TYPO3版本-尽管版本控制有点奇怪。我使用"news“,因为它目前不适用于v11)。
创建一个rector.php
vendor/bin/rector init --template-type=typo3添加/注释composer.json对TYPO3 10的检查:
rector.php:
$containerConfigurator->import(Typo3SetList::COMPOSER_PACKAGES_104_CORE);
$containerConfigurator->import(Typo3SetList::COMPOSER_PACKAGES_104_EXTENSIONS);现在申请校长(仅适用于composer.json ):
vendor/bin/rector process --clear-cache composer.json切换到11:
rector.php:
$containerConfigurator->import(Typo3SetList::COMPOSER_PACKAGES_110_CORE);
$containerConfigurator->import(Typo3SetList::COMPOSER_PACKAGES_110_EXTENSIONS);现在,请将该程序(再次应用于composer.json ):
vendor/bin/rector process --clear-cache composer.json不仅对cms核心的需求,而且对扩展的需求都应该已经改变了。
现在继续使用composer update或任何通常用于在直接更改composer.lock时更新composer.json的内容。
https://stackoverflow.com/questions/66489167
复制相似问题