Experimental project
This is a sandbox project, which contains experimental code for developer use only.
Development and deployment infrastructure for drupal 6/7
PROST is a command line development framework making drupal development in teams easier and faster.
You're using a central git repository, love the mighty of drush and want a clear and fast infrastructure everyone can work with? Check out PROST.
PROST scripts, features & use cases:
# install script
Install a full drupal 6/7 website from a centralized repository. This includes Code + Database + Files
That's it? No, check this out:
You can optionally set parameters to:
- set drupal admin -> username, password
- setup your local database username, password
There is a wizard, asking you project specific stuff like:
- optional: setup url, username of remote git repository to deploy to (Live page)
- setup base_url
- optional: select the database dump you want to install
And then?
- .gitignore template is applied
- drush aliases (local, remote) are made
- local settings.php is generated
- project tree is generated if not yet present
- links of depending selenium tests are updated
- the project is added to the list of installed projects (necessary for automatic Prost-updates)
Good to know:
- the install script works in stages, if you need to, you can run only the stages you want to
- installation is done from the develop branch
- check out the man page or install -h
- works with all git repos, like github or others
- the script checks, before installation, if all dependencies are met
- the script checks if there is an update of the script itself
- each project needs its own repository
Use cases:
- New team members can start working within minutes (just depending on your connection and project size)
- Install an older version within minutes (to compare or rollback)
- Rollout a standardised drupal development environment including, code, db, files, selenium tests and a landingpage directory
- (necessary for further automation, and clear processes within your team)
# newproject script
Create a new empty project from scratch with Drupal 6 or 7 including the installation of important/useful modules.
You can specify
- the name (database, directory) of your new project
- your local database username, password
- the version to use
- optionally a custom drush makefile to use
After creating the new project, the script will go on and apply the changes done by 'install' as well so your project is ready to work with.
Good to know:
- does not need a git repository
- does install important/useful modules
- directory tree, templates etc. will be applied
Use cases:
- New clean projects can be created within minutes
# pull script
Update your drupal installation using code, files and optional database from the central repository.
- Select database dump you want to install
- Get a nice diff report on your database and a dump file to see main changes (tables and variables)
Use cases:
- Passover your current project or feature branch including database and files
(Your teammember(s) just needs to make a pull to update, or an install to get a the full project installed, this is usefull to check out the differences between installations) - push code and database if you have finished a feature or provided a hot-fix
# push script
Update the central project repository with your current code, files and optional database.
# deploy script
Used to deploy code, files and database to Liveserver using git, sftp.
UseCases:
1. Initial deployment of project to liveserver
Features:
- Makes database dump and imports on live
- Git push of code
- sftp of files
- Handles maintenance mode of drupal
- Clears caches (drupal cache + varnish)
- Makes wget checks on liveside
- Provides error-logs
2. Update liveserver (standard)
- Features as above, but no db import
- Drush updb is executed
Parameters:
[-init (flag to do an initial deploy, no database present on live server etc.)]
[-nosleep (skip sleeping 2 minutes after the push; useful if there was no change on a workung drupal dir)]
[-filesync (sync the content of the files directory)]
[-filesyncurl {url to sync files to | defaults to values from the drush alias '@live'}]
[-remotesshurl {url | defaults to values from the drush alias '@live'}]
[-sendlogmail (flag to send an email containing the commit messages since the last deploy)]
[-weburl {url | defaults to values from the drush alias '@live'}]
[-gitliveurl {url to push on live server | defaults to git remote repository 'live'}]
Good to know:
- Special implementation for usage with power-Servers provides by drupalconcept
- You need SSH-access to liveserver and at least write permissions on files directory
- Possible to get assistance on development of further deploy connectors
- works with stages like install script
- can send a manager report as email on deployments on liveserver (send mail on content and time of last commits)
# test script
Run selenium tests and test suites that are located within the tests directory in the project tree.
Good to know:
- Use Selenium IDE to produce UI Tests and Suites
- No need for PHP export of tests
-> Tests can be easily updated and maintained
-> Tests are within the repository, so versioned and easily interchanged
-> Tests can be organized and used in suites which can share a browser session - If you setup a central selenium server, there is no need for developers to setup a test environment to be able to run tests.
Use cases:
- UI based tests, mostly used for testing permissions, access rights, and integration with extern tools/webservices
- Generate content if having complex references
- Do UI tests on several browsers
# Update prost script
PROST updates itself. PROST checks if there is new or updated code at the origin repository.
If you have no access (no internet connection) just select –noupdate as a parameters when calling one of above scripts.
If you update PROST the installed projects can be updated to ensure the same PROST state within your projects.
Good to know:
On updating existing projects only stage 3 and 4 (directories templates) of install-script are done
How it works:
check out man page
Installation:
- Download/Checkout project to your home directory:
- git clone --recursive --branch master http://git.drupal.org/sandbox/axroth/1668300.git prost
- Navigate into prost-directory
- check if you have all dependencies: ./install.sh -dry
- run install.sh: ./install.sh
- If dependencies are not met, install the needed and run install.sh again
- After a successfull installation, you can access new aliases. Check this by typing "prost-install -h", or "man prost"
- To use prost you need to prost-install a drupal installation. This installation must be in a git repository that has a develop branch. If there is no db-dump available import it manually.
Dependencies:
git-flow, zshrc, basename, Bzcat, cat, Cp,cut, Date, dd, Diff, dirname, Drush ,find, Git, git-flow, Grep, gzip, Head, id, Lftp, ln, Ls, mkdir, Mysql, mysqldump, Phpunit, pwd, Rsync, sed, sha256sum, sleep, sort, ssh, sty, tac, tail, tr, wc, wget, whoami, zcat
- fully tested and compatible with quickstart
Next steps, things we're working on and you can help:
- Advanced redmine integration
- Deploy to ftp-server, haha
- [...]
PROST distribution:
- open source GPL
- published on drupal.org
- developed and sponsored by www.arocom.de
- sponsored by www.cjs-design.de
Troubleshooting
If you installed prost prior to July 11th, you might get an error stating that "'origin' does not appear to be a git repository"
Please update your remote repository name (in the git directory and installed directory) with the following command:
- git remote rename prost origin
Project information
- Created by axroth on , updated


