This is idea brainstorming for a community plugin for releasing cookbooks per Opscode's current process. This would replace the functionality of the "cookbook site share" plugin that is built into Chef, as I believe the cookbook site plugins should use "community" rather than "cookbook site" and be a separate plugin instead of built into Chef and tied to its release cycle.
Assumes that the repository is release ready, e.g., the current HEAD is the commit that should be released, CHANGELOG is updated already, etc.
- sets metadata version to the specified VERSION
- makes a git commit with the release VERSION in the metadata
- creates a git tag with the bare version, e.g. "1.0.1" not "v1.0.2"
- pushes to the opscode (or other upstream as apropos) master branch, takes --remote argument as alternate, and pushes git tags
- update the metadata version to a +1 development version, e.g. "1.0.2" to "1.0.3".
- commits and pushes to master again with the development version
Command-line argument brainstorming:
--remote
- the remote tracking repository that is "upstream" if it isn't origin. E.g., I use "opscode" for my forks of our cookbooks.
--version
- the release version, if it shouldn't just be automatically incremented. The version should be even numbered per Opscode general release conventions.
--category
- The category should be automatically determined by retrieving the category from the metadata from the community site API, if the cookbook exists.
Of course, this could be useful for other cookbook maintainers than just Opscode.