PHPackages                             sle/phing-typo3-deployer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. sle/phing-typo3-deployer

ActiveProject[DevOps &amp; Deployment](/categories/devops)

sle/phing-typo3-deployer
========================

Phing TYPO3 Deployer is a powerful deployment tool for TYPO3 CMS

2.5.0(4y ago)19.6k1MITPHPPHP &gt;=7.1

Since Oct 4Pushed 4y ago4 watchersCompare

[ Source](https://github.com/hirnsturm/phing-typo3-deployer)[ Packagist](https://packagist.org/packages/sle/phing-typo3-deployer)[ RSS](/packages/sle-phing-typo3-deployer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (3)Versions (42)Used By (0)

Phing TYPO3 Deployer
====================

[](#phing-typo3-deployer)

*[Copyright 2017 by Steve Lenz](./LICENSE)*

[![Tracis CI](https://camo.githubusercontent.com/14f2a8bbbf89ee406b072c6d95d66bfef731f053d339ac85d51d6270f06673ba/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6869726e737475726d2f7068696e672d7479706f332d6465706c6f7965722f6d61737465722e737667)](https://camo.githubusercontent.com/14f2a8bbbf89ee406b072c6d95d66bfef731f053d339ac85d51d6270f06673ba/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6869726e737475726d2f7068696e672d7479706f332d6465706c6f7965722f6d61737465722e737667)

Inhalt
------

[](#inhalt)

- [Einleitung](#introduction)
    - [Was ist das Ziel dieses Pakets?](#introduction-goal)
    - [Voraussetzungen](#introduction-requirements)
    - [Projektstruktur](#introduction-project-structure)
- [Einrichtung eines neuen Projekts](#project-installation)
- [Einrichtung des Projekts auf dem Zielsystem](#project-installation-target-system)
- [Einrichtung für die automatisierte Veröffentlichung](#deployment)
- [Hooks](#hooks)
- [Properties](#properties)
    - [Globale Properties](#properties-global)
    - [Eigene Properties](#properties-custom)
    - [Environment Properties](#properties-env)
- [FAQ](#faq)
    - [Auflistung aller verfügbaren Kommandos](#faq-list-commands)
    - [Lokale Entwicklung](#faq-local-dev)
    - [Wie erstellt man ein neues Release?](#faq-release)
    - [Jenkins Projekt Konfiguration](#faq-jenkins)
    - [RSYNC](#faq-rsync)
        - [RSYNC Installation](#faq-rsync-installation)
        - [RSYNC Konfiguration](#faq-rsync-config)
    - [Versionskontrolle](#faq-vcs)
- [Migration](#migration)
    - [Version 1.x auf 2.x](#migration-1-to-2)

Einleitung
----------

[](#einleitung)

### Was ist das Ziel dieses Pakets?

[](#was-ist-das-ziel-dieses-pakets)

*Phing Typo3 Deployer* basiert auf dem Build-Tool [Phing](https://www.phing.info/) und dient zum automatisierten Veröffentlichen, i.S.v. Continuous Intregration und Continuous Depoyment, von TYPO3 CMS Instanzen.

### Voraussetzungen

[](#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)

### Projektstruktur

[](#projektstruktur)

Dieses Tool benötigt und generiert folgende Verzeichnisstruktur und Dateien:

```
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
```

Einrichtung eines neuen Projekts
--------------------------------

[](#einrichtung-eines-neuen-projekts)

Für die Einrichtung sind lediglich diese drei Schritte notwendig:

1. `composer.json` im Webroot (htdocs-Verzeichnis) des Projekts erstellen

    ```
    {
      "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

    ```
    $ composer install
    ```

    Bei der Installation wird folgende Projektstruktur generiert:

    ```
    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

    Folgende Dateien müssen zur Versionskontrolle hinzugefügt werden:

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

    Hinzufügen mit git:

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

Einrichtung des Projekts auf dem Zielsystem
-------------------------------------------

[](#einrichtung-des-projekts-auf-dem-zielsystem)

Unter dem Begriff *Zielsystem* wird hier ein Webserver oder Ähnliches verstanden.

Für die korrekte Einrichtung auf dem Zielsystem sind folgende Schritte erforderlich:

1. Projektdatein auf das Zielsystem kopieren

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

    ```
    typo3/
        .env.dist
        composer.json
        composer.lock
    build.custom.properties
    build.hook.xml
    composer.json
    composer.lock
    ```
2. Composer-Pakete installieren

    ```
    $ 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.

    - Bsp. *Mittwald vServer* ENV-Konfiguration:

        ```
        # Base directory configuration
        base.dir = /home/www/p/html/

        # Commandline configuration
        cmd.php = php_cli
        cmd.composer = composer

        ```
4. Initiales Release veröffentlichen

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

    ```
    $ bin/phing ci:release
    ```

    Siehe auch [Wie erstellt man ein neues Release?](#faq-release)

    > **Achtung!**
    >
    > 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 ). Die `phing.phar`sollte idealerweise in das Root-Verzeichnis des Projekt-Reporitories aufgenommen und auch mit deployed werden.
    >
    > ```
    > $ php_cli phing.phar ci:release
    > ```

    Dabei werden folgende Datein und Verzeichnisse erstellt:

    ```
    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.
5. vHost konfigurieren

    Der vHost muss auf das Verzeichnis `/releases/current/web` zeigen.
6. TYPO3 CMS auf dem Zielsystem installieren

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

    Installation mit Hilfe der *typo3console*:

    ```
    releases/current$ bin/typo3cms install:setup
    ```
7. Zentrale Ablage der gemeinsamen Dateien

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

    ```
    $ 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.

    Generierte Verzeichnisstruktur für `shared`:

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

Einrichtung für die automatisierte Veröffentlichung
---------------------------------------------------

[](#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:

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

Hooks
-----

[](#hooks)

Alle Verfügbaren Hooks befinden sich in der Datei `build.hook.xml`.

Properties
----------

[](#properties)

### Globale Properties

[](#globale-properties)

Eine Liste der verwendbaren Properties befindet sich in der Datei `src/phing/config/build.properties`.

### Eigene Properties

[](#eigene-properties)

Eigene Properties können in der Datei `build.custom.properties` hinterlegt werden und stehen in den Hooks zur Verfügung.

### Environment Properties

[](#environment-properties)

In der Datei `build.env.properties` können Environment-Konfigurationen vorgenommen werden.

FAQ
---

[](#faq)

### Auflistung aller verfügbaren Kommandos

[](#auflistung-aller-verfügbaren-kommandos)

```
$ bin/phing
```

### Lokale Entwicklung

[](#lokale-entwicklung)

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

```
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.

### Wie erstellt man ein neues Release?

[](#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)

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

### Jenkins Projekt Konfiguration

[](#jenkins-projekt-konfiguration)

- Folgende Dateien müssen synchronisiert werden

    ```
    typo3/
    build.custom.properties
    build.hook.xml
    composer.json
    composer.lock
    ```
- Neues Release mit Hilfe der Remote-Shell erstellen

    ```
    $ ssh @
    $ cd /
    //$ composer install
    //$ bin/phing ci:release
    ```

    Siehe auch [Wie erstellt man ein neues Release?](#faq-release)

### RSYNC

[](#rsync)

#### Installation der excludes.txt

[](#installation-der-excludestxt)

Über folgende Composer-Konfiguration kann die `excludes.txt` automatisch installiert werden:

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

#### Konfiguration

[](#konfiguration)

```
rsync --delete -aze ssh --iconv=UTF-8 --exclude-from $WORKSPACE/rsync/excludes.txt $WORKSPACE/ @:///
```

In der Datei `rsync/excludes.txt` können die RSYNC-Excludes konfiguriert werden:

```
rsync
releases
shared
build.env.properties
build.xml
```

### Versionskontrolle

[](#versionskontrolle)

Folgende Dateien und Verzeichnisse sollten nicht in die Versionskontrolle aufgenommen werden:

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

Migration
---------

[](#migration)

### Version 1.x auf 2.x

[](#version-1x-auf-2x)

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

```
# 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

```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~37 days

Recently: every ~184 days

Total

41

Last Release

1628d ago

Major Versions

v0.5.5 → v1.0.02018-02-02

v1.7.2 → v2.0.02019-09-04

PHP version history (4 changes)v1.2.1PHP &gt;=7.0 &lt;7.3

v1.4.0PHP &gt;=7.0 &lt;7.4

2.3.0PHP &gt;=7.0

2.5.0PHP &gt;=7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/343b73a7ef8502bb22fdf472ee596ec67e476b92b526c852d0e78b1649ca086d?d=identicon)[hirnsturm](/maintainers/hirnsturm)

---

Top Contributors

[![hirnsturm](https://avatars.githubusercontent.com/u/6859265?v=4)](https://github.com/hirnsturm "hirnsturm (4 commits)")

### Embed Badge

![Health badge](/badges/sle-phing-typo3-deployer/health.svg)

```
[![Health](https://phpackages.com/badges/sle-phing-typo3-deployer/health.svg)](https://phpackages.com/packages/sle-phing-typo3-deployer)
```

###  Alternatives

[wsdltophp/packagegenerator

Generate hierarchical PHP classes based on a WSDL

4351.9M19](/packages/wsdltophp-packagegenerator)[easycorp/easy-deploy-bundle

The easiest way to deploy Symfony applications

468310.2k](/packages/easycorp-easy-deploy-bundle)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[shopware/deployment-helper

Shopware deployment tools

19305.3k5](/packages/shopware-deployment-helper)[kohkimakimoto/altax

Altax is an extensible deployment tool for PHP.

2002.8k](/packages/kohkimakimoto-altax)[drevops/git-artifact

Package artifact from your codebase in CI and push it to a separate git repo.

2133.2k](/packages/drevops-git-artifact)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
