Phing Buildtools for the SilverStripe Project
DEPRECATED These tools have been replaced by the cow release tool
The goal of this project is to aid SilverStripe developers in automating various aspects of their build through phing. The tools are designed to run as a standalone package, pulling the modules to be packaged from Packagist.
It is primarily geared towards core developers preparing a SilverStripe release, but can also be a starting point for custom build setups.
- Creating and uploading release archives
- Multi-module tagging and checkout of tags and branches
- Multi-module changelogs with automatic sorting by "commit tags"
The phing targets are generally compatible with SilverStripe 2.4 and newer.
Install buildtools into a local directory:
composer create-project silverstripe/buildtools
vendor/bin/phing -l to see a full list of available targets,
vendor/bin/phing help for in-depth help.
The most important command is
vendor/bin/phing release. It roughly takes the following steps:
- Checks out the base release branch (e.g.
3.1) for core modules and the installer
- Ensures no local changes are present
- Writes a combined changelog from core modules, and pushes the committed Markdown file
- Tags core modules and pushes those tags
- Temporarily overwrites the
composer.jsonversion constraints with the new tag, and generates a
composer.lockfile by running
- Pushes the
composer.lockfile, tags the release, and removes it again (it should just exist in the tag)
- Creates archives (separately for cms+framework and standalone framework)
- Uploads archives to
- Checks out the base release branch again
Caution: The task uses a lot of
--force in its git commands, for example
overwriting existing tags. It is your responsibility to ensure tag overwrites
should indeed take place. While you can generally abort and restart the release task,
it is recommended to start with a fresh composer project each time you run it.
Copyright (c) 2007-2014, SilverStripe Limited - www.silverstripe.com All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of SilverStripe nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.