docs: update release instruction (#1163)

This commit is contained in:
Myriad-Dreamin 2025-01-14 16:10:59 +08:00 committed by GitHub
parent 4ab9680078
commit a33f12ea7b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 220 additions and 4 deletions

View file

@ -0,0 +1,30 @@
<svg class="typst-doc" viewBox="0 0 30.168111111111113 17.413" width="30.168111111111113pt" height="17.413pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:h5="http://www.w3.org/1999/xhtml">
<g>
<g transform="translate(0 12.463)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g7AEDD6629976B0AE3C2A563E8B08CB8A" x="0" fill="#c0caf5" fill-rule="nonzero"/>
</g>
</g>
<g transform="translate(13.054555555555556 12.463)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gC7144C9284481AC4338A8D8EBEED61FF" x="0" fill="#c0caf5" fill-rule="nonzero"/>
</g>
</g>
<g transform="translate(24.668111111111113 12.463)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g6D82919B92CC880D76DB5835CFD56162" x="0" fill="#c0caf5" fill-rule="nonzero"/>
</g>
</g>
</g>
<defs id="glyph">
<symbol id="g7AEDD6629976B0AE3C2A563E8B08CB8A" overflow="visible">
<path d="M 9.504 7.513 C 9.295 7.513 8.613 7.48 8.404 7.48 C 8.195 7.48 7.502 7.513 7.2929997 7.513 C 7.128 7.513 7.051 7.425 7.051 7.249 C 7.051 7.15 7.128 7.095 7.2929997 7.084 C 7.755 7.084 7.986 6.941 7.986 6.6549997 C 7.986 6.5889997 7.975 6.512 7.9639997 6.435 L 6.776 1.727 L 4.411 7.282 C 4.323 7.491 4.301 7.513 4.026 7.513 L 2.563 7.513 C 2.299 7.513 2.2 7.491 2.2 7.249 C 2.2 7.139 2.321 7.084 2.552 7.084 C 3.014 7.084 3.245 7.073 3.256 7.04 L 1.793 1.21 C 1.694 0.781 1.441 0.539 1.045 0.462 C 0.759 0.429 0.429 0.473 0.429 0.16499999 C 0.429 0.055 0.495 0 0.616 0 C 0.814 0 1.496 0.033 1.705 0.033 C 1.914 0.033 2.618 0 2.827 0 C 2.992 0 3.069 0.088 3.069 0.264 C 3.069 0.363 2.981 0.41799998 2.805 0.429 C 2.354 0.44 2.134 0.583 2.134 0.858 C 2.134 0.913 2.145 0.99 2.167 1.1 L 3.586 6.721 L 6.336 0.231 C 6.402 0.077 6.49 0 6.5889997 0 C 6.6879997 0 6.754 0.088 6.798 0.264 L 8.327 6.314 C 8.47 6.875 8.778 7.073 9.46 7.084 C 9.614 7.095 9.691 7.183 9.691 7.3589997 C 9.658 7.458 9.647 7.513 9.504 7.513 Z "/>
</symbol>
<symbol id="gC7144C9284481AC4338A8D8EBEED61FF" overflow="visible">
<path d="M 7.546 2.497 C 7.656 2.552 7.711 2.629 7.711 2.75 C 7.711 2.871 7.656 2.948 7.546 3.003 L 1.232 5.995 C 1.199 6.006 1.155 6.017 1.111 6.017 C 0.935 6.017 0.847 5.929 0.847 5.742 C 0.847 5.643 0.902 5.566 1.001 5.522 L 6.875 2.75 L 1.001 -0.022 C 0.902 -0.066 0.847 -0.143 0.847 -0.242 C 0.847 -0.429 0.935 -0.517 1.111 -0.517 C 1.155 -0.517 1.199 -0.506 1.232 -0.495 Z "/>
</symbol>
<symbol id="g6D82919B92CC880D76DB5835CFD56162" overflow="visible">
<path d="M 2.739 -0.242 C 4.29 -0.242 5.06 1.012 5.06 3.52 C 5.06 5.203 4.708 6.325 4.015 6.875 C 3.6299999 7.172 3.201 7.3259997 2.75 7.3259997 C 1.199 7.3259997 0.429 6.061 0.429 3.52 C 0.429 1.496 0.968 -0.242 2.739 -0.242 Z M 3.971 5.764 C 4.048 5.379 4.081 4.675 4.081 3.652 C 4.081 2.6399999 4.037 1.892 3.96 1.408 C 3.817 0.528 3.41 0.088 2.739 0.088 C 2.486 0.088 2.233 0.187 2.002 0.374 C 1.705 0.627 1.529 1.144 1.452 1.936 C 1.419 2.211 1.408 2.783 1.408 3.652 C 1.408 4.609 1.441 5.2799997 1.496 5.643 C 1.595 6.248 1.793 6.633 2.101 6.798 C 2.343 6.93 2.552 6.996 2.739 6.996 C 3.454 6.996 3.85 6.413 3.971 5.764 Z "/>
</symbol>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,30 @@
<svg class="typst-doc" viewBox="0 0 30.168111111111113 17.413" width="30.168111111111113pt" height="17.413pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:h5="http://www.w3.org/1999/xhtml">
<g>
<g transform="translate(0 12.463)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g7AEDD6629976B0AE3C2A563E8B08CB8A" x="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
<g transform="translate(13.054555555555556 12.463)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#gC7144C9284481AC4338A8D8EBEED61FF" x="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
<g transform="translate(24.668111111111113 12.463)">
<g class="typst-text" transform="scale(1, -1)">
<use xlink:href="#g6D82919B92CC880D76DB5835CFD56162" x="0" fill="#000000" fill-rule="nonzero"/>
</g>
</g>
</g>
<defs id="glyph">
<symbol id="g7AEDD6629976B0AE3C2A563E8B08CB8A" overflow="visible">
<path d="M 9.504 7.513 C 9.295 7.513 8.613 7.48 8.404 7.48 C 8.195 7.48 7.502 7.513 7.2929997 7.513 C 7.128 7.513 7.051 7.425 7.051 7.249 C 7.051 7.15 7.128 7.095 7.2929997 7.084 C 7.755 7.084 7.986 6.941 7.986 6.6549997 C 7.986 6.5889997 7.975 6.512 7.9639997 6.435 L 6.776 1.727 L 4.411 7.282 C 4.323 7.491 4.301 7.513 4.026 7.513 L 2.563 7.513 C 2.299 7.513 2.2 7.491 2.2 7.249 C 2.2 7.139 2.321 7.084 2.552 7.084 C 3.014 7.084 3.245 7.073 3.256 7.04 L 1.793 1.21 C 1.694 0.781 1.441 0.539 1.045 0.462 C 0.759 0.429 0.429 0.473 0.429 0.16499999 C 0.429 0.055 0.495 0 0.616 0 C 0.814 0 1.496 0.033 1.705 0.033 C 1.914 0.033 2.618 0 2.827 0 C 2.992 0 3.069 0.088 3.069 0.264 C 3.069 0.363 2.981 0.41799998 2.805 0.429 C 2.354 0.44 2.134 0.583 2.134 0.858 C 2.134 0.913 2.145 0.99 2.167 1.1 L 3.586 6.721 L 6.336 0.231 C 6.402 0.077 6.49 0 6.5889997 0 C 6.6879997 0 6.754 0.088 6.798 0.264 L 8.327 6.314 C 8.47 6.875 8.778 7.073 9.46 7.084 C 9.614 7.095 9.691 7.183 9.691 7.3589997 C 9.658 7.458 9.647 7.513 9.504 7.513 Z "/>
</symbol>
<symbol id="gC7144C9284481AC4338A8D8EBEED61FF" overflow="visible">
<path d="M 7.546 2.497 C 7.656 2.552 7.711 2.629 7.711 2.75 C 7.711 2.871 7.656 2.948 7.546 3.003 L 1.232 5.995 C 1.199 6.006 1.155 6.017 1.111 6.017 C 0.935 6.017 0.847 5.929 0.847 5.742 C 0.847 5.643 0.902 5.566 1.001 5.522 L 6.875 2.75 L 1.001 -0.022 C 0.902 -0.066 0.847 -0.143 0.847 -0.242 C 0.847 -0.429 0.935 -0.517 1.111 -0.517 C 1.155 -0.517 1.199 -0.506 1.232 -0.495 Z "/>
</symbol>
<symbol id="g6D82919B92CC880D76DB5835CFD56162" overflow="visible">
<path d="M 2.739 -0.242 C 4.29 -0.242 5.06 1.012 5.06 3.52 C 5.06 5.203 4.708 6.325 4.015 6.875 C 3.6299999 7.172 3.201 7.3259997 2.75 7.3259997 C 1.199 7.3259997 0.429 6.061 0.429 3.52 C 0.429 1.496 0.968 -0.242 2.739 -0.242 Z M 3.971 5.764 C 4.048 5.379 4.081 4.675 4.081 3.652 C 4.081 2.6399999 4.037 1.892 3.96 1.408 C 3.817 0.528 3.41 0.088 2.739 0.088 C 2.486 0.088 2.233 0.187 2.002 0.374 C 1.705 0.627 1.529 1.144 1.452 1.936 C 1.419 2.211 1.408 2.783 1.408 3.652 C 1.408 4.609 1.441 5.2799997 1.496 5.643 C 1.595 6.248 1.793 6.633 2.101 6.798 C 2.343 6.93 2.552 6.996 2.739 6.996 C 3.454 6.996 3.85 6.413 3.971 5.764 Z "/>
</symbol>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -117,3 +117,7 @@ To run e2e tests for tinymist on Windows:
./scripts/e2e.ps1
```
## Release on GitHub
The code owners and maintainers of the release channels can check the [Release Guide](/dev-guide/release-instruction.md) to learn how to check and release the new version of tinymist.

View file

@ -0,0 +1,71 @@
<!-- This file is generated by scripts/link-docs.mjs from docs/tinymist/release-instruction.typ. Do not edit manually. -->
# Release Instructions
## Updating Version String to Release
- The `tinymist-assets` package
- package.json should be the version.
- The VSCode Extension
- package.json should be the version.
- The Language Server Binaries
- Cargo.toml should be the version.
- The `tinymist-web` NPM package
- package.json should be the version.
You can `grep` the version number in the repository to check if all the components are updated. Some CI script will also assert failing to help you catch the issue.
## Updating the Changelog
All released version must be documented in the changelog. The changelog is located at `editors/vscode/CHANGELOG.md`. Please ensure the correct format otherwise CI will fail.
## Generating the GitHub Release's Body (Content)
Run following commands to generate the body of the release announcement:
```bash
$ yarn draft-release 0.12.19
Please check the generated announcement in target/announcement.gen.md
```
The `target/announcement.gen.md` first includes the changelog read from the `CHANGELOG.md` file, then attack the download script and available download links.
## Drafting the Release
Create a draft release on GitHub with the generated announcement.
If you are releasing a nightly version, please set the prerelease flag to true. Otherwise, if you are releasing a regular version, please set the prerelease flag to false. Some package registries relies on this flag to determine whether to update their stable channel.
Tinymist's versions follow the [Semantic Versioning](https://semver.org/) scheme, in format of `MAJOR.MINOR.PATCH`. Besides, tinymist follows special rules for the version number:
- If a version is suffixed with `-rcN` (<picture><source media="(prefers-color-scheme: dark)" srcset="./assets/images/release-instruction.typ-inlined0.svg"><img style="vertical-align: -0.35em" alt="typst-block" src="./assets/images/release-instruction.typ-inlined1.svg" /></picture>), e.g. `0.11.0-rc1` and `0.12.1-rc1`, it means this version is a release candidate. It is used to test publish script and E2E functionalities. These versions will not be published to the marketplace.
- If the `PATCH` number is odd, e.g. `0.11.1` and `0.12.3`, it means this version is a nightly release. The nightly release will use both [tinymist](https://github.com/Myriad-Dreamin/tinymist/tree/main) and [typst](https://github.com/typst/typst/tree/main) at **main branch**. They will be published as prerelease version to the marketplace.
- Otherwise, if the `PATCH` number is even, e.g. `0.11.0` and `0.12.2`, it means this version is a regular release. The regular release will always use the recent stable version of tinymist and typst.
## Checking the `Cargo.toml` and the `Cargo.lock`
A `git` with `branch` dependency is forbidden in the `Cargo.toml` file. This will cause the `Cargo.lock` file to be unstable and the build to fail. Use the `git` with `tag` dependencies instead.
## Publishing the tinymist-assets crate
Ensure that the `tinymist-assets` crate is published to the registry. Please see `Cargo.lock` to check the released crate is used correctly.
## Dry running the CI
Dry running the `release.yml` and the `release-vscode.yml` if you feel necessary.
## Tagging the Release
Push a tag to the repository with the version number. For example, if you are releasing version `0.12.19`, you should run the following command:
```bash
$ git tag v0.12.19
$ git push --tag
```
This step will trigger the `release-vscode.yml` CI to build and publish the VS Code extensions to the marketplace.
## Triggering the Binary Releases
The binary releases is triggered by the `release.yml` CI. You should trigger it after `release-vscode.yml` finished.
The `release.yml` CI will finally undraft the GitHub release automatically that inform everyone the release is ready.

View file

@ -1,3 +1,4 @@
// dist/tinymist/rs
#import "mod.typ": *
@ -18,10 +19,7 @@ It contains:
== Versioning and Release Cycle
Tinymist's versions follow the #link("https://semver.org/")[Semantic Versioning] scheme, in format of `MAJOR.MINOR.PATCH`. Besides, tinymist follows special rules for the version number:
- If a version is suffixed with `-rcN` ($N > 0$), e.g. `0.11.0-rc1` and `0.12.1-rc1`, it means this version is a release candidate. It is used to test publish script and E2E functionalities. These versions will not be published to the marketplace.
- If the `PATCH` number is odd, e.g. `0.11.1` and `0.12.3`, it means this version is a nightly release. The nightly release will use both #link("https://github.com/Myriad-Dreamin/tinymist/tree/main")[tinymist] and #link("https://github.com/typst/typst/tree/main")[typst] at *main branch*. They will be published as prerelease version to the marketplace.
- Otherwise, if the `PATCH` number is even, e.g. `0.11.0` and `0.12.2`, it means this version is a regular release. The regular release will always use the recent stable version of tinymist and typst.
#include "versioning.typ"
The release cycle is as follows:
- If there is a typst version update, a new major or minor version will be released intermediately. This means tinymist will always align the minor version with typst.

View file

@ -2,6 +2,7 @@
#import "/docs/tinymist/book.typ": book-page, cross-link
#import "/typ/templates/page.typ": *
#import "@preview/fletcher:0.4.4" as fletcher: *
#import "@preview/numbly:0.1.0": numbly
/// This function is to render a text string in monospace style and function
/// color in your defining themes.

View file

@ -0,0 +1,70 @@
#import "mod.typ": *
#show: book-page.with(title: "Release Instructions")
#set heading(numbering: numbly(none, "Step {2:1}~"))
== Updating Version String to Release
- The `tinymist-assets` package
- package.json should be the version.
- The VSCode Extension
- package.json should be the version.
- The Language Server Binaries
- Cargo.toml should be the version.
- The `tinymist-web` NPM package
- package.json should be the version.
You can `grep` the version number in the repository to check if all the components are updated. Some CI script will also assert failing to help you catch the issue.
== Updating the Changelog
All released version must be documented in the changelog. The changelog is located at `editors/vscode/CHANGELOG.md`. Please ensure the correct format otherwise CI will fail.
== Generating the GitHub Release's Body (Content)
Run following commands to generate the body of the release announcement:
```bash
$ yarn draft-release 0.12.19
Please check the generated announcement in target/announcement.gen.md
```
The `target/announcement.gen.md` first includes the changelog read from the `CHANGELOG.md` file, then attack the download script and available download links.
== Drafting the Release
Create a draft release on GitHub with the generated announcement.
If you are releasing a nightly version, please set the prerelease flag to true. Otherwise, if you are releasing a regular version, please set the prerelease flag to false. Some package registries relies on this flag to determine whether to update their stable channel.
#include "versioning.typ"
== Checking the `Cargo.toml` and the `Cargo.lock`
A `git` with `branch` dependency is forbidden in the `Cargo.toml` file. This will cause the `Cargo.lock` file to be unstable and the build to fail. Use the `git` with `tag` dependencies instead.
== Publishing the tinymist-assets crate
Ensure that the `tinymist-assets` crate is published to the registry. Please see `Cargo.lock` to check the released crate is used correctly.
== Dry running the CI
Dry running the `release.yml` and the `release-vscode.yml` if you feel necessary.
== Tagging the Release
Push a tag to the repository with the version number. For example, if you are releasing version `0.12.19`, you should run the following command:
```bash
$ git tag v0.12.19
$ git push --tag
```
This step will trigger the `release-vscode.yml` CI to build and publish the VS Code extensions to the marketplace.
== Triggering the Binary Releases
The binary releases is triggered by the `release.yml` CI. You should trigger it after `release-vscode.yml` finished.
The `release.yml` CI will finally undraft the GitHub release automatically that inform everyone the release is ready.

View file

@ -0,0 +1,4 @@
Tinymist's versions follow the #link("https://semver.org/")[Semantic Versioning] scheme, in format of `MAJOR.MINOR.PATCH`. Besides, tinymist follows special rules for the version number:
- If a version is suffixed with `-rcN` ($N > 0$), e.g. `0.11.0-rc1` and `0.12.1-rc1`, it means this version is a release candidate. It is used to test publish script and E2E functionalities. These versions will not be published to the marketplace.
- If the `PATCH` number is odd, e.g. `0.11.1` and `0.12.3`, it means this version is a nightly release. The nightly release will use both #link("https://github.com/Myriad-Dreamin/tinymist/tree/main")[tinymist] and #link("https://github.com/typst/typst/tree/main")[typst] at *main branch*. They will be published as prerelease version to the marketplace.
- Otherwise, if the `PATCH` number is even, e.g. `0.11.0` and `0.12.2`, it means this version is a regular release. The regular release will always use the recent stable version of tinymist and typst.