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