release.rst 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. ====================
  2. Salt Release Process
  3. ====================
  4. The goal for Salt projects is to cut a new feature release every six
  5. months. This document outlines the process for these releases, and the
  6. subsequent bug fix releases which follow.
  7. Feature Release Process
  8. =======================
  9. When a new release is ready to be cut, the person responsible for cutting the
  10. release will follow the following steps (written using the 2019.2.0 release as an
  11. example):
  12. #. Create first public draft of release notes with major features.
  13. #. Remove any deprecations for the upcoming release.
  14. #. Notify salt-users and salt-announce google groups when the feature freeze
  15. branch creation will occur so they can try to get their work merged.
  16. #. Create QA test plan. Review features planned for the release and determine if
  17. there is sufficient test coverage.
  18. #. Ensure all required features are merged.
  19. #. Complete one last merge forward from the previous branch.
  20. #. Create feature release branch with the name of the release. (ex. fluorine)
  21. #. Create issue to start the process of deprecating for the next feature release.
  22. #. Create jenkins jobs to test the new feature release branch.
  23. #. Inform salt-users and salt-announce google groups feature branch and
  24. freeze is complete.
  25. #. Add new feature branch to salt-jenkins repo and the kitchen yaml file.
  26. #. Fix tests failing in jenkins test runs.
  27. #. Finalize QA test plan and add all required tests.
  28. #. Run through a manual test run based off of the head of the feature branch.
  29. #. Convert the feature release branch to the version number. For example (v2019.2)
  30. This is based off of the year and month that is planned to release.
  31. #. Migrate both the jenkins test jobs and salt-jenkins repo to the new branch number.
  32. #. Notify salt-users and salt-announce google groups of the new version branch
  33. number and migrate any PRs to the new branch.
  34. #. Delete old feature release branch name (ex. fluorine)
  35. #. Update all name references to version number in the docs. For example
  36. all fluorine references in the docs needs to be moved to v2019.2.0
  37. #. Create RC release branch. (ex. 2019.2.0.rc)
  38. #. Create new jenkins test jobs with new RC release branch
  39. #. Notify salt-users and salt-announce google groups of the new RC branch.
  40. #. Fix tests failing in jenkins test runs.
  41. #. Review the release notes with major features.
  42. #. Generate the new man pages for the release.
  43. #. Create internal RC tag for testing.
  44. #. Build latest windows, mac, ubuntu, debian and redhat packages.
  45. #. Run manual and package tests against new RC packages.
  46. #. Update release candidate docs with the new version. (ex. 2019.2.0rc1)
  47. #. Push the internal tag live to salt's repo.
  48. #. Publish release archive to pypi based off tag.
  49. #. Push the RC packages live.
  50. #. Announce new RC to salt-users and salt-announce google groups.
  51. #. Triage incoming issues based on the new RC release.
  52. #. Fix RC issues once they are categorized as a release blocker.
  53. #. Depending on the issues found during the RC process make a decesion
  54. on whether to release based off the RC or go through another RC process,
  55. repeating the steps starting at ensuring the tests are not failing.
  56. #. If a RC is categorized as stable, build all required packages.
  57. #. Test all release packages.
  58. #. Test links from `repo.saltstack.com`_.
  59. #. Update installation instructions with new release number at `repo.saltstack.com`_.
  60. #. Update and build docs to include new version (2019.2) as the latest.
  61. #. Pre-announce on salt-users google group that we are about to update our repo.
  62. #. Publish release (v2019.2.0) archive to pypi based off tag.
  63. #. Publish all packages live to repo.
  64. #. Publish the docs.
  65. #. Create release at `github`_
  66. #. Update win-repo-ng with new salt versions.
  67. #. Announce release is live to irc, salt-users, salt-announce and release slack
  68. community channel.
  69. Maintenance and Bugfix Releases
  70. ===============================
  71. Once a feature release branch has been cut from ``develop``, the branch moves
  72. into a "feature freeze" state. The new release branch enters the ``merge-forward``
  73. chain and only bugfixes should be applied against the new branch. Once major bugs
  74. have been fixed, a bugfix release can be cut:
  75. #. Ensure all required bug fixes are merged.
  76. #. Inform salt-users and salt-announce we are going to branch for the release.
  77. #. Complete one last merge forward from the previous branch.
  78. #. Create release branch with the version of the release. (ex. 2019.2.1)
  79. #. Create jenkins jobs that test the new release branch.
  80. #. Fix tests failing in jeknins test runs.
  81. #. Run through a manual test run based off of the head of the branch.
  82. #. Generate the new man pages for the release.
  83. #. Create internal tag for testing.(ex v2019.2.1)
  84. #. Build all release packages.
  85. #. Run manual and package tests against new packages.
  86. #. Update installation instructions with new release number at `repo.saltstack.com`_.
  87. #. Update and build docs to include new version. (ex. 2019.2.1)
  88. #. Pre-announce on salt-users google groups that we are about to update our repo.
  89. #. Push the internal tag live to salt's repo.
  90. #. Publish release archive to pypi based off tag.
  91. #. Push the packages live.
  92. #. Publish release (v2019.2.1) archive to pypi based off tag.
  93. #. Publish all packages live to repo.
  94. #. Publish the docs.
  95. #. Create release at `github`_
  96. #. Update win-repo-ng with new salt versions.
  97. #. Announce release is live to irc, salt-users, salt-announce and release slack channel.
  98. For more information about the difference between the ``develop`` branch and
  99. bugfix release branches, please refer to the :ref:`Which Salt Branch?
  100. <which-salt-branch>` section of Salt's :ref:`Contributing <contributing>`
  101. documentation.
  102. .. _`github`: https://github.com/saltstack/salt/releases
  103. .. _`repo.saltstack.com`: https://repo.saltstack.com