Difference between revisions of "Notes for managing release (since 2026.04)"
Jump to navigation
Jump to search
Michaltoth (talk | contribs) (Detailed manual for the release managers (incomplete).) |
Michaltoth (talk | contribs) |
||
| Line 1: | Line 1: | ||
The responsibility of the release manager is to | The responsibility of the release manager is to | ||
| + | * Create a git Milestone for the release | ||
| + | *: The Milestone mark will be used for pull requests which should be backported to the release. | ||
* Create release branch and tag release candidates for testing | * Create release branch and tag release candidates for testing | ||
* Build binary packages for testing | * Build binary packages for testing | ||
| Line 5: | Line 7: | ||
* Update the version of the modules | * Update the version of the modules | ||
| − | + | Of course, the tasks can be delegated. Responsibility can not. :) | |
| + | |||
| + | All steps have to be repeated for modules ''opm-common'', ''opm-grid'', ''opm-simulators'', and ''opm-upscaling''. | ||
==Creation of the first release candidate== | ==Creation of the first release candidate== | ||
# Create a new branch for the first release candidate. | # Create a new branch for the first release candidate. | ||
| − | ## The branch naming convention is ''year.month'', e.g. 2026.04 | + | ## The branch naming convention is ''release/year.month'', e.g. release/2026.04. We currently have releases in months 04 and 10. |
## Open the ''dune.module'' change the Version and Label to the release candidate 1, e.g. change 2026.04-pre to 2026.04-rc1. | ## Open the ''dune.module'' change the Version and Label to the release candidate 1, e.g. change 2026.04-pre to 2026.04-rc1. | ||
## Add and commit the changes to the ''dune.module''. | ## Add and commit the changes to the ''dune.module''. | ||
## Give the branch the tag of the release candidate: ''branch_name''/rc1. Make sure the tag is placed after the version change was committed. If it was placed before, delete the tag and create it again after the commit. | ## Give the branch the tag of the release candidate: ''branch_name''/rc1. Make sure the tag is placed after the version change was committed. If it was placed before, delete the tag and create it again after the commit. | ||
| − | ##: git tag 2026.04/rc1 | + | ##: git tag release/2026.04/rc1 |
# Push the branch into the OPM github remote. | # Push the branch into the OPM github remote. | ||
#: Push the tag as well. | #: Push the tag as well. | ||
| Line 21: | Line 25: | ||
#: Relevant files are ''release-scripts/opm-backport-pr.sh'' and '' release-scripts/opm-release-install-test.sh''. | #: Relevant files are ''release-scripts/opm-backport-pr.sh'' and '' release-scripts/opm-release-install-test.sh''. | ||
#: This is done via a normal pull request like the version-updating of the master branch. | #: This is done via a normal pull request like the version-updating of the master branch. | ||
| + | |||
| + | Users and testers can ''git checkout release/2026.04/rc1''. There is only one branch for the release, the tag creates a snapshot of the code at the moment it was tagged. Tagging is what makes the release candidate. | ||
| + | |||
| + | ==Backporting: Creation of the second release candidate== | ||
| + | For backporting, we will use the script ''release-scripts/opm-backport-pr.sh'' from ''opm-utilities''. Make sure that it uses the correct release version. | ||
| + | # Choose which pull requests should be backported. | ||
| + | # Test them locally | ||
| + | ## Cherry pick the chosen pull requests. | ||
| + | ##: git cherry-pick -m1 ''hash-of-the-pull-request'' | ||
| + | ## Build the modules. If you want to do regression tests, make sure that ''opm-tests'' module is in the directory with other modules. | ||
| + | ## Run ''make test''. | ||
| + | #* Building again with different parameters (and then testing) is always a good idea. | ||
| + | # Backport pull requests. | ||
| + | ## Call the script from the git repository of the module which is getting backports. | ||
| + | ## The script takes the number of the pull request as an argument and creates a new branch with the changes. | ||
| + | ##: ./../opm-utilities/release-scripts/opm-backport-pr.sh 6894 | ||
| + | ## Push the branch into your forked repository. | ||
| + | ##: git push -u ''fork_name'' backport-of-pr-6894 | ||
| + | ## Create a pull request against the release branch. | ||
| + | ## Merge the backporting pull request. | ||
| + | #* Repeat above steps for each pull request which is being backported. | ||
| + | #*: It is possible to first create several pull requests and then merge them but it is more error prone. | ||
| + | #*: Make sure the order of merging is the same as in the master branch. The commit history should look like master's, possibly with some omitted (=not backported) pull requests | ||
Revision as of 15:00, 16 April 2026
The responsibility of the release manager is to
- Create a git Milestone for the release
- The Milestone mark will be used for pull requests which should be backported to the release.
- Create release branch and tag release candidates for testing
- Build binary packages for testing
- Backport bugfixes and other high-priority pull requests
- Update the version of the modules
Of course, the tasks can be delegated. Responsibility can not. :)
All steps have to be repeated for modules opm-common, opm-grid, opm-simulators, and opm-upscaling.
Creation of the first release candidate
- Create a new branch for the first release candidate.
- The branch naming convention is release/year.month, e.g. release/2026.04. We currently have releases in months 04 and 10.
- Open the dune.module change the Version and Label to the release candidate 1, e.g. change 2026.04-pre to 2026.04-rc1.
- Add and commit the changes to the dune.module.
- Give the branch the tag of the release candidate: branch_name/rc1. Make sure the tag is placed after the version change was committed. If it was placed before, delete the tag and create it again after the commit.
- git tag release/2026.04/rc1
- Push the branch into the OPM github remote.
- Push the tag as well.
- Update the version of the master branch.
- This is done via a normal pull request from your forked repository. Update the Version and Label in dune.module, e.g. from 2026.04-pre to 2026.10-pre. Note that master is always ahead of release.
- Update the release version in the shell scripts in opm-utilities.
- Relevant files are release-scripts/opm-backport-pr.sh and release-scripts/opm-release-install-test.sh.
- This is done via a normal pull request like the version-updating of the master branch.
Users and testers can git checkout release/2026.04/rc1. There is only one branch for the release, the tag creates a snapshot of the code at the moment it was tagged. Tagging is what makes the release candidate.
Backporting: Creation of the second release candidate
For backporting, we will use the script release-scripts/opm-backport-pr.sh from opm-utilities. Make sure that it uses the correct release version.
- Choose which pull requests should be backported.
- Test them locally
- Cherry pick the chosen pull requests.
- git cherry-pick -m1 hash-of-the-pull-request
- Build the modules. If you want to do regression tests, make sure that opm-tests module is in the directory with other modules.
- Run make test.
- Building again with different parameters (and then testing) is always a good idea.
- Cherry pick the chosen pull requests.
- Backport pull requests.
- Call the script from the git repository of the module which is getting backports.
- The script takes the number of the pull request as an argument and creates a new branch with the changes.
- ./../opm-utilities/release-scripts/opm-backport-pr.sh 6894
- Push the branch into your forked repository.
- git push -u fork_name backport-of-pr-6894
- Create a pull request against the release branch.
- Merge the backporting pull request.
- Repeat above steps for each pull request which is being backported.
- It is possible to first create several pull requests and then merge them but it is more error prone.
- Make sure the order of merging is the same as in the master branch. The commit history should look like master's, possibly with some omitted (=not backported) pull requests