for_developers:releaseprocess
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
for_developers:releaseprocess [2019/01/16 00:08] – created kunz | for_developers:releaseprocess [2024/12/18 11:33] (current) – [2. Creation of a new release branch] ursgraf | ||
---|---|---|---|
Line 7: | Line 7: | ||
==== 1. Announcement of a new release | ==== 1. Announcement of a new release | ||
- | On the **[[https:// | + | On the **[[https:// |
The card must be filled with the following information, | The card must be filled with the following information, | ||
- | | + | |
- | - New features | + | * The link to the CHANGELOG.md file |
- | - Bugfixes | + | * The targeted release date |
- | - Other changes | + | - **Release Notes** section |
- | | + | * Description if it is a MAJOR or MINOR Release and why |
- | | + | - **Discussion Points** section |
+ | * List of point which must be discusses prior to the release | ||
+ | - **Issues to close before the Release** section | ||
+ | * List of issues to close before the release | ||
+ | | ||
+ | | ||
The next step is to go through all cards which are labelled with the version number of the new release. It is recommended to use the search functionality (for example search for all cards with label //Release 1.0// in list //General// => //#" | The next step is to go through all cards which are labelled with the version number of the new release. It is recommended to use the search functionality (for example search for all cards with label //Release 1.0// in list //General// => //#" | ||
Line 28: | Line 33: | ||
==== 2. Creation of a new release branch | ==== 2. Creation of a new release branch | ||
- | The EEROS release workflow supports multiple active releases. Therefore, every release is created on a release branch. The name of the release branch contains the // | + | The EEROS release workflow supports multiple active releases. Therefore, every release is created on a release branch. The name of the release branch contains the // |
- | Since the development is done on the master branch, the release branch is created based on the HEAD of the master branch. The following git commands will create the new release branch (release/1.0 is used as an example): | + | Since the development is done on the master branch, the release branch is created based on the HEAD of the master branch. The following git commands will create the new release branch (v1.0 is used as an example): |
< | < | ||
- | git checkout -b release/1.0 master | + | git checkout -b v1.0 master |
</ | </ | ||
Line 39: | Line 44: | ||
< | < | ||
- | git push --set-upstream origin | + | git push --set-upstream origin |
+ | </code> | ||
+ | |||
+ | Probably you already have a release branch, e.g. do want to release v1.0.3 and still have your branch for v.1.0.2. If so, switch to branch v1.0 and **merge your master branch** (or whatever work you want to be included) into the release branch. | ||
+ | < | ||
+ | git checkout v1.0 | ||
+ | git merge master | ||
</ | </ | ||
Line 45: | Line 56: | ||
==== 3. Creation of a new Jenkins item for the new release branch | ==== 3. Creation of a new Jenkins item for the new release branch | ||
- | After the creation of the new release branch, the code must be stabilised. Tests with different | + | After the creation of the new release branch, the code must be stabilised. Tests with different compilers are the most of the time necessary. At least one item must be added on the Jenkins server. This item must at least build EEROS with cmake and run all unit tests besides the tests of the HAL. |
Line 54: | Line 65: | ||
The API documentation is generated by Doxygen and must be fully inspected. Any changes made since the last release must be read and reviewed. | The API documentation is generated by Doxygen and must be fully inspected. Any changes made since the last release must be read and reviewed. | ||
- | If there are any issues, they must be fixed. If this is not possible without major changes, a workaround is implemented | + | If there are any issues, they must be fixed. If this is not possible without major changes, a workaround is implemented. For this workaround, a Trello card must be filled and the issue resolved until the next release. |
- | ==== 5. Change version information | + | ==== 5. Update the change log and create |
Before starting this step, steps 1-4 must be completed. | Before starting this step, steps 1-4 must be completed. | ||
- | The release branch | + | In this step, the change log ([[https:// |
- | The version information is changed as shown below (release v1.0.0 is used as an example). | + | * Section for Added, Changed, Deprecated, Removed, Fixed, Security things. |
- | + | * Breaking Changes are listed separately | |
- | < | + | * The latest version comes first |
- | ..... | + | * The release date of the Release |
- | set(EEROS_VERSION_MAJOR 1) | + | * Link to GitHub compare feature which compares to the last release |
- | set(EEROS_VERSION_MINOR 0) | + | |
- | set(EEROS_VERSION_PATCH | + | The style should always match the previous entries and is base on [[https:// |
- | set(EEROS_VERSION ${EEROS_VERSION_MAJOR}.${EEROS_VERSION_MINOR}.${EEROS_VERSION_PATCH}) | + | |
- | .... | + | The release branch is ready. The final commit must only contain changes in the **CHANGELOG.md** file. |
- | </ | + | |
- | Now, the change is committed and pushed to the EEROS repository on Github. The commit must contain the following message: **release/1.0.0**. This is done by the following git commands: | + | Now, the change is committed and pushed to the EEROS repository on GitHub. The commit must contain the following |
< | < | ||
- | git add *CMakeLists.txt* | + | git add *CHANGELOG.md* |
- | git commit -m "release/1.0.0" | + | git commit -m "Release v1.0.0" |
git push | git push | ||
</ | </ | ||
- | ==== 6. Publish the new release on Github | + | ==== 6. Publish the new release on GitHub |
- | The final commit was pushed to the repository on Github. It is important, that the release tag is set on the Github | + | The final commit was pushed to the repository on GitHub. It is important, that the release tag is set on the GitHub |
The release tag is created by completing the form, which can be reached via the following link: | The release tag is created by completing the form, which can be reached via the following link: | ||
Line 93: | Line 103: | ||
It is very important, that the right release branch is selected. The form must be completed as shown in the picture below. | It is very important, that the right release branch is selected. The form must be completed as shown in the picture below. | ||
- | //insert picture// | + | {{: |
+ | |||
+ | Note that the information in the description section is copied from the change log. | ||
==== 7. Merge the commits on the release branch into the master branch | ==== 7. Merge the commits on the release branch into the master branch | ||
- | Since there were new commit on the release branch only, they must be merged into the master branch. This ensures that the master contains all commits. This is achieved by the following git commands. | + | The normal development was continued on the master during the creation of a new release. |
< | < | ||
git checkout master | git checkout master | ||
- | git merge release/1.0 | + | git merge v1.0 |
</ | </ | ||
- | The normal development is continued on the master during the creation of a new release. | + | Since the new release is published, the current version on the master branch is now a snapshot of the next version. Therefore, the **CHANGELOG.md** should contain a **Unreleased** section on the top. The developers than can add their changes to the change log during development. |
< | < | ||
- | ..... | + | ## Unreleased |
- | set(EEROS_VERSION_MAJOR | + | (v1.1.0 targeted for 2019-06-30) ([Github compare v1.0.0...master](https:// |
- | set(EEROS_VERSION_MINOR | + | |
- | set(EEROS_VERSION_PATCH | + | ### Added Features |
- | set(EEROS_VERSION ${EEROS_VERSION_MAJOR}.${EEROS_VERSION_MINOR}.${EEROS_VERSION_PATCH}-snapshot) | + | ...... |
- | .... | + | |
</ | </ | ||
The change is committed and pushed. | The change is committed and pushed. | ||
+ | < | ||
+ | git add *CHANGELOG.md* | ||
+ | git commit -m "Add unreleased section" | ||
+ | git push | ||
+ | </ | ||
==== 8. Generate the API documentation with Doxygen | ==== 8. Generate the API documentation with Doxygen | ||
- | The second last step is to update the [[http:// | + | The second last step is to update the [[http:// |
< | < | ||
- | ... eeros-framework/ | + | ... eeros-framework/ |
</ | </ | ||
- | The documentation | + | The documentation |
- | //describe upload.// | ||
==== 9. Creation of a new card to discuss suggestions for improvement | ==== 9. Creation of a new card to discuss suggestions for improvement |
for_developers/releaseprocess.1547593722.txt.gz · Last modified: 2019/01/16 00:08 by kunz