mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-10-23 09:44:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			136 lines
		
	
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
	
		
			4.7 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
 | |
|       start-rc:
 | |
|         type: boolean
 | |
|         description: 'Start Release Candidate'
 | |
|         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が$GITHUB_REF_NAME, baseが$STABLE_BRANCHかつopenのPRを1つ取得
 | |
|       - name: Get PRs
 | |
|         run: |
 | |
|           echo "pr_number=$(gh pr list --limit 1 --search "head:$GITHUB_REF_NAME base:$STABLE_BRANCH is:open" --json number  --jq '.[] | .number')" >> $GITHUB_OUTPUT
 | |
|         id: get_pr
 | |
|         env:
 | |
|           STABLE_BRANCH: ${{ vars.STABLE_BRANCH }}
 | |
| 
 | |
|   merge:
 | |
|     uses: misskey-dev/release-manager-actions/.github/workflows/merge.yml@v2
 | |
|     needs: get-pr
 | |
|     if: ${{ needs.get-pr.outputs.pr_number != '' && inputs.merge == true }}
 | |
|     with:
 | |
|       pr_number: ${{ needs.get-pr.outputs.pr_number }}
 | |
|       user: 'github-actions[bot]'
 | |
|       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 }}
 | |
| 
 | |
|   create-prerelease:
 | |
|     uses: misskey-dev/release-manager-actions/.github/workflows/create-prerelease.yml@v2
 | |
|     needs: get-pr
 | |
|     if: ${{ needs.get-pr.outputs.pr_number != '' && inputs.merge != true  }}
 | |
|     with:
 | |
|       pr_number: ${{ needs.get-pr.outputs.pr_number }}
 | |
|       user: 'github-actions[bot]'
 | |
|       package_jsons_to_rewrite: ${{ vars.PACKAGE_JSONS_TO_REWRITE }}
 | |
|       use_external_app_to_release: ${{ vars.USE_RELEASE_APP == 'true' }}
 | |
|       indent: ${{ vars.INDENT }}
 | |
|       draft_prerelease_channel: alpha
 | |
|       ready_start_prerelease_channel: beta
 | |
|       prerelease_channel: ${{ inputs.start-rc && 'rc' || '' }}
 | |
|       reset_number_on_channel_change: 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@v2
 | |
|     needs: get-pr
 | |
|     if: ${{ needs.get-pr.outputs.pr_number == '' }}
 | |
|     with:
 | |
|       user: 'github-actions[bot]'
 | |
|       # 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 }}
 | |
|       stable_branch: ${{ vars.STABLE_BRANCH }}
 | |
|       draft_prerelease_channel: alpha
 | |
|     secrets:
 | |
|       RELEASE_APP_ID: ${{ secrets.RELEASE_APP_ID }}
 | |
|       RELEASE_APP_PRIVATE_KEY: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
 |