ydeploy icon indicating copy to clipboard operation
ydeploy copied to clipboard

Support for PHP 8.x, deployer 7.x

Open dgrothaus-mc opened this issue 3 years ago • 3 comments

Änderungen

  • Update der Abhängigkeiten für PHP 8.0
  • Update von Deployer auf stabiles 7.x (7.0.2)
  • Anpassung der Tasks auf neue Namensgebung durch Deployer
  • Ersetzen der veralteten Deployer Tasks durch die neuen Tasks
  • Anpassung an neue Deployer 7.x Exception Klassen
  • diff_file.php: Fix für MySql mit Standard Fremdschlüssel und NO ACTION, welches bei MySql ein Alias für Restrict ist.

Neue Funktionen

  • Composer wird auf jedem Host in Addons Verzeichnissen ausgeführt, die eine composer.lock Datei haben. Hierdurch, können die vendor/ Verzeichnisse aus dem Git Repository weg gelassen werden.
  • Wird ein git branch in der deploy.php angegeben, dann checkt der build Task diesen jetzt auch aus, so dass der korrekte Branch gebaut und deployt wird.
  • Konfigurierbare Verzeichnisse (shared, copied, writable) lassen sich jetzt in der deploy.php ergänzen. ydeploy überschreibt diese Verzeichnisse nicht mehr fix.

Noch offene Fehler und Anmerkungen

  • Der Commit ceaf6a9dc302021d9dc0cd3c099054b2716f0aa1 kann weg gelassen werden. Hier handelt es sich um einen GitHub Workflow, welcher automatisch ein ZIP Archiv erstellt und es als Release veröffentlicht.
  • dep deploy funktioniert nicht auf Mac. Ob es mit Version 1.x funktioniert hat, konnte nicht getestet werden.
  • Manche Deployer Tasks erwarten ein release/ Verzeichnis / Symlink. Dieses existiert nur während des Deployments und wird danach in current umbenannt und ist nicht mehr verfügbar. Das Kopieren von einem Host zum anderen funktioniert dadurch zum Beispiel nicht. Dieses Verhalten müsste in 1.x auch schon so gewesen sein.
  • An einigen Stellen nicht an Coding-Standards von Redaxo gehalten.

dgrothaus-mc avatar Oct 25 '22 11:10 dgrothaus-mc

  • dep deploy funktioniert nicht auf Mac. Ob es mit Version 1.x funktioniert hat, konnte nicht getestet werden.

In der Version 1 funktionierte das auf Mac. Hattest du in der deploy.php das notiert?

set('default_stage', 'staging');

Ansonsten kann man auch über dep deploy staging starten.

Aber vielen Dank für den PR. @gharlan wird sich das nach seinen Ferien genauer ansehen und besser prüfen können.

tbaddade avatar Nov 08 '22 12:11 tbaddade

Ansonsten kann man auch über dep deploy staging starten.

So lasse ich das Deployment auf dem Terminal laufen. Bei MacOS bricht es mit einem Fehler ab. Ich kann den Fehler noch raus suchen. Vielleicht ist auch das System des Kollegen mit MacOS komisch™️ eingerichtet.

Auf demselben Mac-System macht auch das zipinstaller package Probleme mit Archiven, die auf anderen Systemen ohne Probleme funktionieren. Gibt hier keinen direkten Zusammenhang, aber vielleicht ist es doch das System.

dgrothaus-mc avatar Nov 08 '22 12:11 dgrothaus-mc

Folgende Fehlermeldung auf dem Mac:

$ php redaxo/src/addons/ydeploy/vendor/deployer/deployer/dep deploy preview
task build:start
task build
task build:info
[local] ✂ Building dev on local
task deploy:setup
task deploy:release
task deploy:update_code
task build:assets
task deploy:clear_paths
task deploy:symlink
task deploy:cleanup
task deploy:info
[preview] info deploying dev
task deploy:setup
task deploy:release
task deploy:copy_dirs
[preview]  Deployer\Exception\Exception  in copy_dirs.php on line 15:
[preview]
[preview]   The "previous_release" available only after deploy:release task.
[preview]
task deploy:failed
task deploy:unlock
task deploy:unlock

MC-PMOE avatar Nov 15 '22 12:11 MC-PMOE

Der PR würde vermutlich mein Problem lösen, das ich gerade auf PHP 8.1 habe, richtig?

Host Name: foobar                                                                                                                                         
                                                                                                                                                               
 ================                                                                                                                                             
 PHP Fatal error:  Declaration of rex_console_command_loader::get($name) must be compatible with Symfony\Component\Console\CommandLoader\CommandLoaderInter   
  face::get(string $name): Symfony\Component\Console\Command\Command in /home/ehlb/htdocs/foobar.de/releases/62/src/core/lib/console/command   
  _loader.php on line 68                                                                                                                                       
  Declaration of rex_console_command_loader::get($name) must be compatible with Symfony\Component\Console\CommandLoader\CommandLoaderInterface::get(string $   
  name): Symfony\Component\Console\Command\Command

AWqxKAWERbXo avatar Feb 13 '23 09:02 AWqxKAWERbXo

Ich habe die Änderungen von 1.1.2 und 1.2.0 aus diesem Jahr nachgezogen und den PR entsprechend aktualisiert.

Den Commit 483b83aa habe ich nicht übernommen, da mir meine Lösung praktischer erscheint. Meine Lösung bildet die MariaDB Implementierung als auch die MySQl Implementierung von NO ACTION ab und Redaxo kann aktuell mit keiner anderen Datenbank umgehen.

dgrothaus-mc avatar Jul 07 '23 13:07 dgrothaus-mc

Sorry für die später Rückmeldung und danke für den PR! Wir hatten uns ja auch über Slack mal unterhalten, wo ich bereits erwähnte, dass ich eigentlich den Workflow insgesamt etwas anpassen möchte für deployer v7. Entsprechend des Workflows, wie ich ihn bereits seit längerem in Symfony-Projekten nutze. Der Workflow ist u.a. daraufhin optimiert, dass man leichter über GitLab-CI deploymen kann.

Das habe ich jetzt im main-branch umgesetzt und ich werde jetzt eine 2.0-beta rausbringen.

Entsprechend kann ich den großen PR hier so leider nicht annehmen. Aber falls du Änderungen hier raus weiterhin als sinnvolle Ergänzung siehst, diese gerne nochmal als separate PRs vorschlagen.

gharlan avatar Oct 16 '23 16:10 gharlan