2017 © Pedro Peláez
 

project phing-typo3-deployer

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

image

sle/phing-typo3-deployer

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  • Monday, July 23, 2018
  • by hirnsturm
  • Repository
  • 1 Watchers
  • 1 Stars
  • 615 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 21 Versions
  • 37 % Grown

The README.md

Phing TYPO3 Deployer

Copyright 2017 by Steve Lenz, (*1)

[Tracis CI](https://travis-ci.org/hirnsturm/phing-typo3-deployer), (*2)

Inhalt

, (*3)

Einleitung

, (*4)

Was ist das Ziel dieses Pakets?

Phing Typo3 Deployer basiert auf dem Build-Tool Phing und dient zum automatisierten Veröffentlichen, i.S.v. Continuous Intregration und Continuous Depoyment, von TYPO3 CMS Instanzen., (*5)

, (*6)

Voraussetzungen

  • PHP 7
  • TYPO3 CMS 7 || 8 im Composer-Mode
  • Kommandozeile
  • Unix or Linux
  • Ausführung mit den nötigen Berechtigungen des Web-Users (i.d.R. www-data)

, (*7)

Projektstruktur

Dieses Tool benötigt und generiert folgende Verzeichnisstruktur und Dateien:, (*8)

bin/
releases/
    current/
    previous/
    next/
rsync/ -> Wird nur generiert, wenn 'install-rsync-excludes' aktiviert ist.
    excludes.txt
shared/
typo3/
    composer.json
vendor/
build.custom.properties
build.env.properties
build.hook.xml
build.xml
composer.json
composer.lock

, (*9)

Einrichtung eines neuen Projekts

Für die Einrichtung sind lediglich diese drei Schritte notwendig:, (*10)

  1. composer.json im Webroot (htdocs-Verzeichnis) des Projekts erstellen, (*11)

    {
      "name": "my/typo3-project",
      "license": "MIT",
      "description": "",
      "type": "project",
      "require": {
        "sle/phing-typo3-deployer": "[VERSION]"
      },
      "config": {
        "vendor-dir": "vendor",
        "bin-dir": "bin"
      },
      "minimum-stability": "stable",
      "scripts": {
        "post-install-cmd": [
          "Sle\\PhingTypo3Deployer\\Composer\\Scripts::postInstall"
        ],
        "post-update-cmd": [
          "Sle\\PhingTypo3Deployer\\Composer\\Scripts::postUpdate"
        ]
      },
      "extra": {
        "sle/phing-typo3-deployer": {
          "install-rsync-excludes": false
        }
      }
    }
    
  2. Composer-Pakete installieren, (*12)

    $ composer install
    

    Bei der Installation wird folgende Projektstruktur generiert:, (*13)

    bin/
    vendor/
    typo3/
        composer.json
    build.custom.properties
    build.env.properties
    build.hook.xml
    build.xml
    composer.json
    composer.lock
    
  3. Dateien zur Versionskontrolle hinzufügen, (*14)

    Folgende Dateien müssen zur Versionskontrolle hinzugefügt werden:, (*15)

    rsync/
        excludes.txt
    typo3/
        composer.json
    build.custom.properties
    build.hook.xml
    composer.json
    composer.lock
    

    Hinzufügen mit git:, (*16)

    $ git add -A && git commit -m '[Build] Add phing-typo3-deployer'
    

, (*17)

Einrichtung des Projekts auf dem Zielsystem

Unter dem Begriff Zielsystem wird hier ein Webserver oder Ähnliches verstanden., (*18)

Für die korrekte Einrichtung auf dem Zielsystem sind folgende Schritte erforderlich:, (*19)

  1. Projektdatein auf das Zielsystem kopieren, (*20)

    Die Projektdateien bzw. Verzeichnisse, die sich in der Versionskontrolle befinden, müssen auf das Zielsystem kopiert werden. Die Verzeichnisstruktur sieht nun wie folgt aus:, (*21)

    typo3/
        .env.dist
        composer.json
        composer.lock
    build.custom.properties
    build.hook.xml
    composer.json
    composer.lock
    
  2. Composer-Pakete installieren, (*22)

    $ composer install
    
  3. Bei einigen vServern (bspw. Mittwald vServer) kann Phing den absoluten Pfad nicht korrekt auslesen. Zudem wird PHP in der Kommandozeile mit php_cli statt mit php aufgerufen. Daher können die Umgebungsvariablen, in der nun angelegten build.env.properties, umkonfiguriert werden., (*23)

  • Bsp. Mittwald vServer ENV-Konfiguration:, (*24)

    ``` # Base directory configuration base.dir = /home/www/p/html/, (*25)

    # Commandline configuration cmd.php = php_cli cmd.composer = composer ```, (*26)

  1. Initiales Release veröffentlichen, (*27)

    Das Verzeichnis mit der akteullen Version befindet sich unter releases/current/. damit dieses erstellt werden kann, muss folgender Befehl ausgeführt werden:, (*28)

    $ bin/phing ci:release
    

    Siehe auch Wie erstellt man ein neues Release?, (*29)

    Achtung!, (*30)

    Ggf. kann es bei der Ausführung auf Mittwald vServer dazu kommen, das Phing nicht die build.xml finden kann. Hierfür sollte alternativ eine phing.phar installiert werden (siehe https://www.phing.info/). Die phing.phar sollte idealerweise in das Root-Verzeichnis des Projekt-Reporitories aufgenommen und auch mit deployed werden., (*31)

    $ php_cli phing.phar ci:release
      

    Dabei werden folgende Datein und Verzeichnisse erstellt:, (*32)

    releases/
        current/
            bin/
            vendor/
            web/
        previous/ -> Wird ab dem zweiten Release generiert und beinhaltet immer das vorherige Release.
            bin/
            vendor/
            web/
    build.env.properties
    

    In das Verzeichnis releases/current/ werden die Daten aus dem Verzeichnis typo3 kopiert und composer install ausgeführt., (*33)

  2. vHost konfigurieren, (*34)

    Der vHost muss auf das Verzeichnis <project-root>/releases/current/web zeigen., (*35)

  3. TYPO3 CMS auf dem Zielsystem installieren, (*36)

    Nun muss das TYPO3 CMS auf dem Zielsystem initial installiert werden. Dies kann über den TYPO3 Install Wizard oder die typo3console erfolgen., (*37)

    Installation mit Hilfe der typo3console:, (*38)

    releases/current$ bin/typo3cms install:setup
    
  4. Zentrale Ablage der gemeinsamen Dateien, (*39)

    Die gemeinsamen Dateien (shared data) müssen nun noch zentral abgelegt werden, damit sie für zukünftige Releases verfügbar sind:, (*40)

    $ bin/phing init:shared
    

    Hierbei werden die LocalConfiguration.php sowie die Verzeichnisse fileadmin und uploads in das Verzeichnis shared kopiert, da diese immer gleich bleiben und somit für zukünftigen Releases zentral zur Verfügung stehen. Zudem werden die originale durch Symlinks ersetzt., (*41)

    Generierte Verzeichnisstruktur für shared:, (*42)

    releases/
        current/
    shared/
        .env (Wenn typo3/.env.dist vorhanden ist)
        fileadmin/
        uploads/
        typo3conf/
            LocalConfiguration.php
    

, (*43)

Einrichtung für die automatisierte Veröffentlichung

Die automatierte Aktualisierung des Projekts kann über Git und Jenkins erfolgen. Bei der Synchronisation müssen folgende Dateien aktualisiert werden:, (*44)

typo3/
build.custom.properties
build.hook.xml
composer.json
composer.lock

, (*45)

Hooks

Alle Verfügbaren Hooks befinden sich in der Datei build.hook.xml., (*46)

, (*47)

Properties

, (*48)

Globale Properties

Eine Liste der verwendbaren Properties befindet sich in der Datei src/phing/config/build.properties., (*49)

, (*50)

Eigene Properties

Eigene Properties können in der Datei build.custom.properties hinterlegt werden und stehen in den Hooks zur Verfügung., (*51)

, (*52)

Environment Properties

In der Datei build.env.properties können Environment-Konfigurationen vorgenommen werden., (*53)

, (*54)

FAQ

, (*55)

Auflistung aller verfügbaren Kommandos

$ bin/phing

, (*56)

Lokale Entwicklung

Die lokale Entwicklung findet im Verzeichnis htdocs/typo3 statt. Die komplette Verzeichnisstruktur nach der installation sieht wie folgt aus:, (*57)

bin/
typo3/
    vendor/
    web/
    composer.json
    composer.lock
vendor/
build.custom.properties
build.env.properties
build.hook.xml
build.xml
composer.json
composer.lock

Der vHost sollte auf typo3/web zeigen., (*58)

, (*59)

Wie erstellt man ein neues Release?

$ bin/phing ci:release

Alternativ kann man das Release über 3 dedizierte Targets erstellen und veröffentlichen lassen. Zwischen den Targets können eigene Server-Skripte, bspw. Anpassung von Berechtigungen, ausgeführt werden. (Diese drei Targets werden in der Reihenfolge auch vom ci:release ausgeführt), (*60)

$ bin/phing ci:release:create:next
$ bin/phing ci:release:publish:next
$ bin/phing ci:release:post-actions

, (*61)

Jenkins Projekt Konfiguration

  • Folgende Dateien müssen synchronisiert werden, (*62)

    typo3/
    build.custom.properties
    build.hook.xml
    composer.json
    composer.lock
    
  • Neues Release mit Hilfe der Remote-Shell erstellen, (*63)

    $ ssh <user>@<server>
    <server>$ cd <webroot>/<project>
    <server>/<webroot>/<project>$ composer install
    <server>/<webroot>/<project>$ bin/phing ci:release
    

    Siehe auch Wie erstellt man ein neues Release?, (*64)

, (*65)

RSYNC

, (*66)

Installation der excludes.txt

Über folgende Composer-Konfiguration kann die excludes.txt automatisch installiert werden:, (*67)

"extra": {
    "sle/phing-typo3-deployer": {
        "install-rsync-excludes": true
    }
}

, (*68)

Konfiguration

rsync --delete -aze ssh --iconv=UTF-8 --exclude-from $WORKSPACE/rsync/excludes.txt $WORKSPACE/ <user>@<server>:/<webroot>/<project>/

In der Datei rsync/excludes.txt können die RSYNC-Excludes konfiguriert werden:, (*69)

rsync
releases
shared
build.env.properties
build.xml

, (*70)

Versionskontrolle

Folgende Dateien und Verzeichnisse sollten nicht in die Versionskontrolle aufgenommen werden:, (*71)

build.env.properties
build.xml
bin
shared
vendor
releases

, (*72)

Migration

, (*73)

Version 1.x auf 2.x

Ab der Version 2 muss der Pfad des TYPO3 Web-Verzeichnises über die build.custom.properties wie folgt konfiguriert werden:, (*74)

# TYPO3 CMS web-dir
#
# This should be the same value as in composer.json 'web-dir'
#
# Example:
# ========
# "extra": {
#   "typo3/cms": {
#       "cms-package-dir": "{$vendor-dir}/typo3/cms",
#       "web-dir": "web"
#   },
# }
typo3-cms.web-dir = web

The Versions

23/07 2018

dev-master

9999999-dev

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

23/07 2018

v1.3.0

1.3.0.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

20/07 2018

v1.2.2

1.2.2.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

23/06 2018

v1.2.1

1.2.1.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

21/03 2018

v1.2.0

1.2.0.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

21/03 2018

v1.1.3

1.1.3.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

19/03 2018

v1.1.2

1.1.2.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

13/03 2018

v1.1.1

1.1.1.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

13/03 2018

v1.1.0

1.1.0.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

02/02 2018

v1.0.0

1.0.0.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

11/12 2017

v0.5.5

0.5.5.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

11/12 2017

v0.5.4

0.5.4.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

11/12 2017

v0.5.3

0.5.3.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

13/11 2017

v0.5.2

0.5.2.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

12/10 2017

v0.5.1

0.5.1.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

10/10 2017

v0.5.0

0.5.0.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

09/10 2017

v0.4.0

0.4.0.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

06/10 2017

v0.3.0

0.3.0.0

Phing TYPO3 Deployer is an easy to use powerfull deployment tool for TYPO3 CMS

  Sources   Download

MIT

The Requires

 

by Steve Lenz

05/10 2017

v0.2.0

0.2.0.0

Phing Installer Test

  Sources   Download

The Requires

 

by Avatar hirnsturm

05/10 2017

v0.1.1

0.1.1.0

Phing Installer Test

  Sources   Download

The Requires

 

by Avatar hirnsturm

04/10 2017

v0.1.0

0.1.0.0

Phing Installer Test

  Sources   Download

The Requires

 

by Avatar hirnsturm