2016-04-29 08:00:03 -04:00
# Releasing a new OSRM version
2016-08-03 07:29:11 -04:00
We are using http://semver.org/ for versioning with major, minor and patch versions.
2016-04-29 08:00:03 -04:00
2016-08-03 07:29:11 -04:00
## Guarantees
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
We are giving the following guarantees between versions:
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
### Major version change
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
- There are no guarantees about compatiblity of APIs or datasets
- Breaking changes will be noted as `BREAKING` in the changelog
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
### Minor version change
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
We may introduce forward-compatible changes: query parameters and response properties may be added in responses, but existing properties may not be changed or removed. One exception to this is the addition of new turn types, which we see as forward-compatible changes.
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
- Forward-compatible HTTP API
- Forward-compatible C++ library API
- Forward-compatible node-osrm API
- No compatiblity between OSRM datasets (needs new processing)
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
### Patch version change
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
- No change of query parameters or response formats
- Compatible HTTP API
- Compatible C++ library API
- Compatible node-osrm API
- Compatible OSRM datasets
2016-05-03 17:36:14 -04:00
2016-08-03 07:29:11 -04:00
## Release and branch management
2016-04-29 08:00:03 -04:00
2016-08-03 07:29:11 -04:00
- The `master` branch is for the bleeding edge development
2016-08-05 12:03:42 -04:00
- We create and maintain release branches `x.y` to control the release flow
2017-03-29 12:35:48 -04:00
- We create the release branch once we create release branches once we want to release the first RC
- RCs go in the release branch, commits needs to be cherry-picked from master
2016-08-03 07:29:11 -04:00
- No minor or major version will be released without a code-equal release candidates
2017-03-29 12:35:48 -04:00
- For quality assurance, release candidates need to be staged beforing tagging a final release
2016-08-03 07:29:11 -04:00
- Patch versions may be released without a release candidate
- We may backport fixes to older versions and release them as patch versions
2016-04-29 08:00:03 -04:00
2016-08-03 07:29:11 -04:00
## Releasing a version
2016-08-05 11:59:22 -04:00
1. Check out the appropriate release branch `x.y`
2017-03-29 12:35:48 -04:00
2. Make sure `CHANGELOG.md` is up to date.
2018-04-20 07:19:06 -04:00
3. Make sure the `package.json` on branch `x.y` has been committed.
2022-10-02 14:55:59 -04:00
4. Make sure all tests are passing (e.g. Github Actions CI gives you a :heavy_check_mark:)
2018-04-20 07:19:06 -04:00
5. Use an annotated tag to mark the release: `git tag vx.y.z -a` Body of the tag description should be the changelog entries. Commit should be one in which the `package.json` version matches the version you want to release.
2018-02-24 01:27:32 -05:00
6. Use `npm run docs` to generate the API documentation. Copy `build/docs/*` to `https://github.com/Project-OSRM/project-osrm.github.com` in the `docs/vN.N.N/api` directory
7. Push tags and commits: `git push; git push --tags`
2018-03-18 08:55:30 -04:00
8. On https://github.com/Project-OSRM/osrm-backend/releases press `Draft a new release` ,
write the release tag `vx.y.z` in the `Tag version` field, write the changelog entries in the `Describe this release` field
2022-10-02 14:55:59 -04:00
and press `Publish release` . Note that Github Actions CI deployments will create a release when publishing node binaries, so the release
2021-05-17 14:54:08 -04:00
may already exist. In which case the description should be updated with the changelog entries.
2018-03-18 08:55:30 -04:00
9. If not a release-candidate: Write a mailing-list post to osrm-talk@openstreetmap.org to announce the release
2022-10-02 14:55:59 -04:00
10. Wait until the Github Actions build has been completed and check if the node binaries were published by doing:
2017-03-29 12:35:48 -04:00
`rm -rf node_modules && npm install` locally.
2018-03-18 08:55:30 -04:00
11. For final releases run `npm publish` or `npm publish --tag next` for release candidates.
2022-10-02 14:55:59 -04:00
12. Bump version in `package.json` to `{MAJOR}.{MINOR+1}.0-unreleased` on the `master` branch after the release.