Release manager for npm, bower, component, PyPI, git tags, and any plugin you can write.
This was created out of frustration; there was no generic sharable release manager. Previously, I was using git-extra's git-release command with dotfiles git hooks.
Install the module globally via: npm install -g foundry
By default, foundry is not configured with any release libraries. Install a release library via npm globally:
npm install -g foundry-release-bower # bower
npm install -g foundry-release-component # component.io
npm install -g foundry-release-git # git
npm install -g foundry-release-npm # npm
npm install -g foundry-release-pypi # PyPIDetails about existing plugins and their documentation can be found under the Plugins heading.
For example purposes, we will create/release on a local-only git repository.
# Install a `git` foundry-release plugin
npm install -g foundry-release-git
# Create git repo
mkdir foundry-example
cd foundry-example
git init
echo "Hello World" > README.md
git add README.md
git commit -m "Added documentation"
# Run our release
foundry release
# [master c6ce921] Release 0.1.0
# See the release commit and tag
git log --decorate --oneline
# c6ce921 (HEAD, tag: 0.1.0, master) Release 0.1.0
# f0c25b3 Added documentationfoundry provides a command line interface for releasing.
$ foundry --help
Usage: foundry [options] [command]
Commands:
release <version> Set version for package metadata and publish to registries
plugins List installed `foundry` plugins
completion Get potential completions for a command. Looks for `COMP_CWORD`, `COMP_LINE`, `COMP_POINT`.
Options:
-h, --help output usage information
-V, --version output the version number
Example releases are:
foundry release 0.1.0
foundry release 0.3.0
foundry release 1.0.0Commands that automatically increment semver are planned (e.g.
foundry release major,foundry release minor). See twolfson#16 for more information.
When a release occurs, the following steps are processed:
- Set version, update package metadata with the new version (e.g. update
package.json) - Commit, persist any changes to a version control system (e.g.
git commit && git tag) - Register, if the package is new (semver ===
0.1.0), then register it to its repository (e.g.python setup.py register) - Publish, release changes to package's repostiroy manager (e.g.
npm publish)
foundry plugins contain the foundry-plugin keyword and adhered to the foundry release plugin specification:
https://github.com/twolfson/foundry-release-spec
Existing plugins are:
- foundry-release-bower, manages
versioninbower.json - foundry-release-component, manages
versionincomponent.json - foundry-release-git, runs
git tagandgit commitupon release - foundry-release-npm, manages
versioninpackage.jsonand runsnpm publishupon release - foundry-release-pypi, manages
versioninsetup.pyand registers/zips/gzips package upon release - More plugins can be found at https://www.npmjs.org/browse/keyword/foundry-release
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via grunt and test via npm test.
Support this project and others by twolfson via gittip.
As of Dec 07 2013, Todd Wolfson has released this repository and its contents to the public domain.
It has been released under the UNLICENSE.


