https://github.com/yakamara/ydeploy
Deployment von REDAXO-Projekten
https://github.com/yakamara/ydeploy
deployer deployment hacktoberfest migration php redaxo
Last synced: 7 months ago
JSON representation
Deployment von REDAXO-Projekten
- Host: GitHub
- URL: https://github.com/yakamara/ydeploy
- Owner: yakamara
- License: mit
- Created: 2017-03-06T10:53:52.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2024-05-21T16:12:50.000Z (over 1 year ago)
- Last Synced: 2024-05-22T15:31:43.484Z (over 1 year ago)
- Topics: deployer, deployment, hacktoberfest, migration, php, redaxo
- Language: PHP
- Homepage:
- Size: 158 KB
- Stars: 21
- Watchers: 8
- Forks: 6
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
YDeploy
=======
Das Addon bietet Tools für die Datenbank-Migration während des Deployments von REDAXO-Projekten.
Zusätzlich bietet es eine auf REDAXO abgestimmte Konfiguration für [deployer](https://deployer.org).
Migration
---------
Das Addon bietet zwei Konsolen-Befehle für die Migration:
### `redaxo/bin/console ydeploy:diff`
Beim ersten Aufruf dieses Kommandos werden in `redaxo/data/addons/ydeploy` zwei Dateien angelegt:
* `schema.yml` mit den Tabellendefinitionen der Datenbank
* `fixtures.yml` mit allen Datensätzen der Tabellen, deren Daten mit synchronisiert werden sollen (Metainfo-Definitionen, MediaManager-Typen, YForm-Manager-Defintionen etc.)
Beim erneuten Aufruf wird dann die aktuelle Datenbank-Struktur mit der aus der `schema.yml` verglichen, und die relevanten Daten mit der `fixtures.yml`. Sollte es Abweichungen geben, werden die beiden Dateien aktualisiert und eine Migrationsdatei in `redaxo/data/addons/ydeploy/migrations/` erstellt, die alle Änderungen enthält.
Details des Kommandos erhält man über `redaxo/bin/console help ydeploy:diff`.
Templates, Module und Actions werden nicht über die `fixtures.yml` synchronisiert, sondern dafür sollte das [Developer-Addon](https://github.com/FriendsOfREDAXO/developer) genutzt werden.
### `redaxo/bin/console ydeploy:migrate`
Dieses Kommando führt alle noch ausstehenden Migrationsdateien aus.
Bei Nutzung von deployer (siehe unten) wird dieses Kommando automatisch während des Deployments ausgeführt.
Es ist aber auch geeignet, um Datenbank-Änderungen der anderen Entwickler in die lokale Entwicklungsumgebung zu übernehmen.
Details des Kommandos erhält man über `redaxo/bin/console help ydeploy:migrate`.
Deployment über deployer
------------------------
Zunächst sollte man sich mit den Grundlagen von deployer vertraut machen: https://deployer.org
Das Addon liefert deployer selbst nicht mit. Es kann über verschiedene Wege instaliert werden:
* Lokal im Projekt (ggf. in separatem `.tools`-Ordner: `composer require deployer/deployer`
* Global über composer: `composer global require deployer/deployer`
* Als Phar-Archive: https://deployer.org/download
### Konfiguration
Im Projekt-Root sollte die Konfigurationsdatei `deploy.php` angelegt werden, die die auf REDAXO abgestimmte
[Basis-Konfiguration](https://github.com/yakamara/ydeploy/blob/main/deploy.php) aus diesem Addon einbindet:
```php
setHostname('example.com')
->setDeployPath('/var/www/com.example')
;
```
In dieser Datei kann die Konfiguration individuell auf das Projekt abgestimmt werden, sowie durch eigene weitere Tasks
ergänzt werden.
Siehe dazu:
* https://deployer.org/docs/7.x/basics
* https://deployer.org/docs/7.x/hosts
* https://deployer.org/docs/7.x/tasks
### .gitignore
Die folgende `.gitignore` hat sich als Basis bewährt bei Nutzung von deployer:
```
/.build
/media/*
!/media/.redaxo
/redaxo/cache/*
!/redaxo/cache/.*
/redaxo/data/addons/*/*
!/redaxo/data/addons/developer/*
!/redaxo/data/addons/mblock/*
!/redaxo/data/addons/mform/*
!/redaxo/data/addons/ydeploy/*
/redaxo/data/core/*
/redaxo/data/log/*
```
Sollte REDAXO nicht direkt im Projekt-Root liegen, müssen die Pfade entsprechend angepasst werden.
### Deployment
Führe `dep deploy` aus, um das Deployment auf den Zielserver zu starten. Dieser Befehl besteht aus zwei Teilen, die sich auch einzeln ausführen lassen:
1. Lokal vorbereiten: `dep build local`
2. Vorbereitetes Paket auf den Server spielen: `dep release [host]`
So lässt sich bspw. über `dep deploy staging` auf den `staging`-Server deployen, testen und anschließend mit dem bereits vorliegenden Build auf den Produktivserver aufspielen: `dep release production`.