Project

General

Profile

Download (4.09 KB) Statistics
| Branch: | Tag: | Revision:

foreman_docker / release / RELEASE.md @ 5099654c

1
# Release process
2

    
3
This document will cover process and tips regarding foreman-docker releases.
4
It should serve as a reference to the person doing the release, however the project should
5
strive to automate as much as possible of this process.
6

    
7
A preliminary script for all actions required in this repository can be found under this repository
8
under the namerollout-release.
9

    
10
## Versioning
11

    
12
`foreman-docker` follows [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html). This means:
13
* MAJOR versions: break compatibility with the latest supported Foreman version. For instance, foreman-docker 1.0 breaks Foreman 1.6 compatibility.
14
* MINOR versions: enhance foreman-docker with features in a backwards-compatible manner.
15
* PATCH versions: contain bugfixes for the latest minor version in a backwards-compatible manner.
16

    
17
`foreman-docker` will always contain a git tag for each specific version, x.y.z.
18
Major versions are maintained in `-stable` branches. As an example, when 2.0 is released, it goes in
19
the 2.0-stable branch. When 2.1.0 is released, the 2.0-stable branch is updated to include the changes.
20

    
21
## Frequency
22

    
23
Releases are done weekly unless there were not any commits merged in between releases.
24

    
25
## Tips before releasing
26

    
27
* Test against the current Foreman version. For instance, the person releasing 1.0.2, should
28
ensure it works well with Foreman 1.7 as that is the version supported by 1.y.z releases.
29
* Always test using Foreman and Katello, as Katello will depend on `foreman-docker` for some tasks.
30
Use the latest Katello version that is stable with the Foreman version supported.
31
* Make sure there are no discrepancies in the dependencies specified in the gemspec versus the
32
dependencies of the RPM spec and deb sources.
33
* If any dependency in the gemspec was updated, and the package in foreman-packaging does not serve
34
it, update the package or consider dropping the dependency.
35
* Test tagging, branching, and pushing changes to your local fork first. Only if it looks then you
36
should do the same in the project repository.
37

    
38
These sanity checks should become less and less necessary as end-to-end tests improve and integration tests are added.
39

    
40
## Process
41

    
42
* Test the master branch according to the tips mentioned above
43
* Bump `lib/foreman_docker/version.rb` according to the Versioning policy specified in this document.
44
* Run `changelog` and update the `Contributors` and `CHANGELOG` files with those generated by the
45
script
46
* `git add` your changes
47
* `git commit -m "Bump version to x.y.z"`
48
* `git push upstream master`
49
* `git tag x.y.z`
50
* `git push upstream x.y.z`
51
* `git checkout x.0-stable`
52
* `git pull --rebase upstream master`
53
* `git push upstream x.0-stable`
54
* `gem build foreman_docker.gemspec`
55
* `gem push foreman_docker-x.y.z.gem`
56

    
57
### In [foreman-packaging](https://github.com/theforeman/foreman-packaging)
58

    
59
* `git checkout rpm/develop`
60
* `git pull --rebase upstream rpm/develop`
61
* `git checkout -b rpm/foreman-docker-x.y.z`
62
* Read rubygem-foreman_docker.spec and ensure dependency versions are the same as in the gemspec
63
* Update changelog (add date and message) and bump Version in spec
64
* `git rm rubygem-foreman_docker/foreman_docker-previous_version.gem`
65
* Copy your previously built `foreman_docker-x.y.z.gem` to `rubygem-foreman_docker`
66
* `git annex add rubygem-foreman_docker/foreman_docker-x.y.z.gem`
67
* `git add` all changes but the gem itself (annex handles that)
68
* `git commit -m "plugins:foreman_docker - Release x.y.z"`
69
* `git push origin rpm/foreman-docker-x.y.z`
70
* Go to [foreman-packaging](https://github.com/theforeman/foreman-packaging) and submit PR to
71
rpm/develop branch
72
* `git checkout deb/develop`
73
* `git pull --rebase upstream deb/develop`
74
* `git checkout -b deb/foreman-docker-x.y.z`
75
* `cd plugins/ruby-foreman-docker`
76
* Bump version in foreman_docker.rb
77
* Update changelog (date and message) in debian/changelog
78
* Update gem.list in debian/gem.list (also update dependencies if needed)
79
* `git add .`
80
* `git commit -m "plugins:foreman_docker - Release x.y.z"`
81
* `git push origin deb/foreman-docker-x.y.z`
82
* Go to [foreman-packaging](https://github.com/theforeman/foreman-packaging) and submit PR to
83
deb/develop branch