GitHub Actions workflows for release management of Yamisskey. This version is specifically designed for Yamisskey's unique versioning system.
Yamisskey uses a unique versioning format based on Misskey with additional suffix:
- Format:
YYYY.MM.patch-yami-x.x.x - Example:
2024.8.0-yami-1.2.3→2024.8.0-yami-1.2.4
Yamisskey uses standard branch names:
develop: Development branch (default branch)staging: Staging branch for pre-production testingmaster: Production release branch
This version has been optimized to work without any Repository Variables configuration:
- Stable branch: Fixed to
master - Package.json handling: Fixed to
package.jsonwith tab indentation - External app usage: Enabled by default
Copy and use these workflows.
The core workflow that is manually triggered. It has three functions:
- Prepare release - create PR and alpha.0 tag
- Issue a pre-release version during the release process
- Issue a release candidate, when you check
Start Release Candidate - Issue a stable release and merge PR, when you check
MERGE RELEASE BRANCH TO MAIN
This workflow changes the description of the PR when CHANGELOG.md is changed.
You must modify line#6 with the default (develop) branch.
Release rc when PR becomes ready for review.
You must create a GitHub App with following settings and set RELEASE_APP_ID and RELEASE_APP_PRIVATE_KEY as secrets.
Please execute following installation: https://github.com/actions/create-github-app-token/tree/v1/?tab=readme-ov-file#usage
- The
Contentspermission is required for theon: releaseworkflow to run via automatic release.
The reason is thaton: releaseworkflows are not triggered for releases created with the defaultGITHUB_TOKEN. - The
Pull requestspermission is required to bypass the protect on the stable branch and perform PR merges.
| App Settings | |
|---|---|
| Webhook | |
| Active | disabled |
| Repository permission | |
| Contents | Read and Write |
| Pull requests | Read and Write |
Open Install App tab and install to the repository or whole the user/organization.
To maintain the integrity of the master branch, it is recommended that it prohibit push by ruleset.
| New Branch Ruleset | |
|---|---|
| Enforcement status | Active |
| Bypass list | |
| + Add bypass | GitHub App you created and installed |
| Targets | |
| Target branches | master |
| Branch protections | |
| Restrict creations | Enable |
| Restrict updates | Enable |
| Restrict deletions | Enable |
| Require a pull request before merging | Enable |
| Required approvals | 1 |
| Block force pushes | Enable |
RELEASE_APP_ID- GitHub App ID for external app authentication
RELEASE_APP_PRIVATE_KEY- PEM certificate for GitHub App authentication
All configuration has been hardcoded for Yamisskey:
- Stable branch:
master(fixed) - Package.json:
package.json(fixed) - Indentation: Tab (fixed)
- External app: Enabled (fixed)
The workflow automatically handles Yamisskey version increments:
- From
yami: Increments patch version (e.g.,1.2.3→1.2.4) - From non-Yamisskey: Starts with
yami-1.0.0
2024.8.0-yami-1.2.3→2024.8.0-yami-1.2.42024.8.0→2024.8.0-yami-1.0.0