Update release process
This commit is contained in:
parent
065dc476b4
commit
8953bf92ee
107
RELEASE.md
107
RELEASE.md
@ -1,93 +1,44 @@
|
|||||||
# Release & Deployment Process
|
# Release & Deployment Process
|
||||||
|
|
||||||
Please read the Working Process/Quickstart Guide in README.md
|
|
||||||
and the Development guidelines in CONTRIBUTING.md.
|
|
||||||
|
|
||||||
The release process of a new version of the extension
|
The release process of a new version of the extension
|
||||||
shall be performed by the designated *Release Manager*.
|
shall be performed by the designated *Release Manager*.
|
||||||
|
|
||||||
Note that we expect to gradually automate more of this process.
|
## Release steps
|
||||||
|
1. Make sure `develop` branch passes all the tests.
|
||||||
Having checked PR to be released it shall be
|
1. Merge `develop` into `master`
|
||||||
merged back into the `master` branch to prepare the new release.
|
1. Update the version number in `src/pg/crankshaft.control`.
|
||||||
|
1. Generate the next release files with this command:
|
||||||
The version number in `pg/cranckshaft.control` must first be updated.
|
```shell
|
||||||
To do so [Semantic Versioning 2.0](http://semver.org/) is in order.
|
|
||||||
|
|
||||||
Thew `NEWS.md` will be updated.
|
|
||||||
|
|
||||||
We now will explain the process for the case of backwards-compatible
|
|
||||||
releases (updating the minor or patch version numbers).
|
|
||||||
|
|
||||||
TODO: document the complex case of major releases.
|
|
||||||
|
|
||||||
The next command must be executed to produce the main installation
|
|
||||||
script for the new release, `release/cranckshaft--X.Y.Z.sql` and
|
|
||||||
also to copy the python package to `release/python/X.Y.Z/crankshaft`.
|
|
||||||
|
|
||||||
```
|
|
||||||
make release
|
make release
|
||||||
```
|
```
|
||||||
|
1. Generate an upgrade path from the previous to the next release by copying the generated release file. E.g:
|
||||||
|
```shell
|
||||||
|
cp release/cranckshaft--X.Y.Z.sql release/cranckshaft--A.B.C--X.Y.Z.sql
|
||||||
|
```
|
||||||
|
NOTE: you can rely on this thanks to the compatibility checks. TODO: automate this step [#94](https://github.com/CartoDB/crankshaft/issues/94)
|
||||||
|
1. Commit and push the generated files.
|
||||||
|
1. Tag the release:
|
||||||
|
```
|
||||||
|
git tag -a X.Y.Z -m "Release X.Y.Z"
|
||||||
|
git push origin X.Y.Z
|
||||||
|
```
|
||||||
|
1. Deploy and test in staging
|
||||||
|
|
||||||
Then, the release manager shall produce upgrade and downgrade scripts
|
|
||||||
to migrate to/from the previous release. In the case of minor/patch
|
## Some remarks
|
||||||
releases this simply consist in extracting the functions that have changed
|
* Version numbers shall follow [Semantic Versioning 2.0](http://semver.org/).
|
||||||
and placing them in the proper `release/cranckshaft--X.Y.Z--A.B.C.sql`
|
* CI tests will take care of **forward compatibility** of the extension at postgres level.
|
||||||
file.
|
* **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.
|
||||||
|
|
||||||
|
## Deploy commands
|
||||||
|
|
||||||
The new release can be deployed for staging/smoke tests with this command:
|
The new release can be deployed for staging/smoke tests with this command:
|
||||||
|
```shell
|
||||||
```
|
|
||||||
sudo make deploy
|
sudo make deploy
|
||||||
```
|
```
|
||||||
|
|
||||||
This will copy the current 'X.Y.Z' released version of the extension to
|
To install a specific version 'X.Y.Z' different from the default one:
|
||||||
PostgreSQL. The corresponding Python extension will be installed in a
|
```shell
|
||||||
virtual environment in `envs/X.Y.Z`.
|
|
||||||
|
|
||||||
It can be activated with:
|
|
||||||
|
|
||||||
```
|
|
||||||
source envs/X.Y.Z/bin/activate
|
|
||||||
```
|
|
||||||
|
|
||||||
But note that this is needed only for using the package directly;
|
|
||||||
the 'X.Y.Z' version of the extension will automatically use the
|
|
||||||
python package from this virtual environment.
|
|
||||||
|
|
||||||
The `sudo make deploy` operation can be also used for installing
|
|
||||||
the new version after it has been released.
|
|
||||||
|
|
||||||
To install a specific version 'X.Y.Z' different from the current one
|
|
||||||
(which must be present in `releases/`) you can:
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo make deploy RELEASE_VERSION=X.Y.Z
|
sudo make deploy RELEASE_VERSION=X.Y.Z
|
||||||
```
|
```
|
||||||
|
|
||||||
TODO: testing procedure for the new release.
|
|
||||||
|
|
||||||
TODO: procedure for staging deployment.
|
|
||||||
|
|
||||||
TODO: procedure for merging to master, tagging and deploying
|
|
||||||
in production.
|
|
||||||
|
|
||||||
## Relevant release & deployment tasks available in the Makefile
|
|
||||||
|
|
||||||
```
|
|
||||||
* `make help` show a short description of the available targets
|
|
||||||
|
|
||||||
* `make release` will generate a new release (version number defined in
|
|
||||||
`src/pg/crankshaft.control`) into `release/`.
|
|
||||||
Intended for use by the release manager.
|
|
||||||
|
|
||||||
* `sudo make deploy` will install the current release X.Y.Z from the
|
|
||||||
`release/` files into PostgreSQL and a Python virtual environment
|
|
||||||
`envs/X.Y.Z`.
|
|
||||||
Intended for use by the release manager and deployment jobs.
|
|
||||||
|
|
||||||
* `sudo make deploy RELEASE_VERSION=X.Y.Z` will install specified version
|
|
||||||
previously generated in `release/`
|
|
||||||
into PostgreSQL and a Python virtual environment `envs/X.Y.Z`.
|
|
||||||
Intended for use by the release manager and deployment jobs.
|
|
||||||
```
|
|
||||||
|
Loading…
Reference in New Issue
Block a user