name: Create release on: workflow_dispatch: inputs: bump: description: "Version bump type" required: true type: choice options: - patch - minor - major permissions: contents: write jobs: release: name: Create tag and release runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v1 id: app-token with: app-id: ${{ vars.RIOTBYTE_BOT_APP_ID }} private-key: ${{ secrets.RIOTBYTE_BOT_PRIVATE_KEY }} - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Determine next version id: version run: | LATEST=$(git tag --list --sort=-v:refname '[0-9]*.[0-9]*.[0-9]*' --merged HEAD | head -n1) if [ -z "$LATEST" ]; then LATEST="0.0.0" fi IFS='.' read -r MAJOR MINOR PATCH <<< "$LATEST" case "${{ inputs.bump }}" in major) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;; minor) MINOR=$((MINOR + 1)); PATCH=0 ;; patch) PATCH=$((PATCH + 1)) ;; esac NEXT="${MAJOR}.${MINOR}.${PATCH}" echo "previous=${LATEST}" >> "$GITHUB_OUTPUT" echo "next=${NEXT}" >> "$GITHUB_OUTPUT" echo "Bumping ${LATEST} → ${NEXT} (${{ inputs.bump }})" - name: Create tag and GitHub release env: GH_TOKEN: ${{ steps.app-token.outputs.token }} run: | gh release create "${{ steps.version.outputs.next }}" \ --target "${{ github.sha }}" \ --title "${{ steps.version.outputs.next }}" \ --generate-notes \ --notes-start-tag "${{ steps.version.outputs.previous }}"