• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/json-c/RELEASE_CHECKLIST.txt

  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