|
-
- # Release checklist:
-
- ## Pre-release tasks
-
- * Figure out whether a release is worthwhile to do.
- * Analyze the previous release branch to see if anything should have been
- applied to master.
- * Collect changes and assemble tentative release notes.
- * Identify previous release branch point
- * Check commit logs between previous branch point and now for
- notable changes worth mentioning
- * Create a new issues_closed_for_X.Y.md file
- * Include notable entries from here in the release notes.
- * Analyze APIs between previous release branch and master to produce list of
- changes (added/removed/updated funcs, etc...), and detect backwards compat
- issues.
- * https://github.com/lvc/abi-compliance-checker
- * If the new release is not backwards compatible, then this is a MAJOR release.
- * Mention removed features in ChangeLog
- * Update the AUTHORS file
- * Exclude mentioning changes that have already been included in a point
- release of the previous release branch.
-
- * Update ChangeLog with relevant notes before branching.
-
- * Check that the compile works on Linux - automatic through Travis
- * Check that the compile works on NetBSD
- * Check that the compile works on Windows - automatic through AppVeyor
-
- ## Release creation
-
- Start creating the new release:
- release=0.15
- git clone https://github.com/json-c/json-c json-c-${release}
-
- mkdir distcheck
- cd distcheck
- # Note, the build directory *must* be entirely separate from
- # the source tree for distcheck to work properly.
- cmake ../json-c-${release}
- make distcheck
- cd ..
-
- Make any fixes/changes *before* branching.
-
- cd json-c-${release}
- git branch json-c-${release}
- git checkout json-c-${release}
-
- ------------
-
- Using ${release}:
- Update the version in json_c_version.h
- Update the version in Doxyfile (PROJECT_NUMBER)
- Update the version in CMakeLists.txt (VERSION in the project(...) line)
- Update the version in config.h.win32 (several places)
-
- Update the set_target_properties() line in CmakeLists.txt to set the shared
- library version. Generally, unless we're doing a major release, change:
- VERSION x.y.z
- to
- VERSION x.y+1.z
-
- git commit -a -m "Bump version to ${release}"
-
- ------------
-
- Generate the doxygen documentation:
-
- doxygen
- git add -f doc
- git commit doc
-
- ------------
-
- Create the release tarballs:
-
- cd ..
- echo .git > excludes
- tar -czf json-c-${release}.tar.gz -X excludes json-c-${release}
-
- echo doc >> excludes
- tar -czf json-c-${release}-nodoc.tar.gz -X excludes json-c-${release}
-
- ------------
-
- Tag the branch:
-
- cd json-c-${release}
- git tag -a json-c-${release}-$(date +%Y%m%d) -m "Release json-c-${release}"
-
- git push origin json-c-${release}
- git push --tags
-
- ------------
-
- Go to Amazon S3 service at:
- https://console.aws.amazon.com/s3/
-
- Upload the two tarballs in the json-c_releases folder.
- When uploading, use "Reduced Redundancy", and make the uploaded files publicly accessible.
-
- Logout of Amazon S3, and verify that the files are visible.
- https://s3.amazonaws.com/json-c_releases/releases/index.html
-
- ===================================
-
- Post-release checklist:
-
- git checkout master
-
- Add new section to ChangeLog for ${release}+1
-
- Use ${release}.99 to indicate a version "newer" than anything on the branch:
- Update the version in json_c_version.h
- Update the version in Doxyfile
- Update the version in CMakeLists.txt
- Update the version in config.h.win32
-
- Update RELEASE_CHECKLIST.txt, set release=${release}+1
-
- Update the set_target_properties() line in CmakeLists.txt to match the release branch.
-
- ------------
-
- Update the gh-pages branch with new docs:
-
- cd json-c-${release}
- git checkout json-c-${release}
- cd ..
-
- git clone -b gh-pages https://github.com/json-c/json-c json-c-pages
- cd json-c-pages
- mkdir json-c-${release}
- cp -R ../json-c-${release}/doc json-c-${release}/.
- git add json-c-${release}
- git commit
-
- vi index.html
- # Add/change links to current release.
-
- git commit index.html
-
- git push
-
- ------------
-
- Update checksums on wiki page.
-
- cd ..
- openssl sha -sha256 json-c*gz
- openssl md5 json-c*gz
-
- Copy and paste this output into the wiki page at:
- https://github.com/json-c/json-c/wiki
-
- ------------
-
- Send an email to the mailing list.
|