1 2 # Release checklist: 3 4 ## Pre-release tasks 5 6 * Figure out whether a release is worthwhile to do. 7 * Analyze the previous release branch to see if anything should have been 8 applied to master. 9 * Collect changes and assemble tentative release notes. 10 * Identify previous release branch point 11 * Check commit logs between previous branch point and now for 12 notable changes worth mentioning 13 * Create a new issues_closed_for_X.Y.md file 14 * Include notable entries from here in the release notes. 15 * Analyze APIs between previous release branch and master to produce list of 16 changes (added/removed/updated funcs, etc...), and detect backwards compat 17 issues. 18 * https://github.com/lvc/abi-compliance-checker 19 * If the new release is not backwards compatible, then this is a MAJOR release. 20 * Mention removed features in ChangeLog 21 * Consider re-adding backwards compatible support, through symbol 22 aliases and appropriate entries in json-c.sym 23 * Update the AUTHORS file 24 * Exclude mentioning changes that have already been included in a point 25 release of the previous release branch. 26 27 * Update ChangeLog with relevant notes before branching. 28 29 * Check that the compile works on Linux - automatic through Travis 30 * Check that the compile works on NetBSD 31 * Check that the compile works on Windows - automatic through AppVeyor 32 33 ## Release creation 34 35 Start creating the new release: 36 release=0.15 37 git clone https://github.com/json-c/json-c json-c-${release} 38 39 mkdir distcheck 40 cd distcheck 41 # Note, the build directory *must* be entirely separate from 42 # the source tree for distcheck to work properly. 43 cmake ../json-c-${release} 44 make distcheck 45 cd .. 46 47 Make any fixes/changes *before* branching. 48 49 cd json-c-${release} 50 git branch json-c-${release} 51 git checkout json-c-${release} 52 53 ------------ 54 55 Using ${release}: 56 Update the version in json_c_version.h 57 Update the version in CMakeLists.txt (VERSION in the project(...) line) 58 Update the version in config.h.win32 (several places) 59 60 Update the set_target_properties() line in CmakeLists.txt to set the shared 61 library version. Generally, unless we're doing a major release, change: 62 VERSION x.y.z 63 to 64 VERSION x.y+1.z 65 66 git commit -a -m "Bump version to ${release}" 67 68 If we're doing a major release (SONAME bump), also bump the version 69 of ALL symbols in json-c.sym. 70 See explanation at https://github.com/json-c/json-c/issues/621 71 More info at: https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf 72 73 ------------ 74 75 Generate the doxygen documentation: 76 77 doxygen 78 git add -f doc 79 git commit doc 80 81 ------------ 82 83 Create the release tarballs: 84 85 cd .. 86 echo .git > excludes 87 tar -czf json-c-${release}.tar.gz -X excludes json-c-${release} 88 89 echo doc >> excludes 90 tar -czf json-c-${release}-nodoc.tar.gz -X excludes json-c-${release} 91 92 ------------ 93 94 Tag the branch: 95 96 cd json-c-${release} 97 git tag -a json-c-${release}-$(date +%Y%m%d) -m "Release json-c-${release}" 98 99 git push origin json-c-${release} 100 git push --tags 101 102 ------------ 103 104 Go to Amazon S3 service at: 105 https://console.aws.amazon.com/s3/ 106 107 Upload the two tarballs in the json-c_releases folder. 108 When uploading, use "Standard" storage class, and make the uploaded files publicly accessible. 109 110 Logout of Amazon S3, and verify that the files are visible. 111 https://s3.amazonaws.com/json-c_releases/releases/index.html 112 113 =================================== 114 115 Post-release checklist: 116 117 git checkout master 118 119 Add new section to ChangeLog for ${release}+1 120 121 Use ${release}.99 to indicate a version "newer" than anything on the branch: 122 Update the version in json_c_version.h 123 Update the version in CMakeLists.txt 124 Update the version in config.h.win32 125 126 Update RELEASE_CHECKLIST.txt, set release=${release}+1 127 128 Update the set_target_properties() line in CmakeLists.txt to match the release branch. 129 130 git commit -a -m "Update the master branch to version 0.${release}.99" 131 git push 132 133 ------------ 134 135 Update the gh-pages branch with new docs: 136 137 cd json-c-${release} 138 git checkout json-c-${release} 139 cd .. 140 141 git clone -b gh-pages https://github.com/json-c/json-c json-c-pages 142 cd json-c-pages 143 mkdir json-c-${release} 144 cp -R ../json-c-${release}/doc json-c-${release}/. 145 git add json-c-${release} 146 git commit -a -m "Add the ${release} docs." 147 148 vi index.html 149 # Add/change links to current release. 150 151 git commit -a -m "Update the doc links to point at ${release}" 152 153 git push 154 155 ------------ 156 157 Update checksums on wiki page. 158 159 cd .. 160 openssl sha -sha256 json-c*gz 161 openssl md5 json-c*gz 162 163 Copy and paste this output into the wiki page at: 164 https://github.com/json-c/json-c/wiki 165 166 ------------ 167 168 Send an email to the mailing list.
This page was automatically generated by LXR 0.3.1. • OpenWrt