gitlab.com/jfprevost/gitlab-runner-notlscheck@v11.11.4+incompatible/docs/release_process/README.md (about) 1 --- 2 comments: false 3 --- 4 5 # GitLab Runner release process 6 7 To handle the growth of this project, in `v1.6` we've introduced a release process correlated 8 with GitLab's CE/EE release process. 9 10 ## Release roadmap 11 12 Starting with `v1.4`, GitLab Runner is released on the 22nd day of each month - 13 together with GitLab CE and GitLab EE projects. 14 15 ### Stable release timeline 16 17 For a detailed timeline on how `gitlab-runner` is released and deployed, you 18 can follow the [release check 19 list](https://gitlab.com/gitlab-org/gitlab-runner/blob/master/.gitlab/issue_templates/Release%20Checklist.md). 20 21 ### Supported releases 22 23 Due to a fast development and release cycle - we release a new version 24 each 22nd day of a month! - we need to prepare a strict policy of releases' 25 supporting. 26 27 With this release process description, we're starting the _last three 28 releases support_ policy. That means when we'll release a `v1.6` version 29 we will still support `v1.5.x` and `v1.4.x` versions. But only them. 30 31 After releasing `v1.7` we'll support `v1.5.x` and `v1.6.x` and so on. 32 33 Each support requests for previous versions will be closed with 34 a ~wontfix label. 35 36 **What is supported?** 37 38 By the _release support_ we understand: 39 40 - fixes for security bugs 41 - fixes for other bugs 42 - requests for documentation 43 - questions of type _"How can I ...?"_ related to a supported version 44 45 Proposals for new features or improvements are welcome, but will be not 46 prepared for supported releases. Instead - if we decide to implement 47 them - they will be planned for one of the upcoming releases. 48 49 ### Release planning 50 51 For release planning we use the [_milestones_][runner-milestones] feature. 52 53 If a merge request is to be picked into more than one release it will need one 54 `Pick into X.Y` label per release where the merge request should be back-ported 55 to. 56 57 After releasing a version, the `vX.Y` milestone will be still used to assign 58 issues and merge requests related to support process (bugs, security fixes, etc.). 59 60 We will plan only one version ahead. However, we still want to have a way 61 to mark issues or merge requests that we decided to include in upcoming 62 releases even if we don't know when we'll have time for it. For this 63 purpose we've prepared the %Backlog milestone. 64 65 ## Workflow, merging and tagging strategy 66 67 ### Stable release 68 69 For a particular change: 70 71 - start work from `master` branch and open an MR into the `master` branch 72 - assign the MR to a milestone related to the currently upcoming release 73 - choose a good, descriptive title for the MR since it will be automatically 74 inserted in the `CHANGELOG` before doing the release 75 - if the feature is planned for the current release (confirmed by the 76 assigned milestone), merge the feature branch into master 77 78 For a whole release please follow the [Stable release timeline](#stable-release-timeline). 79 80 ### Patch releases 81 82 For a particular change: 83 84 - if bug exists in the currently upcoming version: 85 - start working from the `master` branch and open an MR against `master` 86 - assign the MR to a milestone related to the oldest version in which the bug exists 87 - choose a good, descriptive title for the MR since it will be automatically 88 inserted in the `CHANGELOG` before doing the release 89 - if a merge request is to be picked into more than one release it will need one 90 `Pick into X.Y` label per release where the merge request should be back-ported 91 to. 92 - merge the feature branch into `master` 93 - after the branch is merged into `master`, cherry-pick the merge commit to each 94 `X-Y-stable` branch starting from the branch related to the assigned 95 milestone up to the latest release 96 - if bug doesn't exist in the currently upcoming version: 97 - start work from `X-Y-stable` of the most recent version where the 98 bug exists and open an MR against this branch 99 - assign the MR to a milestone related to the oldest version in which the bug exists 100 - choose a good, descriptive title for the MR since it will be automatically 101 inserted in the `CHANGELOG` before doing the release 102 - if a merge request is to be picked into more than one release it will need one 103 `Pick into X.Y` label per release where the merge request should be back-ported 104 to. 105 - merge the feature branch into the assigned `X-Y-stable` branch 106 - after the branch is merged into the assigned `X-Y-stable` branch, 107 cherry-pick the merge and commit to each `X-Y-stable` branch corresponding 108 to the `Pick into X.Y` labels assigned. Remove each label once picked into 109 their respective stable branches. 110 111 For each `X-Y-stable` branch - if the release should be published: 112 113 - update the `CHANGELOG` file with entries for the current release 114 - create the `vX.Y.patch` tag on the `X-Y-stable` branch 115 - add the created `CHANGELOG` entries into the `CHANGELOG` file on the 116 `master` branch 117 118 ### Branch naming 119 120 While we don't enforce any strict branch naming strategy, we recommend following 121 these guidelines: 122 123 1. Choose descriptive names for branches. 124 125 For example don't name the branch `patch-1` or `test1` (which tells nothing about its 126 content nor its purpose) when it could be named `remove-unused-method-from-docker-executor`. 127 128 1. Use name prefixes: 129 - if the branch adds/updates documentation, start its name with `docs/`, 130 - if the branch adds a new feature, start its name with `feature/`, 131 - if the branch adds a new improvement, start its name with `improvement/`, 132 - if the branch fixes a bug, start its name with `fix/` or `bugfix/`. 133 134 1. Including issues number in branch name is neither recommended nor discouraged. 135 However, if you want to link the changes with an issue, it's better to 136 create the MR from this branch as soon as possible (you can use the `WIP:` prefix 137 in the title to prevent any unexpected merges) and link all relevant issues 138 in its description. 139 140 Use `Fixes #123, #456` or `Closes #123, #345` or mix of them if it's 141 reasonable. Thanks to this [issue closing pattern], the issue will 142 be closed along with merging the MR. 143 144 ## Documentation 145 146 Some documentation tips: 147 148 1. Create documentation as early as possible and before the change 149 is added into the `master`/`X-Y-stable` branch (before the MR is merged). 150 151 1. Properly mark features that need modifications in both Runner and GitLab CE/EE. 152 153 When we introduce new features we mostly mark them in the documentation 154 with the following: 155 156 ``` 157 > Introduced in GitLab Runner v1.6.0 158 ``` 159 160 Most of the times that's enough, but sometimes we introduce a change that 161 needs to be released in both GitLab Runner and GitLab CE/EE to work, 162 e.g., support for artifacts expiration. 163 164 In that case, it should be properly marked in documentation, so it's 165 clear to all **what exactly is required** for the feature to work. 166 167 We can mark it like: 168 169 ``` 170 > Introduced in GitLab Runner v1.6.0 but it needs at least GitLab 8.12 to work. 171 ``` 172 173 On GitLab CE/EE side (e.g., in API documentation) we would then mark it like: 174 175 ``` 176 > This endpoint was introduced in GitLab 8.12 but it needs at least GitLab 177 Runner v1.6.0 to work. 178 ``` 179 180 If the changes are not released at the same time, it would be good to 181 mark which version is not released yet: 182 183 > This endpoint was introduced in GitLab 8.12 but it will 184 > need at least GitLab Runner v1.7.0 (not released yet) to work. 185 186 [runner-milestones]: https://gitlab.com/gitlab-org/gitlab-runner/milestones 187 [issue closing pattern]: https://docs.gitlab.com/ee/user/project/issues/automatic_issue_closing.html