PHPackages                             qualitycode/phing-deploy - 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. qualitycode/phing-deploy

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

qualitycode/phing-deploy
========================

A simple tool to deploy your project

v1.0(9y ago)001MIT

Since Jan 3Pushed 9y ago1 watchersCompare

[ Source](https://github.com/QualityCodePhp/PhingDeploy)[ Packagist](https://packagist.org/packages/qualitycode/phing-deploy)[ Docs](https://github.com/QualityCodePhp/PhingDeploy)[ RSS](/packages/qualitycode-phing-deploy/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (11)Versions (2)Used By (0)

README
======

[](#readme)

Deploy permets :

- la création d'un package pour le déploiement
- le déploiement d'un package
- l'analyse statique du code

Il permet de gérer :

- plusieurs projets
- plusieurs environnements de déploiement
- plusieurs serveurs par environnement

Pré-requis
----------

[](#pré-requis)

### Serveur de déploiement

[](#serveur-de-déploiement)

- php &gt;= 5.3
- php-ssh
- git
- composer
- installer la clef publique du serveur de déploiement sur les différents serveurs où l'on doit déployer
- ajouter la clef publique du serveur de déploiement sur bitbucket et github

### Fichiers de configuration du projet

[](#fichiers-de-configuration-du-projet)

Les fichiers de configuration du projet doivent être disponible pour chacun des environnements de déploiement.

Par exemple pour parameters.yml =&gt; parameters.yml.production

Fonctionnement
--------------

[](#fonctionnement)

### Deploy task

[](#deploy-task)

1. En local
    1. création du répertoire de release
    2. clonage du repository
    3. récupération du dernier tag de la branche configurée si il y a des tags ou récupération du tag passé en paramètre
    4. récupération de composer.phar
    5. copie des fichiers de configuration spécifique à l'environnement
    6. composer install
    7. exécution de la tache "package" du build.xml du projet
    8. création d'un package (fichier tgz)
2. Sur le(s) serveur(s) distant(s)
    1. création des répertoires du projet
    2. copie du package
    3. création du répertoire pour le déploiement
    4. décompression du package
    5. installation des cron
    6. exécution de la tache "deploy" du build.xml du projet
    7. mise à jour du lien current
    8. nettoyage des anciens déploiement

Installation
------------

[](#installation)

```
#!bash
$ git clone git@github.com:QualityCodePhp/PhingDeploy.git
$ composer install

```

That's all !

Utilisation
-----------

[](#utilisation)

- ./vendor/bin/phing help =&gt; Display this message
- ./vendor/bin/phing prepare -Dproject.name=test -Dstage.name=production =&gt; Prepare server
- ./vendor/bin/phing rollback -Dproject.name=test -Dstage.name=production =&gt; Rollback to previous deployment
- ./vendor/bin/phing package -Dproject.name=test -Dstage.name=production -Drepository.tag=1.0 =&gt; Application packaging
- ./vendor/bin/phing deploy -Dproject.name=test -Dstage.name=production -Drepository.tag=1.0 =&gt; Application deployment
- ./vendor/bin/phing qa -Dproject.name=test -Dstage.name=production -Drepository.tag=1.0 =&gt; Run qa tools
- ./vendor/bin/phing deploy-with-qa -Dproject.name=test -Dstage.name=production -Drepository.tag=1.0 =&gt; Run qa tools and deployment tasks

Si le projet est un bundle ou une library, le deployement n'a pas de sens, penser à mettre deploy.enable à false dans le fichier de configuration du projet.

Structure
---------

[](#structure)

### Projet

[](#projet)

```
.
├── build.xml                               => Taches de base et gestion des paramètres (deploy, help)
├── lib
│   ├── step
│   │   ├── history.xml                     => Déploiement sur les environnements distants
│   │   ├── package.xml                     => Création de l'archive
│   │   ├── remote.xml                      => Actions sur le(s) serveur(s)
│   │   ├── rollback.xml                    => Gestion du rollback
│   │   └── prepare.xml                     => Initialisation de la structure sur le(s) serveur(s)
│   └── tool
│       ├── composer.xml                    => Taches liées à composer
│       ├── git.xml                         => Taches liées à git
│       ├── cron.xml                        => Mise à jour des taches cron sur le(s) serveur(s)
│       └── qa.xml                          => Taches des outils de QA
└── properties
    ├── build.properties                    => Paramètrage général
    ├── projects                            => Définition des projets
    │   ├── project1.properties
    │   └── project2.properties
    └── stage                               => Définition des environnements
        ├── preproduction.properties
        ├── production.properties
        ├── recette.properties
        └── recette                         => Définition des spécificités des projets pour un environnement
            ├── project1.properties
            └── project2.properties

```

### Release

[](#release)

```
.
└── releases
    └── project_name
        └── stage_name
            └── build_uniq_id
                ├── code
                ├── package
                └── report

```

### Remote

[](#remote)

```
.
└── project_name
    ├── cache
    ├── logs
    ├── packages
    ├── releases
    │   ├── previous
    │   └── current
    └── shared

```

Taches spécifiques au projet
----------------------------

[](#taches-spécifiques-au-projet)

S'il y a besoin d'exécuter des taches spécifiques au projet, il suffit de placer un fichier phing build.xml à sa racine avec 3 targets :

- pre-package =&gt; avant la création de l'archive (par exemple : minification js et css)
- post-package =&gt; après la création du package (par exemple : versionning du package, envoie d'un mail)
- pre-deploy =&gt; avant le déploiement
- post-deploy =&gt; après le déploiement
- pre-rollback =&gt; avant le rollback
- post-rollback =&gt; après le rollback

Si la tache a besoin d'être éxécutée sur le serveur, il faut passer par la target deploy.tool.ssh

```

```

Mise en place de cron
---------------------

[](#mise-en-place-de-cron)

Dans le projet mettre les cron dans :

```
.
└── Ressources
    └── cron.d
        ├── project_name-__STAGE__-name1
        ├── project_name-__STAGE__-name2
        :
        └── ....

```

Les chemins des scripts dans les fichiers cron doivent être précédé par `__PATH__`.

Configuration
-------------

[](#configuration)

Paramètres et leur emplacement conseillé :

### properties/build.properties

[](#propertiesbuildproperties)

NomTypeDescriptionDefaultRequisqa.phploc.pathstringchemin complet ou relatifn/aouiqa.phpcpd.pathstringchemin complet ou relatifn/aouiqa.phpdcd.pathstringchemin complet ou relatifn/aouiqa.phpmd.pathstringchemin complet ou relatifn/aouiqa.phpcs.pathstringchemin complet ou relatifn/aouiqa.pdepend.pathstringchemin complet ou relatifn/aouiqa.phpmetrics.pathstringchemin complet ou relatifn/aouideploy.historyentiernombre de déploiement à conserver5non### properties/project/project\_name.properties

[](#propertiesprojectproject_nameproperties)

NomTypeDescriptionDefaultRequisrepositorystringurl (http ou ssh) du dépot gitn/aouirepository.branchstringnom de la branche à récupérern/aouisource.pathstringchemin relatif des sources (ex: ./src)n/aouideploybooleandoit-on déployer le projettruenonproject.configuration.filesstringliste des fichiers de configuration (séparé par ,)n/anon### properties/stage/stage\_name.properties

[](#propertiesstagestage_nameproperties)

NomTypeDescriptionDefaultRequisdeploy.pathstringchemin complet sur le serveurn/aouideploy.hostsstringip ou nom des serveurs (séparé par ,)n/aouideploy.userstringutilisateur sur le serveurn/aouideploy.pubkeyfilestringchemin complet ou relatif de la clef publiquen/aouideploy.privkeyfilestringchemin complet ou relatif de la clef privéen/aoui### properties/stage/stage\_name/project\_name.properties

[](#propertiesstagestage_nameproject_nameproperties)

Vous pouvez surcharger ici tous les paramètres

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity1

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity63

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

Unknown

Total

1

Last Release

3412d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/58148acba4b351cc9e064fc1b8a659913a3000a376f80055f3907ae4aa066421?d=identicon)[Flavien METIVIER](/maintainers/Flavien%20METIVIER)

---

Top Contributors

[![flavien-metivier](https://avatars.githubusercontent.com/u/3929854?v=4)](https://github.com/flavien-metivier "flavien-metivier (9 commits)")

---

Tags

deployphing

### Embed Badge

![Health badge](/badges/qualitycode-phing-deploy/health.svg)

```
[![Health](https://phpackages.com/badges/qualitycode-phing-deploy/health.svg)](https://phpackages.com/packages/qualitycode-phing-deploy)
```

###  Alternatives

[ngmy/webloyer

Webloyer is a Web UI for managing Deployer deployments

2181.1k](/packages/ngmy-webloyer)[enygma/composerclean

An additional command for Composer that removes configured files/directory

181.8k](/packages/enygma-composerclean)

PHPackages © 2026

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