PHPackages                             fiunchinho/plumber - 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. fiunchinho/plumber

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

fiunchinho/plumber
==================

An object oriented deployer library

1171PHP

Since May 17Pushed 13y ago1 watchersCompare

[ Source](https://github.com/fiunchinho/Plumber)[ Packagist](https://packagist.org/packages/fiunchinho/plumber)[ RSS](/packages/fiunchinho-plumber/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (2)Used By (0)

Plumber
=======

[](#plumber)

[![Build Status](https://camo.githubusercontent.com/8ca92403babc9b6eb1b9e88f0453f0817f975de5422ef33e025cb7f003c34e02/68747470733a2f2f7365637572652e7472617669732d63692e6f72672f6669756e6368696e686f2f506c756d6265722e706e67)](http://travis-ci.org/fiunchinho/Plumber)

An object oriented deployer library. This library is heavily inspired by the [Plum](https://github.com/aerialls/Plum "Plum") library, but I've tried a different approach.

Installation and configuration
------------------------------

[](#installation-and-configuration)

Plumber follows the PSR-0 convention, so you can use Composer autoloader.

```
// Options. Here you can define which unix commands you want to execute in the server
$options = array(
    'dry_run' => true, // Optional: Default to false. If set to true, Rsync will run as dry-run mode, which only shows the output but doesn't deploy anything
    'rsync_exclude' => 'excludes.txt', // Optional. File used by rsync to exclude files.
    'rsync_options' => '-az', // Optional: Default to "-azC --force --delete --progress". You can overwrite the default rsync parameters and use your own arguments
    'commands' => array( // Optional. Commands to execute in the server being deployed. The commands'll be executed in the path defined by the server
        'php app/console doctrine:schema:create',
        'php app/console cache:warmup'
    )
);

// Set up
$deployer               = new \Plumber\Deployer\RsyncDeployer();
$ssh_command_executer   = new \Plumber\Server\SshCommandExecuter( new \Plumber\Server\SshConnection() );
$plumber = new \Plumber\Plumber( $deployer, $ssh_command_executer );

// Add your server
$plumber->addServer( 'production', new \Plumber\Server\Server( 'your_server_ip_or_hostname', 'username', '/path/to/my/website' ) );
$plumber->addServer( 'dev', new \Plumber\Server\Server( 'your_server_ip_or_hostname', 'username', '/path/to/my/website' ) );

// Let's go!
$plumber->deploy( 'production', $options );
$plumber->deploy( 'dev', $options );

```

If you prefer to deploy using git pull, instead of using rsync, you can use the dummy rsync deployer. The following code would connect to the server that you define, and execute three commands there.

```
// Options. Here you can define which unix commands you want to execute in the server
$options = array(
    'commands' => array( // Commands to execute in the server being deployed
        'git pull',
        'rm -rf cache/',
        'php app/console assetic:dump --env=prod --no-debug'
    )
);

// Set up
$no_rsync_deployer      = new \Plumber\Deployer\NoRsyncDeployer();
$ssh_command_executer   = new \Plumber\Server\SshCommandExecuter( new \Plumber\Server\SshConnection() );
$plumber = new \Plumber\Plumber( $no_rsync_deployer, $ssh_command_executer );

// Add your server
$plumber->addServer( 'prod', new \Plumber\Server\Server( 'your_server_ip_or_hostname', 'username', '/path/to/my/website' ) );

// Let's go!
$plumber->deploy( 'prod', $options );

```

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/e984bd1f50ca0b64c9e00548a6dcc87f36c42e6d74ae76b0b966e923797bda09?d=identicon)[fiunchinho](/maintainers/fiunchinho)

---

Top Contributors

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

### Embed Badge

![Health badge](/badges/fiunchinho-plumber/health.svg)

```
[![Health](https://phpackages.com/badges/fiunchinho-plumber/health.svg)](https://phpackages.com/packages/fiunchinho-plumber)
```

###  Alternatives

[ryoluo/sail-ssl

Laravel Sail plugin to enable SSL (HTTPS) connection with Nginx.

192739.0k3](/packages/ryoluo-sail-ssl)[sarfraznawaz2005/servermonitor

Laravel package to periodically monitor the health of your server and website.

19613.5k1](/packages/sarfraznawaz2005-servermonitor)[tiamo/phpas2

PHPAS2 is a php-based implementation of the EDIINT AS2 standard

4676.9k](/packages/tiamo-phpas2)[wapmorgan/php-rpm-packager

RPM packager for PHP applications.

116.5k](/packages/wapmorgan-php-rpm-packager)

PHPackages © 2026

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