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
|