|
| 1 | +# Releasing the runtime |
| 2 | + |
| 3 | +This document describes the steps you as a runtime maintainer may follow |
| 4 | +to prepare a release. Since unit and integration testing is performed on a |
| 5 | +continuous basis, release preparation consists in finalising [CHANGELOG.md] |
| 6 | +and backporting minor, non-code commits to the release branch. The release |
| 7 | +of the runtime should align closely with the release of the [Intel® oneAPI |
| 8 | +Base Toolkit], e.g., prepare at the beginning and publish the release at |
| 9 | +the end of the week preceding the oneAPI release. |
| 10 | + |
| 11 | +## Preparing feature complete |
| 12 | + |
| 13 | +Changes to the source code and build system, specifically all changes which |
| 14 | +modify files installed with CMake as part of the various [components] |
| 15 | +tracked in [manifests], must be merged to the `main` branch and integrated |
| 16 | +into the [Intel® FPGA Add-on for oneAPI Base Toolkit] by feature complete. |
| 17 | + |
| 18 | +## Creating a release branch |
| 19 | + |
| 20 | +Once the [Intel® FPGA Add-on for oneAPI Base Toolkit] has been branched: |
| 21 | + |
| 22 | +- [ ] Create the release branch, e.g., `release/2022.2`. |
| 23 | + |
| 24 | + Push the last commit integrated downstream to create a release branch: |
| 25 | + |
| 26 | + ``` |
| 27 | + git push -n intel 103cf693f3cb3060a4bba8df7062e660dd581c00:refs/heads/release/2022.2 |
| 28 | + ``` |
| 29 | +
|
| 30 | + You may do a dry run with `-n` first and double-check the commit to be |
| 31 | + pushed. Once a release branch has been created, further changes must be |
| 32 | + backported using pull requests to the release branch as described below. |
| 33 | +
|
| 34 | +- [ ] Update [acl_auto.h] in the `main` branch for the **next** release. |
| 35 | +
|
| 36 | + See, e.g., [Update acl_auto.h for 2022.3 release]. |
| 37 | +
|
| 38 | + This file is updated manually, rather than parsed automatically from |
| 39 | + the release tag, since downstream integrates the commit of the runtime |
| 40 | + at feature complete, not the tagged release commit. |
| 41 | +
|
| 42 | +## Preparing a release |
| 43 | +
|
| 44 | +Submit a pull request to the `main` branch with these commits, e.g., [#97]: |
| 45 | +
|
| 46 | +- [ ] Finalise [CHANGELOG.md] for the release. |
| 47 | +
|
| 48 | + See, e.g., [Prepare changelog for 2022.2 release]. |
| 49 | +
|
| 50 | + Review the [commits] on GitHub to assemble a list of pull requests |
| 51 | + relevant to users, e.g., features and documentation, but also |
| 52 | + user-visible changes to the build system and major refactoring of the |
| 53 | + source code which might affect users maintaining downstream forks. |
| 54 | +
|
| 55 | + Ideally, [CHANGELOG.md] is updated as part of each pull request. In |
| 56 | + that case, you may focus on revising and combining changelog entries, |
| 57 | + to convey the impact of changes on users clearly and concisely. |
| 58 | +
|
| 59 | +- [ ] Update the release version in [README.md]. |
| 60 | +
|
| 61 | + See, e.g., [Update README.md for 2022.2 release]. |
| 62 | +
|
| 63 | +- [ ] Add a new Unreleased section to [CHANGELOG.md] for the next release. |
| 64 | +
|
| 65 | + See, e.g., [Add new Unreleased section to changelog]. |
| 66 | +
|
| 67 | +Submit a pull request to the release branch, e.g., [#98]: |
| 68 | +
|
| 69 | +- [ ] Backport minor, non-code commits merged after feature complete, |
| 70 | + e.g., documentation and infrastructure fixes. |
| 71 | +
|
| 72 | + `git cherry-pick -x` annotates a backport with the original commit. |
| 73 | +
|
| 74 | + This should be done **before** merging the above pull request to |
| 75 | + `main`, since backported changes must be mentioned in the changelog |
| 76 | + section of the release in preparation, rather than the next release. |
| 77 | +
|
| 78 | +- [ ] Backport finalising [CHANGELOG.md] for the release. |
| 79 | +
|
| 80 | + This must be done **after** merging the above pull request to `main`, |
| 81 | + to obtain the commit for `git cherry-pick -x`. |
| 82 | +
|
| 83 | +- [ ] Backport updating the release version in [README.md]. |
| 84 | +
|
| 85 | + This must be done **after** merging the above pull request to `main`, |
| 86 | + to obtain the commit for `git cherry-pick -x`. |
| 87 | +
|
| 88 | +## Publishing a release |
| 89 | +
|
| 90 | +On the release date, [create a new release on GitHub]: |
| 91 | +
|
| 92 | +- [ ] Create a new tag, e.g., [v2022.2] for the **release** branch. |
| 93 | +
|
| 94 | +- [ ] Copy the release notes from the [plain-text CHANGELOG.md]. |
| 95 | +
|
| 96 | + The verbatim copy of the changes may be appreciated by users who |
| 97 | + subscribed to release notifications. |
| 98 | +
|
| 99 | +[Intel® oneAPI Base Toolkit]: https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html |
| 100 | +[Intel® FPGA Add-on for oneAPI Base Toolkit]: https://www.intel.com/content/www/us/en/developer/tools/oneapi/fpga.html |
| 101 | +[CHANGELOG.md]: https://github.com/intel/fpga-runtime-for-opencl/blob/main/CHANGELOG.md |
| 102 | +[plain-text CHANGELOG.md]: https://github.com/intel/fpga-runtime-for-opencl/blob/main/CHANGELOG.md?plain=1 |
| 103 | +[README.md]: https://github.com/intel/fpga-runtime-for-opencl/blob/main/README.md |
| 104 | +[acl_auto.h]: https://github.com/intel/fpga-runtime-for-opencl/blob/main/include/acl_auto.h |
| 105 | +[commits]: https://github.com/intel/fpga-runtime-for-opencl/commits |
| 106 | +[components]: https://cmake.org/cmake/help/v3.10/command/install.html |
| 107 | +[manifests]: https://github.com/intel/fpga-runtime-for-opencl/tree/main/cmake/manifests |
| 108 | +[#97]: https://github.com/intel/fpga-runtime-for-opencl/pull/97 |
| 109 | +[#98]: https://github.com/intel/fpga-runtime-for-opencl/pull/98 |
| 110 | +[Update acl_auto.h for 2022.3 release]: https://github.com/intel/fpga-runtime-for-opencl/commit/174e61608f8a4886c6c19a2ceb4751a2b6b553a4 |
| 111 | +[Prepare changelog for 2022.2 release]: https://github.com/intel/fpga-runtime-for-opencl/pull/97/commits/e6d2321cea50098433061d3b0c442a45db68c358 |
| 112 | +[Update README.md for 2022.2 release]: https://github.com/intel/fpga-runtime-for-opencl/pull/97/commits/1d358b69e791461bb8f5879e052606b9d64ec1c8 |
| 113 | +[Add new Unreleased section to changelog]: https://github.com/intel/fpga-runtime-for-opencl/pull/97/commits/7fe5b117f60f67c5642762957f2edca53122b160 |
| 114 | +[create a new release on GitHub]: https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release |
| 115 | +[v2022.2]: https://github.com/intel/fpga-runtime-for-opencl/releases/tag/v2022.2 |
0 commit comments