Skip to content

Commit

Permalink
Add patch release contribution docs to CONTRIBUTING.md. (#39357)
Browse files Browse the repository at this point in the history
* Add patch release contribution docs to CONTRIBUTING.md.

Co-authored-by: Alex Arslan <[email protected]>
Co-authored-by: Viral B. Shah <[email protected]>
  • Loading branch information
3 people committed Nov 3, 2021
1 parent 40772d0 commit f64c1ee
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,51 @@ process before running the corresponding test. This can be useful as a shortcut
on the command line (since tests aren't always designed to be run outside the
runtest harness).

### Contributing to patch releases

The process of creating a patch release is roughly as follows:

1. Create a new branch (e.g. `backports-release-1.6`) against the relevant minor release
branch (e.g. `release-1.6`). Usually a corresponding pull request is created as well.

2. Add commits, nominally from `master` (hence "backports"), to that branch.
See below for more information on this process.

3. Run the [BaseBenchmarks.jl](https://github.com/JuliaCI/BaseBenchmarks.jl) benchmark
suite and [PkgEval.jl](https://github.com/JuliaCI/PkgEval.jl) package ecosystem
exerciser against that branch. Nominally BaseBenchmarks.jl and PkgEval.jl are
invoked via [Nanosoldier.jl](https://github.com/JuliaCI/Nanosoldier.jl) from
the pull request associated with the backports branch. Fix any issues.

4. Once all test and benchmark reports look good, merge the backports branch into
the corresponding release branch (e.g. merge `backports-release-1.6` into
`release-1.6`).

5. Open a pull request that bumps the version of the relevant minor release to the
next patch version, e.g. as in [this pull request](https://github.com/JuliaLang/julia/pull/37718).

6. Ping `@JuliaLang/releases` to tag the patch release and update the website.

7. Open a pull request that bumps the version of the relevant minor release to the
next prerelase patch version, e.g. as in [this pull request](https://github.com/JuliaLang/julia/pull/37724).

Step 2 above, i.e. backporting commits to the `backports-release-X.Y` branch, has largely
been automated via [`Backporter`](https://github.com/KristofferC/Backporter): Backporter
searches for merged pull requests with the relevant `backport-X.Y` tag, and attempts to
cherry-pick the commits from those pull requests onto the `backports-release-X.Y` branch.
Some commits apply successfully without intervention, others not so much. The latter
commits require "manual" backporting, with which help is generally much appreciated.
Backporter generates a report identifying those commits it managed to backport automatically
and those that require manual backporting; this report is usually copied into the first
post of the pull request associated with `backports-release-X.Y` and maintained as
additional commits are automatically and/or manually backported.

When contributing a manual backport, if you have the necessary permissions, please push the
backport directly to the `backports-release-X.Y` branch. If you lack the relevant
permissions, please open a pull request against the `backports-release-X.Y` branch with the
manual backport. Once the manual backport is live on the `backports-release-X.Y` branch,
please remove the `backport-X.Y` tag from the originating pull request for the commits.

### Code Formatting Guidelines

#### General Formatting Guidelines for Julia code contributions
Expand Down

0 comments on commit f64c1ee

Please sign in to comment.