In Rancher, one of the two automatically packaged catalogs is this repository and the community-catalog. The library catalog points to a git mirror of the master branch of this repo.
When developing and testing new templates, a new dev branch for the upcoming release is created and packaged in our rancher/server:master
container. For example, when we are developing and testing for v1.6.0
, a v1.6.0-dev
branch is created. Any PRs with changes should be made to this dev branch.
Each Rancher RC is packaged with a specific branch to isolate what specific versions of templates were tested. The RC branch are created from the current dev branch at the time of cutting the RC. If there are fixes that need to be made to address the templates, they should always be made to the dev branch. QA will pick up the dev branch for their RCs, if there are known issues in the specific branch packaged for the RC.
Note: Branches for specific RCs may be deleted in the future, as Rancher does not maintain the RCs.
Before an official Rancher release is created, a PR will be made to bring all changes from the dev branch to the master branch. The commits will be squashed into the 1 commit.
After the dev branch of a release has been merged to master and Rancher has been released, the first patch release will have a branch created based on master. All following RCs for the patch release would be based on the previous RC until the patch release was completed. And then the cycle would start again.
Example: Rancher releases v1.5.0. If Rancher is starting to test for Rancher v1.5.1, the first RC branch will be made from master, which would be v1.5.1-rc1. Any changes for the releases would be made into this branch. For the next RC, a new branch (i.e. v1.5.1-rc2) will be created from v1.5.1-rc1. This would continue until we release Rancher, where the last RC branch for the patch release would be merged into the master branch. While the v1.5.1 RCs are being created, there would be a v1.6.0-dev branch, which would contain changes for Rancher v1.6.0.
When making changes to a template into an existing catalog, compare the current dev branch with the master branch to see if a new folder needs to be created.
- Check to see if a new folder is needed in the dev branch. We are trying to maintain only 1 new template for each release as it will be the new default version for Rancher.
- If the folders are the same in the dev and master branch are the same, then a new folder will need to be created. This new folder is created to add in the new template changes that are being introduced in the latest version of Rancher.
- Create a base copy of the latest default.
- Determine what the current default version of the catalog is. IT IS NOT GUARANTEED TO BE THE LATEST FOLDER. Go to the
config.yml
of the template to find the version number. Find the corresponding template folder that has this version.
- If the folders are the same in the dev and master branch are the same, then a new folder will need to be created. This new folder is created to add in the new template changes that are being introduced in the latest version of Rancher.
Example of Folder Alignment: Folder
0
contains versionv0.1.0
for Rancher 1.1. Folder1
contains versionv0.2.0
for Rancher 1.2, but this template is not compatible with Rancher 1.1. A fix needs to be made for Rancher 1.1, so a new folder2
is created and contains versionv0.1.2
which is for Rancher 1.1, but will not be the default version for Rancher 1.2. 3. Copy the folder and commit the change asBase copy of folder X
2. If there is already new folder in the dev branch that is not in the master branch, use the new folder in the dev branch. All changes for a template would go in the same folder during a release cycle. Upgrade testing will always be done from the previous Rancher version, which would contain a template in a different folder.
-
Make changes to the template.
-
Update the version of the template in the
rancher-compose.yml
a. When introducing a new folder, the minor version should be increased. If the previous version wasv0.3.1
, it should now bev0.4.0
. b. When using an existing folder in the dev branch, which would occur only after a new folder had been introduced for that release cycle, the patch version should be increased. If the current version in the new folder isv0.4.0
, then it should bev0.4.1
.
Example: We made a change in the scheduler. There is no new difference in folders for master and dev, so we introduced folder
2
. The previous version of the template wasv0.2.0
, so the new versionv0.3.0
is for the new folder. During testing, more changes needed to be made to scheduler. Since we are still in the same Rancher release, we would continue to re-use folder2
. The next template version with changes would bev0.3.1
.
- If the version will be the latest default in the upcoming release, update the version in the
config.yml
When creating new templates of a catalog, please review the minimum_rancher_version:
in the rancher-compose.yml
to confirm that it's accurate. Due to resourcing, Rancher is generally only able to test out 1 version of a infrastructure service for a release. Therefore, the new folder should have a minimum_rancher_version
of the release that it is being introduced for. Also, any old templates should be reviewed and a maximum_rancher_version
of the previous release should be used.
Example: We are working on Rancher v1.6 on the v1.6.0-dev branch. When introducing any new folders/versions templates, we should update the
minimum_rancher_version
to bev1.6.0-rc1
. In any old folder, we should add inmaximum_rancher_version
and set it atv1.5.99
to indicate those versions are only for thev1.5.X
release.
For bugs, questions, comments, corrections, suggestions, etc., open an issue in
rancher/rancher with a title starting with [rancher-catalog]
.
Or just click here to create a new issue.
Copyright (c) 2014-2015 Rancher Labs, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.