You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

RELEASE_CHECKLIST.txt 4.5 kB

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