Compare commits

..

No commits in common. "main" and "1.0.0" have entirely different histories.
main ... 1.0.0

13 changed files with 103 additions and 185 deletions

View file

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

View file

@ -1,15 +0,0 @@
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

@ -1,3 +0,0 @@
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8 MiB

View file

@ -1,61 +0,0 @@
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
View file

@ -1,8 +0,0 @@
# 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
View file

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

View file

@ -1,26 +1,23 @@
# 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.
## Voraussetzungen
### 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
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/)
- [DDEV: Docker Development](https://ddev.com/)
- [Just: Command Runner](https://just.systems/)
## Installation und Befehle
```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.
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.
Nach der erfolgreichen Installation kann der Shop über die angezeigte URL aufgerufen werden. Die Anmeldedaten wurden automatisch festgelegt und sind:
@ -29,47 +26,46 @@ Nach der erfolgreichen Installation kann der Shop über die angezeigte URL aufge
| Shop-Administration | `admin` | `admin` |
| Shop-Abgleich | `sync` | `sync` |
## 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
### Benutzerdefinierte Installations-Routinen
```bash
# Installiert den Shop unter einer anderen Domain
ddev just shop_url="jtl-shop.ddev.site" shop_version="5.5.2"
# 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"
```
### 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
# Installiert den Shop unter einer anderen Domain
ddev just shop_version="5.5.2"
# 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
```
### 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.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' |
| `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. |
| `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` | `jtl-shop.ddev.site` | Die URL über die der Shop erreicht werden soll. Achtung: DDEV Config vorher anpassen! |
| `install_url` | `https://jtl-shop-**X.X.X**.ddev.site` | Die URL über die |
### Beispiel
### Befehle für den DDEV-Entwicklungsserver
![Installation Demo](.github/assets/command-exec.gif)
```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.

View file

@ -1,48 +1,95 @@
shop_version := "5.5.2"
shop_url := "jtl-shop.ddev.site"
shop_version := "5.3.1"
php_version := "8.2"
install_demo := "true"
install_demo_products := "10"
install_demo_categories := "3"
install_demo_manufacturers := "3"
# Installiert den Shop mit den angegebenen Werten (Standard)
# Installiert den Shop mit den angegebenen Werten
[linux]
install:
@echo "Installiere den Shop"
@echo "Installiere Abhängigkeiten (ddev, rsync, unzip, mkcert)"
just install-dependencies
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
# Unzip and ignore existing files
cd ./shop && unzip -on core.zip && rm core.zip
cd ./shop && unzip -o 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/*
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://{{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://{{shop_url}}/install/install.php?task=installdemodata; \
@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:
@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
@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; \
fi
clear
@echo "Installation erfolgreich abgeschlossen."
@echo "Erreichbar unter: https://{{shop_url}}"
@echo "Erreichbar unter: 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
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

View file

@ -1,9 +0,0 @@
<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>

View file

@ -1,19 +0,0 @@
<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.