PHPackages                             renegare/depipe - 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. renegare/depipe

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

renegare/depipe
===============

deployment pipeline (currently only for aws)

v0.1.0(11y ago)25[1 issues](https://github.com/renegare/depipe/issues)PHPPHP &gt;=5.4.0

Since Jun 12Pushed 11y agoCompare

[ Source](https://github.com/renegare/depipe)[ Packagist](https://packagist.org/packages/renegare/depipe)[ RSS](/packages/renegare-depipe/feed)WikiDiscussions master Synced 4w ago

READMEChangelogDependencies (10)Versions (2)Used By (0)

DePipe README
=============

[](#depipe-readme)

[![Build Status](https://camo.githubusercontent.com/3c125b4028cae102226cc8a5d08aaf6faf9972705a1cf900376a94c5ea919b0f/68747470733a2f2f7472617669732d63692e6f72672f72656e65676172652f6465706970652e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/renegare/depipe)[![Coverage Status](https://camo.githubusercontent.com/5bfc8f04a375f69550ba27e3a3d14f756e3a418a3f6849eadac2bcf23e93ae93/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f72656e65676172652f6465706970652f62616467652e706e67)](https://coveralls.io/r/renegare/depipe)

What is DePipe?
---------------

[](#what-is-depipe)

A cli tool that allows you to build, test and deploy an application server (and an experimental project to familiarise my self with [aws-php-sdk](http://aws.amazon.com/sdkforphp/) v2+).

Well thats the goal ...

Basic Usage Examples:
---------------------

[](#basic-usage-examples)

### Build Executable (depipe.phar)

[](#build-executable-depipephar)

```
[prompt]$ ./build.sh

```

### Run Commands

[](#run-commands)

```
# shows options
[prompt]$ ./depipe.phar

# run deployment pipeline
[prompt]$ ./depipe.phar pipeline --config depipe-config.yml --log depipe.log

```

### Example configuration (YAML)

[](#example-configuration-yaml)

```
# depipe-config.yml
parameters:
    credentials:
        class: App\Platform\Aws\Client
        key: {{env AWS_KEY}}
        secret: {{env AWS_SECRET}}
        region: us-east-1
        sleep.interval: 20 # how long to wait before retrying *something* e.g instances to be ready

    image: ami-XXXXX
    instance.config: # for options see http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.Ec2.Ec2Client.html#_runInstances
        InstanceType: m3.large
        UserData: [...] # prefixes "#cloud-config\n" and base64 encodes
        NetworkInterfaces: #if you launching into a VPC
            -
                DeviceIndex: 0
                Groups: [sg-XXXXX]
                SubnetId: subnet-XXXXX
                DeleteOnTermination: true
                AssociatePublicIpAddress: true
    instance.access: # will delete and recreate a key to be used
        class: App\Platform\Aws\InstanceAccess
        user: root
        key.name: web.app
        connect.attempts: 10
        connect.sleep: 20

pipeline: # runs each step (pipe) sequentially
    build base web app image:
        image.name: base.web.app.{{time Ym}}
        scripts:
            - yum clean all
            - yum update -y
            - yum install httpd php -y
            - echo '{{file resource/key.pub}}' > /root/.ssh/authorized_keys
            - echo 'Base Web App Instance Configured'

    build release candidate web.app image:
        image.name: web.app.{{time YmdH}}
        instance.access: # from here on we launch instances with our own private key
            class: App\Util\InstanceAccess\SSHAccess
            user: root
            key: '{{file resource/key.pem}}'
            connect.attempts: 10
            connect.sleep: 20
        scripts:
            - echo '{{file resource/app-vhost.conf}}' > /etc/httpd/conf.d/app.conf
            - git clone https://github.com/your/app /app
            - echo 'Candidate Web App Installed'

    launch web.app test instance:
        scripts:
            - yum install php-xdebug mysql-server php-mysqli php-imagick php-gd -y
            - service mysqld start
            - service memcached start
            - service elasticsearch start
            - echo 'CREATE DATABASE app_db;' | mysql -u root
            - cd /app && composer update --prefer-dist # should install dev deps
            - cd /app && php -d memory_limit=512M vendor/bin/phpunit --coverage-text
            - echo 'Finished Testing Application'

    launch production ready web.app instance(s):
        instance.count: 2
        scripts:
            - echo '{{file resource/app-production-config.json}}' > /app/config/production.json
            - service elasticsearch restart
            - service iptables restart
            - service httpd restart
            - cat /dev/null > /root/.ssh/authorized_keys # no more access to this instance! #youDecide
            - echo 'Configured Production Web App'

    connect web.app instances to loadbalancer:
        scripts: ~ # without this it will run the previous value for 'scripts' #bug
        load.balancer: web-elb

```

Requirements
------------

[](#requirements)

- PHP 5.4
- [composer](https://getcomposer.org/download/) (preferably latest)
- [box](https://github.com/kherge/php-box) (for building a phar)

CLI Structure
-------------

[](#cli-structure)

So ... still playing about with this idea ... but ... the project can be broken down to the following class types:

- Command (Task Master): Symfony based Command class, that relies on classes of type Task to do the work
- Task: The actual classes that do the work ... work here must be super concise and minimal. Working with AWS can be a pain and testing it all works is a pain!

*Note*: Everything is reasonably Psr\\Log aware, makes it easier to know when something has gone wrong!

Building
--------

[](#building)

Currently uses box-project to convert source into a single file executable (PHAR).

Given you have box and composer installed on your machine, you should be able to run `./build.sh` which will compile (really zip up!) a phar ready for use :)

Test
----

[](#test)

Check out the repo and from the top level directory run the following command:

```
$ composer update && vendor/bin/phpunit

```

*NOTE:* You need composer installed on your machine

Help Needed
-----------

[](#help-needed)

- Shell script to build the cli tool into a phar and optionally install it somewhere in a PATH
- Better arch idea around managing various cloud providers e.g rackspace (currently targeting aws)
- Better arch idea around testing + deploying to a shared host (not everyone needs to launch an instance per app release! #possiblyOutsideOfScope)

---

### Road Map to v0.1.0 (prototype-release)

[](#road-map-to-v010-prototype-release)

#### Cloud Platform Interfaces

[](#cloud-platform-interfaces)

- App\\Platform\\ClientInterface
- App\\Platform\\ImageInterface
- App\\Platform\\InstanceInterface
- App\\Platform\\LoadBalancerInterface

#### Aws Platform Concrete Classes

[](#aws-platform-concrete-classes)

- App\\Platform\\Aws\\Client
- App\\Platform\\Aws\\Image
- App\\Platform\\Aws\\Instance
- App\\Platform\\Aws\\LoadBalancer

#### Release

[](#release)

- tag v0.1.0

---

### Road Map to v0.2.0 (useful-release)

[](#road-map-to-v020-useful-release)

- Review goals below (make it more feasible)

#### Configuration (depipe.yml.dist)

[](#configuration-depipeymldist)

- pipes need to clean up after themselves
- - Review current pipe configuration (but retain simplicity)
- Review configuration options (instance.access needs to be mutable and not crash)
- pipes that create/modify (not including search or destructive pipes) should be able to reverse/undo what they have done?
- file upload component ... remove string regex madness!
- pipelines: multi pipe line configuration (run one or all at the same damn time #Future)

> - Run pipelines in isolated processes (however they all start from the root config)
> - Allow special @wait param in pipe config (wait for an event in a parallel pipeline - #maybeToAmbitious)

- Documentation of usage (better examples)
- Replace references to internal classes within depipe to shorthand key names / enum
- get rid of "symfony/http-foundation" dep
- update all deps to latest (if beneficial)

#### Commands

[](#commands)

- kill - terminate instances
- delete - delete an image
- find:instances - find instances
- find:image - find instances (half done ... but needs a rethink)

#### Release

[](#release-1)

- tag v0.2.0

### Road Map to v0.3.0 (security-release)

[](#road-map-to-v030-security-release)

- Hmmm ...

### Road Map to v0.4.0 (vendor-independant-release)

[](#road-map-to-v040-vendor-independant-release)

- Review vendor specific classes, normalize and simplify
- Create another vender set of classes (rackspace? digital ocean?)
- Documentation of classes

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

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

4348d ago

### Community

Maintainers

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

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/renegare-depipe/health.svg)

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

###  Alternatives

[laravel/framework

The Laravel Framework.

34.6k509.9M16.9k](/packages/laravel-framework)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M646](/packages/sylius-sylius)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M385](/packages/shopware-core)[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.4M190](/packages/simplesamlphp-simplesamlphp)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

19462.3M1.3k](/packages/drupal-core)

PHPackages © 2026

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