Skip to content

joinmisskey/release-actions

 
 

Repository files navigation

Release Manager

GitHub Actions workflows for release management of the repository.

Flow

Installation

1. Variable(s) to set

  • Make the stable branch and set the name to STABLE_BRANCH
  • If you want to rewrite package.json(s), set PACKAGE_JSONS_TO_REWRITE and INDENT according to the Variables clause.

2. workflows you should copy

Copy and use these workflows.

ⅰ. release-with-dispatch.yml (Release Manager [Dispatch])

The core workflow that is manually triggered. It has three functions:

  1. Prepare release - create PR and beta.0 tag
  2. Issue a pre-release version during the release process
  3. Issue a stable release and merge PR, when you check MERGE RELEASE BRANCH TO MAIN

ⅱ. release-edit-with-push.yml

This workflow changes the description of the PR when CHANGELOG.md is changed.

You must modify line#6 with the default (develop) branch.

ⅲ. release-with-ready.yml

Release rc when PR becomes ready for review.

3. Create a GitHub App

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 Contents permission is required for the on: release workflow to run via automatic release.
    The reason is that on: release workflows are not triggered for releases created with the default GITHUB_TOKEN.
  • The Pull requests permission 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.

Then set USE_RELEASE_APP as true as a repository variable.

4. Create a ruleset to protect the stable branch

To maintain the integrity of the stable 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 stable
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

Repository secrets and variables

Secrets

RELEASE_APP_ID (optional)<
See "If you have `on: release` workflows..."
RELEASE_APP_PRIVATE_KEY (optional)<
PEM cert. See "If you have `on: release` workflows..."

Variables

STABLE_BRANCH
Name of the stable branch targeted by the release PR. **Required.**
PACKAGE_JSONS_TO_REWRITE (optional)
package.jsons to rewrite version
e.g. "package.json" "packages/misskey-js/package.json"
INDENT (required when PACKAGE_JSONS_TO_REWRITE be set)
Indent type of package.json.
tab or number of spaces
USE_RELEASE_APP
See "If you have `on: release` workflows..."