2016-03-17 00:42:28 +08:00
# Release & Deployment Process
The release process of a new version of the extension
shall be performed by the designated *Release Manager* .
2016-08-13 00:56:03 +08:00
## Release steps
2017-11-23 16:38:07 +08:00
* Make sure `develop` branch passes all the tests.
* Merge `develop` into `master`
* Update the version number in `src/pg/crankshaft.control` .
* Generate the next release files with this command:
2016-08-17 16:41:13 +08:00
```shell
make release
```
2017-11-23 16:38:07 +08:00
* Generate an upgrade path from the previous to the next release by copying the generated release file. E.g:
2016-08-17 16:41:13 +08:00
```shell
2016-08-30 18:27:10 +08:00
cp release/crankshaft--X.Y.Z.sql release/crankshaft--A.B.C--X.Y.Z.sql
2016-08-17 16:41:13 +08:00
```
2017-11-23 16:38:07 +08:00
NOTE: you can rely on this thanks to the compatibility checks.
2016-08-17 16:41:13 +08:00
TODO: automate this step [#94 ](https://github.com/CartoDB/crankshaft/issues/94 )
2017-11-23 16:38:07 +08:00
* Update the [NEWS.md ](https://github.com/CartoDB/crankshaft/blob/master/NEWS.md ) file
* Commit and push the generated files.
* Tag the release:
2016-08-17 16:41:13 +08:00
```
git tag -a X.Y.Z -m "Release X.Y.Z"
git push origin X.Y.Z
```
2017-11-23 16:38:07 +08:00
* Deploy and test in staging
* Merge `master` into ** `stable` **
* Deploy and test in production
* Merge `master` into ** `develop` **
2016-03-17 00:42:28 +08:00
2016-08-13 00:56:03 +08:00
## Some remarks
* Version numbers shall follow [Semantic Versioning 2.0 ](http://semver.org/ ).
* CI tests will take care of **forward compatibility** of the extension at postgres level.
* **Major version changes** (breaking forward compatibility) are a major event and are out of the scope of this doc. They **shall be avoided as much as we can** .
* We will go forward, never backwards. **Generating upgrade paths automatically is easy** and we'll rely on the CI checks for that.
2016-03-17 00:42:28 +08:00
2016-08-13 00:56:03 +08:00
## Deploy commands
2016-03-17 00:42:28 +08:00
2016-08-13 00:56:03 +08:00
The new release can be deployed for staging/smoke tests with this command:
2016-08-17 16:41:13 +08:00
```shell
sudo make deploy
```
2016-03-17 00:42:28 +08:00
2016-08-13 00:56:03 +08:00
To install a specific version 'X.Y.Z' different from the default one:
2016-08-17 16:41:13 +08:00
```shell
sudo make deploy RELEASE_VERSION=X.Y.Z
```