Skip to content

Commit ed5b70b

Browse files
authored
Improve releasing docs (#850)
1 parent e1a50f8 commit ed5b70b

File tree

1 file changed

+84
-28
lines changed

1 file changed

+84
-28
lines changed

docs/contributor_guide/how-tos/release.md

Lines changed: 84 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,83 @@
22

33
## Automated Releases with `jupyter_releaser`
44

5-
The recommended way to make a release is to use
6-
[`jupyter_releaser`](https://jupyter-releaser.readthedocs.io/en/latest/get_started/making_release_from_repo.html)
7-
in GitHub Actions.
8-
Follow the linked instructions.
5+
We use [`jupyter_releaser`](https://jupyter-releaser.readthedocs.io/en/latest/) to
6+
create our releases in GitHub Actions.
7+
This document is a quick reference that will work for most releases.
8+
For full detailed instructions, see the
9+
[`jupyter_releaser` "Making your first release" document](https://jupyter-releaser.readthedocs.io/en/latest/get_started/making_release_from_repo.html).
910

11+
:::{important}
1012
**This project uses [Semantic Versioning](https://semver.org)**.
13+
:::
14+
15+
## Prerequisites
16+
17+
- To do the following steps, you must have "admin" privileges on the repository.
18+
19+
## Step 1a: Prep release
20+
21+
**This step will bump versions, update the changelog, and create a "draft" release in
22+
GitHub.**
23+
24+
- From the [JupyterGIS actions menu](https://github.com/geojupyter/jupytergis/actions),
25+
select "Step 1: Prep Release" action from the left pane.
26+
- On the right, click "Run workflow". This will present a menu you need to fill out.
27+
- The only thing you normally need to input here is the "new version specifier".
28+
**The default value is `next`, but we recommend always specifying a numeric specifier, e.g. `0.3.0`**.
29+
30+
:::{danger}
31+
**Specifying a version part (e.g. `minor` or `patch`) for "New Version Specifier" will
32+
cause Step 2 to fail.**
33+
34+
Read below for more important information about the version specifier.
35+
:::
36+
37+
### Version specifier
38+
39+
Ensure you understand the [Semantic Versioning](https://semver.org) version part
40+
definitions ("major", "minor", "patch") before selecting a version.
1141

1242
:::{important}
13-
Because this project is in early development, we **do not bump the major version number**.
14-
Most changes are minor version bumps, even breaking changes.
15-
See [the SemVer FAQ](https://semver.org/#how-should-i-deal-with-revisions-in-the-0yz-initial-development-phase) for more.
43+
Because this project is currently in early development (pre-1.0), we **do not bump the
44+
major version number**.
45+
46+
This means that **even breaking changes are minor version bumps**.
47+
48+
See [the SemVer FAQ](https://semver.org/#how-should-i-deal-with-revisions-in-the-0yz-initial-development-phase) for more details.
1649
:::
1750

18-
### Specifying a version spec
51+
## Step 1b: Review changelog
1952

20-
When prompted for a "New Version Specifier", the default value is `next`.
21-
This will bump the packages as follows:
53+
**This step will make the release notes more readable for end-users.**
2254

23-
- `0.1.0a0` -> `0.1.0a1`
24-
- `0.1.0b7` -> `0.1.0b8`
25-
- `0.1.0` -> `0.1.1`
55+
- Visit the new [GitHub "draft" release](https://github.com/geojupyter/jupytergis/releases) created in Step 1a.
56+
- Edit the release text to fix any typos and make other edits for end-user
57+
accessibility.
58+
- Remove any bot-created PRs, for example pre-commit hook updates or dependabot PRs.
59+
- Remove any bots from the contributor list.
60+
- Edit text for readability by end-users where appropriate.
61+
- **Click "Save draft" to save your changes**.
2662

27-
This is often **not** what we want.
28-
To bump to another version, you can specify the desired version directly.
29-
For example:
63+
:::{danger}
64+
**Do not click "Publish a release" in the GitHub UI**.
65+
That will be done automatically in Step 2.
66+
:::
3067

31-
- `0.1.0b8`
32-
- `0.4.0`
33-
- `1.0.0`
34-
- `1.2.0rc0`
68+
## Step 2: Publish a release
3569

36-
You can also specify a version part, e.g.:
70+
- From the [JupyterGIS actions menu](https://github.com/geojupyter/jupytergis/actions),
71+
select "Step 2: Publish Release" action from the left pane.
72+
- On the right, click "Run workflow". This will present a menu, but you can leave it
73+
blank.
3774

38-
- `patch`
39-
- Would bump `0.3.0` -> `0.3.1`
40-
- `minor`
41-
- Would bump `0.3.0` -> `0.4.0`
42-
- `major`
43-
- Would bump `0.3.0` -> `1.0.0`
75+
## Step 3: Conda Forge release
4476

45-
## Conda Forge release
77+
:::{important}
78+
Before moving on to the Conda Forge release, ensure that JupyterGIS has released on PyPI.
79+
Check [the PyPI JupyterGIS page](https://pypi.org/project/jupytergis/) to see if the new
80+
release is present.
81+
:::
4682

4783
After the PyPI release, a Conda Forge bot will automatically open a PR on
4884
[our feedstock repo](https://github.com/conda-forge/jupytergis-packages-feedstock).
@@ -53,10 +89,19 @@ title `@conda-forge-admin, please update version`.
5389
If you need maintainer access to handle releases, you may request access by opening an
5490
issue with the title `@conda-forge-admin, please add user @my-username`.
5591

92+
:::{caution}
5693
If the dependencies of JupyterGIS have changed, the Conda Forge recipe must also be
5794
manually updated -- the bot will not do this for you, but it will likely warn you in a
5895
comment that it must be done.
96+
5997
Please update `recipe/meta.yaml` to reflect those changes.
98+
:::
99+
100+
Once the Conda Forge PR is merged, it may take up to an hour for it to be installable.
101+
Even after the new release is visible on
102+
[the Anaconda.org JupyterGIS page](https://anaconda.org/conda-forge/jupytergis/files),
103+
it may still take up to another hour until it's actually installable with `micromamba`
104+
or similar tools.
60105

61106
## Release assets
62107

@@ -75,3 +120,14 @@ JupyterGIS is published to:
75120

76121
Release assets are also available on GitHub. For example for
77122
[`0.3.0`](https://github.com/geojupyter/jupytergis/releases/tag/v0.3.0):
123+
124+
## Troubleshooting
125+
126+
### "Step 2: Publish release" fails to build a package with a version like `minor`
127+
128+
In Step 1, if you provide a version specifier like `next`, `patch`, or `minor`, Step 2
129+
will fail.
130+
Please specify a numeric version specifier like `0.3.0`.
131+
132+
**If you need to re-run Step 1, delete the draft release it created first**, then start
133+
over.

0 commit comments

Comments
 (0)