mirror of
https://github.com/kokonect-link/cherrypick
synced 2024-12-21 18:18:20 +09:00
126 lines
4.4 KiB
YAML
126 lines
4.4 KiB
YAML
name: "Release Manager [Dispatch]"
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
## Specify the type of the next release.
|
|
#version_increment_type:
|
|
# type: choice
|
|
# description: 'VERSION INCREMENT TYPE'
|
|
# default: 'patch'
|
|
# required: false
|
|
# options:
|
|
# - 'major'
|
|
# - 'minor'
|
|
# - 'patch'
|
|
merge:
|
|
type: boolean
|
|
description: 'MERGE RELEASE BRANCH TO MAIN'
|
|
default: false
|
|
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
permissions:
|
|
contents: write
|
|
issues: write
|
|
pull-requests: write
|
|
|
|
jobs:
|
|
get-pr:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
pr_number: ${{ steps.get_pr.outputs.pr_number }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
# headがrelease/かつopenのPRを1つ取得
|
|
- name: Get PRs
|
|
run: |
|
|
echo "pr_number=$(gh pr list --limit 1 --search "head:release/ is:open" --json number --jq '.[] | .number')" >> $GITHUB_OUTPUT
|
|
id: get_pr
|
|
|
|
merge:
|
|
uses: misskey-dev/release-manager-actions/.github/workflows/merge.yml@v1
|
|
needs: get-pr
|
|
if: ${{ needs.get-pr.outputs.pr_number != '' && inputs.merge == true }}
|
|
with:
|
|
pr_number: ${{ needs.get-pr.outputs.pr_number }}
|
|
package_jsons_to_rewrite: ${{ vars.PACKAGE_JSONS_TO_REWRITE }}
|
|
# Text to prepend to the changelog
|
|
# The first line must be `## Unreleased`
|
|
changes_template: |
|
|
## Unreleased
|
|
|
|
### General
|
|
-
|
|
|
|
### Client
|
|
-
|
|
|
|
### Server
|
|
-
|
|
|
|
use_external_app_to_release: ${{ vars.USE_RELEASE_APP == 'true' }}
|
|
indent: ${{ vars.INDENT }}
|
|
secrets:
|
|
RELEASE_APP_ID: ${{ secrets.RELEASE_APP_ID }}
|
|
RELEASE_APP_PRIVATE_KEY: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
|
|
RULESET_EDIT_APP_ID: ${{ secrets.RULESET_EDIT_APP_ID }}
|
|
RULESET_EDIT_APP_PRIVATE_KEY: ${{ secrets.RULESET_EDIT_APP_PRIVATE_KEY }}
|
|
|
|
create-prerelease:
|
|
uses: misskey-dev/release-manager-actions/.github/workflows/create-prerelease.yml@v1
|
|
needs: get-pr
|
|
if: ${{ needs.get-pr.outputs.pr_number != '' && inputs.merge != true }}
|
|
with:
|
|
pr_number: ${{ needs.get-pr.outputs.pr_number }}
|
|
package_jsons_to_rewrite: ${{ vars.PACKAGE_JSONS_TO_REWRITE }}
|
|
use_external_app_to_release: ${{ vars.USE_RELEASE_APP == 'true' }}
|
|
indent: ${{ vars.INDENT }}
|
|
secrets:
|
|
RELEASE_APP_ID: ${{ secrets.RELEASE_APP_ID }}
|
|
RELEASE_APP_PRIVATE_KEY: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
|
|
|
|
create-target:
|
|
uses: misskey-dev/release-manager-actions/.github/workflows/create-target.yml@v1
|
|
needs: get-pr
|
|
if: ${{ needs.get-pr.outputs.pr_number == '' }}
|
|
with:
|
|
# The script for version increment.
|
|
# process.env.CURRENT_VERSION: The current version.
|
|
#
|
|
# Misskey calender versioning (yyyy.MM.patch) example
|
|
version_increment_script: |
|
|
const now = new Date();
|
|
const year = now.toLocaleDateString('en-US', { year: 'numeric', timeZone: 'Asia/Tokyo' });
|
|
const month = now.toLocaleDateString('en-US', { month: 'numeric', timeZone: 'Asia/Tokyo' });
|
|
const [major, minor, _patch] = process.env.CURRENT_VERSION.split('.');
|
|
const patch = Number(_patch.split('-')[0]);
|
|
if (Number.isNaN(patch)) {
|
|
console.error('Invalid patch version', year, month, process.env.CURRENT_VERSION, major, minor, _patch);
|
|
throw new Error('Invalid patch version');
|
|
}
|
|
if (year !== major || month !== minor) {
|
|
return `${year}.${month}.0`;
|
|
} else {
|
|
return `${major}.${minor}.${patch + 1}`;
|
|
}
|
|
##Semver example
|
|
#version_increment_script: |
|
|
# const [major, minor, patch] = process.env.CURRENT_VERSION.split('.');
|
|
# if ("${{ inputs.version_increment_type }}" === "major") {
|
|
# return `${Number(major) + 1}.0.0`;
|
|
# } else if ("${{ inputs.version_increment_type }}" === "minor") {
|
|
# return `${major}.${Number(minor) + 1}.0`;
|
|
# } else {
|
|
# return `${major}.${minor}.${Number(patch) + 1}`;
|
|
# }
|
|
package_jsons_to_rewrite: ${{ vars.PACKAGE_JSONS_TO_REWRITE }}
|
|
use_external_app_to_release: ${{ vars.USE_RELEASE_APP == 'true' }}
|
|
indent: ${{ vars.INDENT }}
|
|
secrets:
|
|
RELEASE_APP_ID: ${{ secrets.RELEASE_APP_ID }}
|
|
RELEASE_APP_PRIVATE_KEY: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
|
|
RULESET_EDIT_APP_ID: ${{ secrets.RULESET_EDIT_APP_ID }}
|
|
RULESET_EDIT_APP_PRIVATE_KEY: ${{ secrets.RULESET_EDIT_APP_PRIVATE_KEY }}
|