Guidelines for the core maintainers of the cisco-cookbook project - above and beyond the general developer guidelines.
- Is the pull request correctly submitted against the
develop
branch? - Does
rubocop
pass? (This is automatically checked by Travis-CI) - Is
CHANGELOG.md
updated appropriately? - Are new spec tests added? Do they provide sufficient coverage and consistent results?
- Are
demo_install.rb
anddemo_cleanup.rb
updated appropriately? - Do tests pass on all supported platforms?
If you don't already have git-flow
installed, install it.
Either run git flow init
from the repository root directory, or manually edit your .git/config
file. Either way, when done, you should have the following in your config:
[gitflow "branch"]
master = master
develop = develop
[gitflow "prefix"]
feature = feature/
release = release/
hotfix = hotfix/
support = support/
versiontag = v
Most of these are default for git-flow except for the versiontag
setting.
When we are considering publishing a new release, all of the following steps must be carried out (using the latest code base in develop
):
-
Ensure that vendor gems included in the cookbook are up-to-date and reflect an official release version (development code in
develop
is OK, development code in a release candidate is not!). Do a new gem release first if needed! Instructions for the revendoring process can be found here.
- N3k
- N5k
- N6k
- N7k
- N9k
- N9k-F
-
Triage any test failures.
-
Make sure CHANGELOG.md accurately reflects all changes since the last release.
- Add any significant changes that weren't documented in the changelog
- Clean up any entries that are overly verbose, unclear, or otherwise could be improved.
When the release checklist above has been fully completed, the process for publishing a new release is as follows:
-
Create a release branch. Follow semantic versioning:
- 0.0.x - a bugfix release
- 0.x.0 - new feature(s)
- x.0.0 - backward-incompatible change (only if unavoidable!)
git flow release start 1.0.1
-
In the newly created release branch, update
CHANGELOG.md
:Changelog ========= -(unreleased) ------------- +1.0.1 +-----
and also update
metadata.rb
:- version '1.0.0' + version '1.0.1'
-
Commit your changes and push the release branch to GitHub for review by Cisco and Chef Inc.:
git flow release publish 1.0.1
-
Once Cisco and Chef Inc. are in agreement that the release branch is sane, finish the release and push the finished release to GitHub:
git flow release finish 1.0.1 git push origin master git push origin develop git push --tags
-
Add release notes on GitHub, for example
https://github.com/cisco/cisco-network-chef-cookbook/releases/new?tag=v1.0.1
. Usually this will just be a copy-and-paste of the relevant section of theCHANGELOG.md
. -
Reach out to Chef Inc. to publish the new version of the cookbook to Chef Supermarket.