Compare commits

...

12 commits
1.0.0 ... main

Author SHA1 Message Date
d7e6fb173f
Verschieben des Bildes
Some checks failed
Test the installation routine / test-install (push) Has been cancelled
2025-07-23 22:29:39 +02:00
Dennis Heinrich
a8f90f14a5 Aktualisiertes Beispiel-Gif für das Repository mit Asciinema 2025-07-23 19:44:11 +02:00
Dennis Heinrich
2c5a823246 Name des Installations-Ordners angepasst 2025-07-23 19:23:30 +02:00
Dennis Heinrich
323e7316d5 Workflow zum Testen der Installationsroutine 2025-07-23 19:19:36 +02:00
Dennis Heinrich
d656e26492 Support für die Shop-Version 5.5.2, Anleitung für neue Installationsmethode, Standard-PHP 8.4 2025-07-23 19:09:44 +02:00
Dennis Heinrich
924f5937b5 Standardplugins entfernt 2025-07-23 18:08:00 +02:00
Dennis Heinrich
fb50f30e02 Just als Command-Runner in das DDEV-Image bauen 2025-07-23 18:07:09 +02:00
7839dfa653 Anpassung der Justfile 2024-05-08 15:43:02 +02:00
7224b5da06 Unnötige Datei entfernt 2024-05-07 17:57:53 +02:00
d71d27cf96 Behalte den Ordner Templates 2024-05-07 17:51:52 +02:00
b741f86f0a Konfigurationen für Apache 2024-05-06 23:09:59 +02:00
e6e94e9954 Verbesserung der Code-Nachverfolgung durch gezielten Ausschluss von Commit-Dateien 2024-05-06 22:54:16 +02:00
13 changed files with 181 additions and 99 deletions

7
.ddev/commands/web/just Executable file
View file

@ -0,0 +1,7 @@
#!/bin/bash
## Description: Run just commands in the web container
## Usage: just [command] [args...]
## Example: "ddev just install" or "ddev just start"
just "$@"

15
.ddev/config.yaml Normal file
View file

@ -0,0 +1,15 @@
name: jtl-shop
type: php
docroot: ./shop
php_version: "8.4"
webserver_type: apache-fpm
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
database:
type: mariadb
version: "10.11"
use_dns_when_possible: true
composer_version: "2"
web_environment: []
corepack_enable: false

View file

@ -0,0 +1,3 @@
RUN curl -L "https://github.com/casey/just/releases/download/1.36.0/just-1.36.0-x86_64-unknown-linux-musl.tar.gz" \
| tar -xz -C /usr/local/bin
RUN chmod +x /usr/local/bin/just

BIN
.github/assets/command-exec.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8 MiB

View file

@ -0,0 +1,61 @@
name: Test the installation routine
on:
push:
pull_request:
workflow_dispatch:
jobs:
test-install:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up DDEV
uses: ddev/github-action-setup-ddev@v1
- name: Start DDEV environment
run: |
ddev start
ddev describe
- name: Run installation
run: |
echo "Starting JTL-Shop installation..."
ddev just install
- name: Basic verification
run: |
echo "=== Verifying installation ==="
# Check if basic shop files are present
test -d shop/
test -f shop/index.php
test -d shop/includes/
# Check if database tables were created
ddev exec "mysql -e 'SHOW TABLES;' db" | grep -q "tadmin" || (echo "Database tables not found" && exit 1)
echo "Installation verification completed successfully!"
- name: Debug on failure
if: failure()
run: |
echo "=== DDEV Status ==="
ddev describe
echo "=== DDEV Logs ==="
ddev logs
echo "=== Shop Directory ==="
ls -la shop/ || true
echo "=== Install Directory ==="
ls -la shop/install/ || true
- name: Cleanup
if: always()
run: |
ddev stop
ddev remove -RO

8
.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
# Ignore all changes except for non-default plugins and templates
/shop/*
!/shop/plugins
!/shop/templates
/shop/templates/NOVA
# Include the DDEV configuration
!/.ddev

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "shop/plugins/dh_matomo_tracking"]
path = shop/plugins/dh_matomo_tracking
url = git@github.com:cloudmaker97/JTL-Matomo-Tracking.git

View file

@ -1,23 +1,26 @@
# Entwicklungsumgebung für den JTL-Shop
## 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.
### Vorschau der Installation mit nur einem Befehl
![Installation im Terminal](https://github.com/cloudmaker97/JTL-Shop-Entwicklungsumgebung/assets/4189795/98325070-fb9a-4f19-94b0-89bc162a07db)
### Voraussetzungen
## Voraussetzungen
Es gelten die Lizenzbedingungen der JTL-Software-GmbH. Die Lizenzbedingungen sind in diesem Projekt als Lizenzdatei hinterlegt. Zur Nutzung dieses Repositories sind zudem folgende Voraussetzungen notwendig:
- [Docker: Virtualisierung](https://www.docker.com/)
- [Just: Command Runner](https://just.systems/)
- [DDEV: Docker Development](https://ddev.com/)
## 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.
```bash
# 1. Klonen des Repository via SSH
git clone git@github.com:cloudmaker97/JTL-Shop-Entwicklungsumgebung.git
# 2. Anschließend in der Verzeichnis wechseln
cd JTL-Shop-Entwicklungsumgebung
# 3. Installation unter Standardeinstellungen
ddev just install
```
Zur Installation des Shops wird nur ein Befehl benötigt. Der Befehl `ddev just install` installiert den Shop mit der neusten Version und den standardmäßigen Einstellungen.
Nach der erfolgreichen Installation kann der Shop über die angezeigte URL aufgerufen werden. Die Anmeldedaten wurden automatisch festgelegt und sind:
@ -26,46 +29,47 @@ Nach der erfolgreichen Installation kann der Shop über die angezeigte URL aufge
| Shop-Administration | `admin` | `admin` |
| Shop-Abgleich | `sync` | `sync` |
### Benutzerdefinierte Installations-Routinen
## Benutzerdefinierte Installations-Routinen
### Nutzung einer zweiten DDEV-Instanz
1. Repository klonen
2. Änderung der Domain in `.ddev/config.yaml`
3. Den Container zwingend mit `ddev restart` neu starten
4. Anschließend die Installation mit Argument starten
```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.
# Weitere Parameter sind in der Tabelle unten aufgeführt.
just shop_version="5.3.1" install_demo="false" php_version="8.1"
# Installiert den Shop unter einer anderen Domain
ddev just shop_url="jtl-shop.ddev.site" shop_version="5.5.2"
```
### Nutzung einer anderen Shop-Version
> 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.
1. Repository klonen
2. Notwendige PHP-Version unter `.ddev/config.yaml` eintragen
3. Den Container zwingend mit `ddev restart` neu starten
4. Anschließend die Installation mit Argument starten
```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
# Installiert den Shop unter einer anderen Domain
ddev just shop_version="5.5.2"
```
### Sonstige Installationsparameter
Hier sind alle Installationsparameter die mit der Installation mitgegeben werden um die Installation zu beeinflussen, Testprodukte zu erstellen etc.
| 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` |
| `shop_version` | `5.5.2` | Die Shop-Version, die installiert werden soll. Aktuell stehen zur Auswahl `5.5.2`, `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' |
| `install_demo` | `true` | Ob der neue Shop Demo-Daten enthalten soll, ansonsten muss `false` angegeben werden. |
| `install_demo_products` | `10` | Falls die Demo-Daten installiert werden: Anzahl der zu generierenden Produkte |
| `install_demo_categories` | `3` | Falls die Demo-Daten installiert werden: Anzahl zu generierenden der Kategorien |
| `install_demo_manufacturers` | `3` | Falls die Demo-Daten installiert werden: Anzahl der zu generierenden Hersteller |
| `install_url` | `https://jtl-shop-**X.X.X**.ddev.site` | Die URL über die |
| `install_url` | `jtl-shop.ddev.site` | Die URL über die der Shop erreicht werden soll. Achtung: DDEV Config vorher anpassen! |
### Befehle für den DDEV-Entwicklungsserver
### Beispiel
```bash
# Startet den Entwicklungs-Container
just start
# Stoppt den Entwicklungs-Container
just stop
# Zeigt die Beschreibung und URLs des Containers an
just describe
```
## 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.
![Installation Demo](.github/assets/command-exec.gif)

View file

@ -1,95 +1,48 @@
shop_version := "5.3.1"
php_version := "8.2"
shop_version := "5.5.2"
shop_url := "jtl-shop.ddev.site"
install_demo := "true"
install_demo_products := "10"
install_demo_categories := "3"
install_demo_manufacturers := "3"
# Installiert den Shop mit den angegebenen Werten
[linux]
# Installiert den Shop mit den angegebenen Werten (Standard)
install:
@echo "Installiere Abhängigkeiten (ddev, rsync, unzip, mkcert)"
just install-dependencies
@echo "Installiere den Shop"
just uninstall
mkdir -p ./shop
@echo "Lade JTL-Shop v{{shop_version}} herunter"
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
# Unzip and ignore existing files
cd ./shop && unzip -on core.zip && rm core.zip
# Overwrite all files, otherwise set --ignore-existing for rsync
@echo "Kopiere heruntergeladene Dateien in das Shop-Verzeichnis"
cd ./shop && rsync -av core-*/* . && rm -rf core-*
@echo "Kopiere Installer in das Shop-Verzeichnis"
just copy-installer
@echo "Konfiguriere die Entwicklungsumgebung"
just ddev-configuration
@echo "Installiere den Shop automatisch und lösche das Installationsverzeichnis"
just run-installer
[private]
[linux]
install-dependencies:
sudo apt-get update
sudo apt-get install -y curl rsync unzip
curl -fsSL https://ddev.com/install.sh | bash
mkcert -install
# Deinstalliert den Shop. Löscht alle Dateien und Datenbanken
[linux]
uninstall:
@echo "Deinstalliere den Shop"
@rm -rf ./shop/*
@if [ -d ".ddev" ]; then \
echo "Entferne vorherige Installation" \
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:
# Composer install
@echo "\r\nInstalliere Composer Abhängigkeiten..."
@cd ./shop && composer install --working-dir=./includes
# Installer
@echo "\r\nInstalliere die Datenbank..."
@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={{install_demo_products}}&demoCategories={{install_demo_categories}}&demoManufacturers={{install_demo_manufacturers}}' https://jtl-shop-{{shop_version}}.ddev.site/install/install.php?task=doinstall
@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={{install_demo_products}}&demoCategories={{install_demo_categories}}&demoManufacturers={{install_demo_manufacturers}}' https://{{shop_url}}/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={{install_demo_products}}&demoCategories={{install_demo_categories}}&demoManufacturers={{install_demo_manufacturers}}' https://jtl-shop-{{shop_version}}.ddev.site/install/install.php?task=installdemodata; \
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={{install_demo_products}}&demoCategories={{install_demo_categories}}&demoManufacturers={{install_demo_manufacturers}}' https://{{shop_url}}/install/install.php?task=installdemodata; \
fi
clear
@echo "Installation erfolgreich abgeschlossen."
@echo "Erreichbar unter: https://jtl-shop-{{shop_version}}.ddev.site"
@echo "Erreichbar unter: https://{{shop_url}}"
[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

9
shop/plugins/.htaccess Normal file
View file

@ -0,0 +1,9 @@
<FilesMatch ".+\.ph(ar|p|tml)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
</FilesMatch>

19
shop/templates/.htaccess Normal file
View file

@ -0,0 +1,19 @@
<Files *.tpl>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
</Files>
<Files *.php>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
</Files>

Binary file not shown.