commit 7432a0b5d330e1f8aaebd7f27562d91887d178c9 Author: Dennis Heinrich Date: Fri Apr 5 21:39:27 2024 +0200 Basis-Umgebung für den JTL-Shop erstellt diff --git a/README.md b/README.md new file mode 100644 index 0000000..2fbd800 --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# Shop Entwicklung + +## Beschreibung + +Dieses Repository enthält alle benötigten Scripts, um einen JTL-Shop schnell und automatisiert zu Entwicklungszwecken zu installieren. Die Nutzung für produktive Systeme ist mit diesem Projekt nicht vorgesehen und wird auch nicht empfohlen. + +### Lizenz der Shop-Software + +> Die Shop-Software wurde durch die [JTL-Software GmbH](https://www.jtl-software.de/) erstellt und unterliegt den jeweiligen Lizenzbedingungen, welche auch hier einsehbar sind: [JTL-Shop / Core](https://gitlab.com/jtl-software/jtl-shop/core/-/blob/master/LICENSE.md). + +### Lizenz der Scripts in diesem Projekt + +> Die Scripts zur automatisierten Installation wurden von [Dennis Heinrich](https://dennis-heinri.ch) erstellt und unterliegen ebenfalls den selben Lizenzbedingungen, wie die Shop-Software. + +## Installation und Befehle + +Zur Installation des Shops wird nur ein Befehl benötigt. Der Befehl `just install` installiert den Shop mit der neusten Version und den standardmäßigen Einstellungen. Optional kann auch eine spezifische Version installiert werden. Dazu wird eine unterstützte Versionsnummer verwendet. + +```bash +# Führt die Installation mit der neusten Shop-Version auf PHP 8.1 +# aus und installiert anschließend den Shop mit Demo-Daten. +just +``` + +```bash +# Führt die Installation mit spezifischen Werten aus. +# Darüber kann die Installation der Shop-Version gesteuert werden, +# die PHP-Version und ob Demo-Daten installiert werden sollen. +just shop_version="5.3.1" install_demo="false" php_version="8.1" +``` + +```bash +# Erstellt ein Backup der Datenbank, Deinstalliert den Shop, +# und löscht anschließend alle Dateien und Datenbanken. Die Datenbanken +# werden als Snapshot im `.ddev/db_snapshots` Ordner gespeichert. +just uninstall +``` + +```bash +# Diese Befehle sind zur Steuerung des DDEV-Containers vorgesehen. +# <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> +# Startet den DDEV-Container +just start +# Stoppt den DDEV-Container +just stop +# Zeigt die Beschreibung und URLs des Containers an +just describe +``` + +| Parameter | Standardwert | Beschreibung | +| --- | --- | --- | +| `shop_version` | `5.3.1` | Die Shop-Version, die installiert werden soll. Aktuell stehen zur Auswahl `5.3.1`, `5.2.5`, `5.1.6` oder `5.0.6`. Um weitere Versionen anzubieten, siehe weiter unten im Abschnitt 'Unterstützte Shop-Versionen' | +| `php_version` | `8.2` | Die PHP-Version, die genutzt werden soll. `5.6`, `7.0`, `7.1`, `7.2`, `7.3`, `7.4`, `8.0`, `8.1`, `8.2`, oder `8.3` | +| `install_demo` | `true` | Ob der neue Shop Demo-Daten enthalten soll, ansonsten muss `false` angegeben werden. | + +## Voraussetzungen + +Zur Nutzung dieses Repositories sind folgende Voraussetzungen notwendig: + +- [DDEV: Entwicklungsserver](https://ddev.readthedocs.io/en/stable/) +- [Docker: Virtualisierung](https://www.docker.com/) +- [Just: Command Runner](https://just.systems/) + +## Unterstützte Shop-Versionen + +Da die JTL-Shop Core den Installer nicht mehr zur Verfügung stellt, ist es notwendig, die Installer-Dateien in diesem Repository im Ordner `tools/installer` zu hinterlegen. Die Dateien sind in den entsprechenden Versionen im Dateinamen `install_**X.X.X**.zip` hinterlegt. Die Installations-Dateien können von der [Webseite von JTL](https://www.jtl-software.de/) mit einem Kundenkonto bezogen werden. + +Es ist außerdem notwendig, dass in dem Repository des JTL-Shops / Core die Versionen als Tags hinterlegt sind. Diese Tags müssen mit den Versionen im Dateinamen der Installer-Dateien übereinstimmen. diff --git a/justfile b/justfile new file mode 100644 index 0000000..3ebda96 --- /dev/null +++ b/justfile @@ -0,0 +1,75 @@ +shop_version := "5.3.1" +php_version := "8.2" +install_demo := "true" + +# Installiert den Shop mit den angegebenen Werten +[linux] +install: + just uninstall + mkdir -p ./shop + cd ./shop && wget https://gitlab.com/jtl-software/jtl-shop/core/-/archive/v{{shop_version}}/core-v{{shop_version}}.zip -O core.zip + cd ./shop && unzip -o core.zip && rm core.zip + sudo apt-get update && sudo apt-get install rsync + # Overwrite all files, otherwise set --ignore-existing for rsync + cd ./shop && rsync -av core-*/* . && rm -rf core-* + just copy-installer + just ddev-configuration + just run-installer + +# Deinstalliert den Shop. Löscht alle Dateien und Datenbanken +[linux] +uninstall: + @rm -rf ./shop/* + @if [ -d ".ddev" ]; then \ + ddev delete -y; \ + else \ + echo "Keine vorhandene Installation gefunden."; \ + fi + +# Startet die Entwicklungsumgebung +[linux] +start: + @if [ -d ".ddev" ]; then \ + ddev start; \ + else \ + echo "Keine Konfiguration gefunden, bitte zuerst 'just install' ausführen."; \ + fi + +# Fährt die Entwicklungsumgebung herunter +[linux] +stop: + @if [ -d ".ddev" ]; then \ + ddev stop; \ + else \ + echo "Keine Konfiguration gefunden, bitte zuerst 'just install' ausführen."; \ + fi + +# Zeigt Informationen zur Entwicklungsumgebung an +[linux] +describe: + @if [ -d ".ddev" ]; then \ + ddev describe; \ + else \ + echo "Keine Konfiguration gefunden, bitte zuerst 'just install' ausführen."; \ + fi + +[private] +run-installer: + @echo "\r\nInstalling JTL-Shop {{shop_version}}..." + @curl --silent -X POST -k -H 'Content-Type: application/x-www-form-urlencoded' -d 'admin[name]=admin&admin[pass]=admin&admin[locale]=de&wawi[name]=sync&wawi[pass]=sync&db[host]=db&db[pass]=db&db[socket]=&db[user]=db&db[name]=db&demoProducts=10&demoCategories=10&demoManufacturers=10' https://jtl-shop-{{shop_version}}.ddev.site/install/install.php?task=doinstall + @if [ {{install_demo}} = "true" ]; then \ + curl --silent -X POST -k -H 'Content-Type: application/x-www-form-urlencoded' -d 'admin[name]=admin&admin[pass]=admin&admin[locale]=de&wawi[name]=sync&wawi[pass]=sync&db[host]=db&db[pass]=db&db[socket]=&db[user]=db&db[name]=db&demoProducts=10&demoCategories=10&demoManufacturers=10' https://jtl-shop-{{shop_version}}.ddev.site/install/install.php?task=installdemodata; \ + fi + @echo "Installation finished. You can now access the shop at https://jtl-shop-{{shop_version}}.ddev.site" + +[private] +copy-installer: + cp ./tools/installer/install_{{shop_version}}.zip ./shop/install/installer.zip + unzip -o ./shop/install/installer.zip -d ./shop/install + rm ./shop/install/installer.zip + +[private] +ddev-configuration: + ddev config --php-version {{php_version}} --project-type php --docroot ./shop --project-name jtl-shop-{{shop_version}} + ddev start + ddev exec composer install --working-dir=./shop/includes \ No newline at end of file diff --git a/shop-development.code-workspace b/shop-development.code-workspace new file mode 100644 index 0000000..fc5c037 --- /dev/null +++ b/shop-development.code-workspace @@ -0,0 +1,9 @@ +{ + "folders": [ + { + "path": ".", + "name": "JTL-Shop: System zur Entwicklung" + } + ], + "settings": {} +} \ No newline at end of file diff --git a/shop/.gitkeep b/shop/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tools/installer/install_5.0.6.zip b/tools/installer/install_5.0.6.zip new file mode 100644 index 0000000..7ff5115 Binary files /dev/null and b/tools/installer/install_5.0.6.zip differ diff --git a/tools/installer/install_5.1.6.zip b/tools/installer/install_5.1.6.zip new file mode 100644 index 0000000..d595088 Binary files /dev/null and b/tools/installer/install_5.1.6.zip differ diff --git a/tools/installer/install_5.2.5.zip b/tools/installer/install_5.2.5.zip new file mode 100644 index 0000000..b3f8a1f Binary files /dev/null and b/tools/installer/install_5.2.5.zip differ diff --git a/tools/installer/install_5.3.1.zip b/tools/installer/install_5.3.1.zip new file mode 100644 index 0000000..a5d01fa Binary files /dev/null and b/tools/installer/install_5.3.1.zip differ