Skip to content

Commit 27ca6ef

Browse files
authored
Improve documentation on making releases (#2157)
1 parent 28d0cbf commit 27ca6ef

File tree

2 files changed

+67
-38
lines changed

2 files changed

+67
-38
lines changed

docs/contribute-docs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ Some pages in the MyST documentation include executable code cells that demonstr
7474

7575
This will execute all `{code-cell}` directives in the documentation and include their outputs in the built site.
7676

77+
(docs:update-mystmd.org)=
7778
## How to update the live website at mystmd.org
7879

7980
When you change the content here or in most other MyST repositories, it will _not_ automatically update mystmd.org. We use [a custom MyST theme](#about:mystmd.org) that aggregates content from several MyST repositories into a single website. The content for the live website mystmd.org is hosted by Curvenote. To update the content of `mystmd.org`, [dispatch the action on `main`](https://github.com/jupyter-book/mystmd/actions/workflows/docs.yml).

docs/developer.md

Lines changed: 66 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -524,80 +524,108 @@ And to see a list of available templates that can be resolved for Typst, you can
524524

525525
https://api.mystmd.org/templates/typst
526526

527+
(howto:release)=
527528
## How to make a release
528529

529-
:::{important} Release Coordination
530-
We use the [`#release_coordination`](https://discord.com/channels/1083088970059096114/1384242935645737141) Discord channel to coordinate and collaborate on releases. For example, to ensure that features are not half-shipped, additional PRs can make it into a release, or other release responsibilities that can be shared among the team (e.g. release notes, theme deployments, social media posts, documentation updates).
531-
:::
530+
This process follows the general steps of making a release in the Jupyter Book community. Here are the basic steps to follow for any project:
532531

533-
### Make a release of `mystmd`
532+
1. [Tell others about the upcoming release](#release:coordination).
533+
2. Publish the release in the package repository for the tool. For example:
534+
- [How to publish a release of `mystmd`](#release:mystmd).
535+
- [How to publish a release of `myst-theme`](#release:myst-theme).
536+
3. [Make a release on GitHub](#release:github).
537+
4. [Update the documentation](release:docs).
538+
5. (optionally) [Create and share a blog post](#release:share).
534539

535-
To publish a new release of `mystmd`, we do two things:
540+
(release:coordination)=
541+
### Coordinating the release with the team
536542

537-
1. [Publish to NPM](#release-npm).
538-
2. [Publish a GitHub release](#release-github).
543+
We use the [`#release_coordination`](https://discord.com/channels/1083088970059096114/1384242935645737141) Discord channel to coordinate and collaborate on releases.
544+
This is a way to generate excitement and get any last-second work in before shipping.
545+
It also gives others a heads-up that some new functionality is about to go live.
539546

540-
We describe each below.
547+
### Publish a release for the repository
541548

542-
(release-npm)=
549+
When you publish a release, you upload a new version of the tool for package managers to use. The specifics depend on the toolchain for your package (in particular, it is different for Python vs. JavaScript tools). Here are a few specifics for the `mystmd` repository.
543550

551+
(release:mystmd)=
544552
#### Publish a `mystmd` release to NPM
545553

554+
`mystmd` is published to NPM via a GitHub Action. Here's how to publish a release.
555+
546556
- Find the **changesets** PR. This contains a list of the version updates that will be included with this release. [Here's an example of a release PR](https://github.com/jupyter-book/mystmd/pull/1896).
547557
- Double-check the changes that have been merged to `main` and make sure nothing particularly complex or breaking has been merged. Bias towards action, but use your best judgment on whether to move forward.
548558
- After merging that PR, [this GitHub action will make a release](https://github.com/jupyter-book/mystmd/blob/main/.github/workflows/release.yml).
549559
- It calls `npm run version` to generate the changelog (to review the changelog, you can run that command locally too).
550560
- It then publishes the updated packages to the [`mystmd` npm registry](https://www.npmjs.com/package/mystmd) (it calls `npm run publish:ci`, which calls `changeset publish`).
551561
- It creates a git version tag (which you'll use in making the GitHub release).
552-
- Next, [make a release on GitHub](#release-github).
553562

554-
(release-github)=
563+
You're done!
564+
565+
(release:myst-theme)=
566+
#### Publish a release of `myst-theme`
567+
568+
The process for releasing `myst-theme` infrastructure is similar to the release process for `mystmd`. Here's a brief overview:
569+
570+
- Find the changesets PR in `myst-theme` and merge it, similar to [the `mystmd` release process](#release:mystmd).
571+
[Here's an example PR in `myst-theme`](https://github.com/jupyter-book/myst-theme/pull/574).
572+
- Double-check the changes that have been merged to `main` and make sure nothing particularly complex or breaking has been merged.
573+
Bias towards action, but use your best judgment on whether to move forward.
574+
- Merge that PR. This will trigger the release process by running our release action. [Here's an example run of that action](https://github.com/jupyter-book/myst-theme/actions/runs/15005221275).
575+
- The action will build the latest version of the theme infrastructure, and update the template files in the [`myst-templates` GitHub organization](https://github.com/myst-templates). [Here are the lines that update this template](https://github.com/jupyter-book/myst-theme/blob/8283e4505fdb418355ca25ae114ba7bea3cec956/.github/workflows/release.yml#L39-L50).
576+
577+
You're done!
555578

556-
#### Automated releases on GitHub
579+
(release:github)=
580+
### Automated releases on GitHub
557581

558-
After a successful NPM release, our [`release.yml` workflow](https://github.com/jupyter-book/mystmd/blob/main/.github/workflows/publish-github-release.yml) will automatically create a new GitHub Release. The release notes are generated using [`github-activity`](https://github.com/cheukting/github-activity) and include a summary of all merged PRs and commits since the previous release.
582+
After a successful NPM release, our [`release.yml` workflow](https://github.com/jupyter-book/mystmd/blob/main/.github/workflows/publish-github-release.yml) will automatically create a new GitHub Release.
583+
The release notes are generated using [`github-activity`](https://github.com/cheukting/github-activity) and include a summary of all merged PRs and commits since the previous release.
559584

560-
**Maintainers are encouraged to review the new GitHub Release and edit the description as needed.** For example, you may want to add an executive summary, highlight important changes, or clarify upgrade instructions for users.
585+
**Maintainers are encouraged to review the new GitHub Release and edit the description as needed.**
586+
For example, you may want to add an executive summary, highlight important changes, or clarify upgrade instructions for users.
561587

562588
You can find the latest releases at: https://github.com/jupyter-book/mystmd/releases
563589

564-
When you've confirmed the release has been made, consider sharing it for others to discover!
590+
(release:docs)=
591+
### Update documentation
565592

566-
:::{note} Here's an announcement snippet you can copy/paste
567-
:class: dropdown
593+
When we make a release we should ensure that the documentation is up-to-date with the latest version. This will depend on the tool that you're using.
568594

569-
```md
570-
TITLE: 🚀 Release: MySTMD v1.3.26
595+
**For tools hosted at mystmd.org**, follow these [instructions to update the content at mystmd.org](#docs:update-mystmd.org).
571596

572-
BODY:
573-
The [Jupyter Book project](https://compass.jupyterbook.org) recently made a new release! 👇
597+
**For most other tools**, the documentation should auto-update with new releases (e.g., via a GitHub action).
574598

575-
[MySTMD v1.3.26](https://github.com/jupyter-book/mystmd/releases/tag/mystmd%401.3.26)
599+
(release:share)=
600+
### Create and share a blog post
576601

577-
See the link above for the release notes on GitHub! Many thanks to the [Jupyter Book team](https://compass.jupyterbook.org/team) for stewarding our development and this release.
578-
```
602+
Feel free to use the blog to post release notes as well.
603+
This should be as simple and quick as possible, don't over-think it. Here are some simple steps:
579604

580-
:::
605+
1. Copy and paste the [release notes you generated](#release:notes) into a new file [on our blog repository](https://github.com/jupyter-book/blog).
606+
2. Use the following YAML header metadata for the post:
581607

582-
**Here are a few Jupyter-adjacent spaces to share with** (you can just copy/paste the same text into each):
608+
```yaml
609+
---
610+
date: <release-date>
611+
author: The Jupyter Book Team
612+
title: <title from GitHub release>
613+
tags: release
614+
---
615+
616+
<content from GitHub release>
617+
```
618+
3. Self-merge the blog post.
619+
620+
Feel free to celebrate new releases and share the news publicly so that others know about new enhancements in our projects.
621+
622+
**Spaces to publicize releases**. Here are a few places that are worth sharing (you can just copy/paste the same text into each):
583623

584624
- [The MyST Discord](https://discord.mystmd.org/)
585625
- [The Jupyter Zulip Forum](https://https://jupyter.zulipchat.com)
586626
- [The Jupyter Discourse](https://discourse.jupyter.org)
587627
- Social media spaces of your choosing.
588628

589-
(release-myst-theme)=
590-
591-
### Make a release of the `myst-theme`
592-
593-
The process for releasing `myst-theme` infrastructure is similar to the release process for `mystmd`. Here's a brief overview:
594-
595-
- Find the changesets PR in `myst-theme` and merge it, similar to [the `mystmd` release process](#release-npm). [Here's an example PR in `myst-theme`](https://github.com/jupyter-book/myst-theme/pull/574).
596-
- Double-check the changes that have been merged to `main` and make sure nothing particularly complex or breaking has been merged. Bias towards action, but use your best judgment on whether to move forward.
597-
- Merge that PR. This will trigger the release process by running our release action. [Here's an example run of that action](https://github.com/jupyter-book/myst-theme/actions/runs/15005221275).
598-
- The action will build the latest version of the theme infrastructure, and update the template files in the [`myst-templates` GitHub organization](https://github.com/myst-templates). [Here are the lines that update this template](https://github.com/jupyter-book/myst-theme/blob/8283e4505fdb418355ca25ae114ba7bea3cec956/.github/workflows/release.yml#L39-L50).
599-
- Make a release on GitHub, by following the same process in [](#release-github).
600-
601629
## Practices we follow
602630

603631
### Build system

0 commit comments

Comments
 (0)