parent
38837bd388
commit
983480131b
3 changed files with 200 additions and 0 deletions
40
.github/workflows/release-edit-with-push.yml
vendored
Normal file
40
.github/workflows/release-edit-with-push.yml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
name: "Release Manager: sync changelog with PR"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- release/**
|
||||||
|
paths:
|
||||||
|
- 'CHANGELOG.md'
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
edit:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
# headがrelease/かつopenのPRを1つ取得
|
||||||
|
- name: Get PR
|
||||||
|
run: |
|
||||||
|
echo "pr_number=$(gh pr list --limit 1 --head "${{ github.ref_name }}" --json number --jq '.[] | .number')" >> $GITHUB_OUTPUT
|
||||||
|
id: get_pr
|
||||||
|
- name: Get target version
|
||||||
|
uses: misskey-dev/release-manager-actions/.github/actions/get-target-version@v1
|
||||||
|
id: v
|
||||||
|
# CHANGELOG.mdの内容を取得
|
||||||
|
- name: Get changelog
|
||||||
|
uses: misskey-dev/release-manager-actions/.github/actions/get-changelog@v1
|
||||||
|
with:
|
||||||
|
version: ${{ steps.v.outputs.target_version }}
|
||||||
|
id: changelog
|
||||||
|
# PRのnotesを更新
|
||||||
|
- name: Update PR
|
||||||
|
run: |
|
||||||
|
gh pr edit ${{ steps.get_pr.outputs.pr_number }} --body "${{ steps.changelog.outputs.changelog }}"
|
122
.github/workflows/release-with-dispatch.yml
vendored
Normal file
122
.github/workflows/release-with-dispatch.yml
vendored
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
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' }}
|
||||||
|
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' }}
|
||||||
|
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' }}
|
||||||
|
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 }}
|
38
.github/workflows/release-with-ready.yml
vendored
Normal file
38
.github/workflows/release-with-ready.yml
vendored
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
name: "Release Manager: release RC when ready for review"
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [ready_for_review]
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
ref: ${{ steps.get_pr.outputs.ref }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
# PR情報を取得
|
||||||
|
- name: Get PR
|
||||||
|
run: |
|
||||||
|
pr_json=$(gh pr view ${{ github.event.pull_request.number }} --json isDraft,headRefName)
|
||||||
|
echo "ref=$(echo $pr_json | jq -r '.headRefName')" >> $GITHUB_OUTPUT
|
||||||
|
id: get_pr
|
||||||
|
release:
|
||||||
|
uses: misskey-dev/release-manager-actions/.github/workflows/create-prerelease.yml@v1
|
||||||
|
needs: check
|
||||||
|
if: startsWith(needs.check.outputs.ref, 'release/')
|
||||||
|
with:
|
||||||
|
pr_number: ${{ github.event.pull_request.number }}
|
||||||
|
package_jsons_to_rewrite: ${{ vars.PACKAGE_JSONS_TO_REWRITE }}
|
||||||
|
use_external_app_to_release: ${{ vars.USE_RELEASE_APP == 'true' }}
|
||||||
|
secrets:
|
||||||
|
RELEASE_APP_ID: ${{ secrets.RELEASE_APP_ID }}
|
||||||
|
RELEASE_APP_PRIVATE_KEY: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
|
Loading…
Reference in a new issue