summaryrefslogtreecommitdiff
path: root/.github/workflows/release-with-dispatch.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/release-with-dispatch.yml')
-rw-r--r--.github/workflows/release-with-dispatch.yml125
1 files changed, 125 insertions, 0 deletions
diff --git a/.github/workflows/release-with-dispatch.yml b/.github/workflows/release-with-dispatch.yml
new file mode 100644
index 0000000000..bc6448cb37
--- /dev/null
+++ b/.github/workflows/release-with-dispatch.yml
@@ -0,0 +1,125 @@
+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 }}