Skip to content

Commit 043f1af

Browse files
Improve the release instruction based on feedback
1 parent cf54914 commit 043f1af

File tree

1 file changed

+62
-99
lines changed

1 file changed

+62
-99
lines changed

.github/maintainers_guide.md

Lines changed: 62 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ this project. If you use this package within your own software as is but don't p
1111
We recommend using [pyenv](https://github.com/pyenv/pyenv) for Python runtime management. If you use macOS, follow the following steps:
1212

1313
```sh
14-
$ brew update
15-
$ brew install pyenv
14+
brew update
15+
brew install pyenv
1616
```
1717

1818
Install necessary Python runtimes for development/testing. You can rely on GitHub Actions workflows for testing with various major versions. <https://github.com/slackapi/bolt-python/tree/main/.github/workflows>
@@ -35,8 +35,8 @@ $ pyenv rehash
3535
Then, you can create a new Virtual Environment this way:
3636

3737
```sh
38-
$ python -m venv env_3.8.5
39-
$ source env_3.8.5/bin/activate
38+
python -m venv env_3.8.5
39+
source env_3.8.5/bin/activate
4040
```
4141

4242
## Tasks
@@ -50,19 +50,19 @@ If you make some changes to this SDK, please write corresponding unit tests as m
5050
If this is your first time to run tests, although it may take a bit long time, running the following script is the easiest.
5151

5252
```sh
53-
$ ./scripts/install_all_and_run_tests.sh
53+
./scripts/install_all_and_run_tests.sh
5454
```
5555

5656
Once you installed all the required dependencies, you can use the following one.
5757

5858
```sh
59-
$ ./scripts/run_tests.sh
59+
./scripts/run_tests.sh
6060
```
6161

6262
Also, you can run a single test this way.
6363

6464
```sh
65-
$ ./scripts/run_tests.sh tests/scenario_tests/test_app.py
65+
./scripts/run_tests.sh tests/scenario_tests/test_app.py
6666
```
6767

6868
#### Run the Samples
@@ -142,115 +142,78 @@ Alternatively, you can deploy from your local machine with:
142142

143143
#### Development Deployment
144144

145-
Deploying a new version of this library to Pypi is triggered by publishing a Github Release.
145+
Deploying a new version of this library to PyPI is triggered by publishing a GitHub Release.
146146
Before creating a new release, ensure that everything on a stable branch has
147147
landed, then [run the tests](#run-all-the-unit-tests).
148148

149-
1. Create a branch in which the development release will live:
150-
- Bump the version number in adherence to
151-
[Semantic Versioning](http://semver.org/) and
152-
[Developmental Release](https://peps.python.org/pep-0440/#developmental-releases)
153-
in `slack_bolt/version.py`
154-
- Example the current version is `1.2.3` a proper development bump would be
155-
`1.2.3.dev0`
156-
- `.dev` will indicate to pip that this is a
157-
[Development Release](https://peps.python.org/pep-0440/#developmental-releases)
158-
- Note that the `dev` version can be bumped in development releases:
159-
`1.2.3.dev0` -> `1.2.3.dev1`
160-
- Build the docs with `./scripts/generate_api_docs.sh`.
161-
- Commit with a message including the new version number. For example
162-
`1.2.3.dev0` & Push the commit to a branch where the development release
163-
will live (create it if it does not exist)
164-
- `git checkout -b future-release`
165-
- `git commit -m 'version 1.2.3.dev0'`
166-
- `git push -u origin future-release`
167-
2. Create a new GitHub Release from the
168-
[Releases page](https://github.com/slackapi/bolt-python/releases) by
169-
clicking the "Draft a new release" button.
170-
3. Input the version manually into the "Choose a tag" input. You must use the
171-
same version found in `slack_bolt/version.py`
172-
173-
- After you input the new version, click the "Create a new tag: x.x.x on
174-
publish" button. This won't create your tag immediately.
175-
- Auto-generate the release notes by clicking the "Auto-generate release
176-
notes" button. This will pull in changes that will be included in your
177-
release.
178-
- Edit the resulting notes to ensure they have decent messaging that are
179-
understandable by non-contributors, but each commit should still have it's
180-
own line.
181-
- Ensure that this version adheres to
182-
[semantic versioning](http://semver.org/) and
183-
[Developmental Release](https://peps.python.org/pep-0440/#developmental-releases).
184-
See [Versioning](#versioning-and-tags) for correct version format.
185-
186-
4. Set the "Target" input to the feature branch with the development changes.
187-
5. Name the release title after the version tag. It should match the updated
188-
value from `slack_bolt/version.py`!
189-
6. Make any adjustments to generated release notes to make sure they are
190-
accessible and approachable and that an end-user with little context about
191-
this project could still understand.
192-
7. Select "Set as a pre-release"
193-
8. Publish the release by clicking the "Publish release" button!
194-
9. After a few minutes, the corresponding version will be available on
195-
<https://pypi.org/project/slack-bolt>.
196-
10. (Slack Internal) Communicate the release internally
149+
1. Create the commit for the release
150+
1. In `slack_bolt/version.py` bump the version number in adherence to [Semantic Versioning](http://semver.org/) and [Developmental Release](https://peps.python.org/pep-0440/#developmental-releases).
151+
- Example: if the current version is `1.2.3`, a proper development bump would be `1.2.4.dev0`
152+
- `.dev` will indicate to pip that this is a [Development Release](https://peps.python.org/pep-0440/#developmental-releases)
153+
- Note that the `dev` version can be bumped in development releases: `1.2.4.dev0` -> `1.2.4.dev1`
154+
2. Build the docs with `./scripts/generate_api_docs.sh`.
155+
3. Commit with a message including the new version number. For example `1.2.4.dev0` & push the commit to a branch where the development release will live (create it if it does not exist)
156+
1. `git checkout -b future-release`
157+
2. `git commit -m 'version 1.2.4.dev0'`
158+
3. `git push -u origin future-release`
159+
2. Create a new GitHub Release
160+
1. Navigate to the [Releases page](https://github.com/slackapi/bolt-python/releases).
161+
2. Click the "Draft a new release" button.
162+
3. Set the "Target" to the feature branch with the development changes.
163+
4. Click "Tag: Select tag"
164+
5. Input a new tag name manually. The tag name must match the version in `slack_bolt/version.py` prefixed with "v" (e.g., if version is `1.2.4.dev0`, enter `v1.2.4.dev0`)
165+
6. Click the "Create a new tag" button. This won't create your tag immediately.
166+
7. Click the "Generate release notes" button.
167+
8. The release name should match the tag name!
168+
9. Edit the resulting notes to ensure they have decent messaging that is understandable by non-contributors, but each commit should still have its own line.
169+
10. Set this release as a pre-release.
170+
11. Publish the release by clicking the "Publish release" button!
171+
3. Navigate to the [release workflow run](https://github.com/slackapi/bolt-python/actions/workflows/pypi-release.yml). You will need to approve the deployment!
172+
4. After a few minutes, the corresponding version will be available on <https://pypi.org/project/slack-bolt>.
173+
5. (Slack Internal) Communicate the release internally
197174
198175
#### Production Deployment
199176
200-
Deploying a new version of this library to Pypi is triggered by publishing a Github Release.
177+
Deploying a new version of this library to PyPI is triggered by publishing a GitHub Release.
201178
Before creating a new release, ensure that everything on the `main` branch since
202-
the last tag is in a releasable state! At a minimum,
203-
[run the tests](#run-all-the-unit-tests).
179+
the last tag is in a releasable state! At a minimum, [run the tests](#run-all-the-unit-tests).
204180
205181
1. Create the commit for the release
206-
- Bump the version number in adherence to
207-
[Semantic Versioning](http://semver.org/) in `slack_bolt/version.py`.
208-
- Build the docs with `./scripts/generate_api_docs.sh`.
209-
- Commit with a message including the new version number. For example `1.2.3`
210-
& Push the commit to a branch and create a PR to sanity check.
211-
- `git checkout -b 1.2.3-release`
212-
- `git commit -m 'chore(release): tag version 1.2.3'`
213-
- `git push {your-fork} 1.2.3-release`
214-
- Add relevant labels to the PR and add the PR to a GitHub Milestone.
215-
- Merge in release PR after getting an approval from at least one maintainer.
216-
2. Create a new GitHub Release from the
217-
[Releases page](https://github.com/slackapi/bolt-python/releases) by
218-
clicking the "Draft a new release" button.
219-
3. Input the version manually into the "Choose a tag" input. You must use the
220-
same version found in `slack_bolt/version.py`
221-
222-
- After you input the version, click the "Create a new tag: x.x.x on publish"
223-
button. This won't create your tag immediately.
224-
- Click the "Auto-generate release notes" button. This will pull in changes
225-
that will be included in your release.
226-
- Edit the resulting notes to ensure they have decent messaging that are
227-
understandable by non-contributors, but each commit should still have it's
228-
own line.
229-
- Ensure that this version adheres to
230-
[semantic versioning](http://semver.org/). See
231-
[Versioning](#versioning-and-tags) for correct version format.
232-
233-
4. Set the "Target" input to the "main" branch.
234-
5. Name the release title after the version tag. It should match the updated
235-
value from `slack_bolt/version.py`!
236-
6. Make any adjustments to generated release notes to make sure they are
237-
accessible and approachable and that an end-user with little context about
238-
this project could still understand.
239-
7. Publish the release by clicking the "Publish release" button!
240-
8. After a few minutes, the corresponding version will be available on
241-
<https://pypi.org/project/slack-bolt/>.
242-
9. Close the current GitHub Milestone and create one for the next minor version.
243-
10. (Slack Internal) Communicate the release internally
182+
1. In `slack_bolt/version.py` bump the version number in adherence to [Semantic Versioning](http://semver.org/) and the [Versioning](#versioning-and-tags) section.
183+
2. Build the docs with `./scripts/generate_api_docs.sh`.
184+
3. Commit with a message including the new version number. For example `1.2.3` & push the commit to a branch and create a PR to sanity check.
185+
1. `git checkout -b 1.2.3-release`
186+
2. `git commit -m 'chore(release): tag version 1.2.3'`
187+
3. `git push -u origin 1.2.3-release`
188+
4. Add relevant labels to the PR and add the PR to a GitHub Milestone.
189+
5. Merge in release PR after getting an approval from at least one maintainer.
190+
2. Create a new GitHub Release
191+
1. Navigate to the [Releases page](https://github.com/slackapi/bolt-python/releases).
192+
2. Click the "Draft a new release" button.
193+
3. Set the "Target" to the `main` branch.
194+
4. Click "Tag: Select tag"
195+
5. Input a new tag name manually. The tag name must match the version in `slack_bolt/version.py` prefixed with "v" (e.g., if version is `1.2.3`, enter `v1.2.3`)
196+
6. Click the "Create a new tag" button. This won't create your tag immediately.
197+
7. Click the "Generate release notes" button.
198+
8. The release name should match the tag name!
199+
9. Edit the resulting notes to ensure they have decent messaging that is understandable by non-contributors, but each commit should still have its own line.
200+
10. Include a link to the current GitHub Milestone.
201+
11. Ensure the "latest release" checkbox is checked to mark this as the latest stable release.
202+
12. Publish the release by clicking the "Publish release" button!
203+
3. Navigate to the [release workflow run](https://github.com/slackapi/bolt-python/actions/workflows/pypi-release.yml). You will need to approve the deployment!
204+
4. After a few minutes, the corresponding version will be available on <https://pypi.org/project/slack-bolt/>.
205+
5. Close the current GitHub Milestone and create one for the next patch version.
206+
6. (Slack Internal) Communicate the release internally
244207
- Include a link to the GitHub release
245-
11. (Slack Internal) Tweet by @SlackAPI
208+
7. (Slack Internal) Tweet by @SlackAPI
246209
- Not necessary for patch updates, might be needed for minor updates,
247210
definitely needed for major updates. Include a link to the GitHub release
248211

249212
## Workflow
250213

251214
### Versioning and Tags
252215

253-
This project uses semantic versioning, expressed through the numbering scheme of
216+
This project uses [Semantic Versioning](http://semver.org/), expressed through the numbering scheme of
254217
[PEP-0440](https://www.python.org/dev/peps/pep-0440/).
255218

256219
### Branches

0 commit comments

Comments
 (0)