Skip to content

Changeset Release

Changeset Release #3

name: Changeset Release
on:
workflow_dispatch:
inputs:
type:
description: 'Change Type'
required: true
type: choice
options:
- patch
- minor
- major
description:
description: 'Change Description (in markdown)'
required: true
type: string
jobs:
create-release-pr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Generate Random Title
id: random-title
run: |
words=(
"playful" "gentle" "swift" "bright" "calm" "wise" "bold" "keen" "warm" "pure"
"fox" "deer" "hawk" "wolf" "bear" "dove" "swan" "lion" "tiger" "eagle"
"stream" "cloud" "storm" "brook" "river" "lake" "ocean" "peak" "cliff" "dale"
)
size=${#words[@]}
title=""
for i in {1..3}; do
index=$((RANDOM % size))
title="$title-${words[$index]}"
done
# Remove leading dash and output
title=${title#-}
echo "title=${title}" >> $GITHUB_OUTPUT
- name: Get Package Version
id: package-version
run: |
PACKAGE_NAME=$(node -p "require('./package.json').name")
echo "name=${PACKAGE_NAME}" >> $GITHUB_OUTPUT
- name: Create Changelog Entry
shell: bash
run: |
mkdir -p .changeset
printf -- "---\n\"%s\": %s\n---\n\n%s\n" \
"${{ steps.package-version.outputs.name }}" \
"${{ inputs.type }}" \
"${{ inputs.description }}" > ".changeset/${{ steps.random-title.outputs.title }}.md"
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
branch: release
delete-branch: true
title: 'chore: release'
commit-message: 'chore: release'
body: |
🚀 Release PR created automatically
Type: ${{ inputs.type }}
Description: ${{ inputs.description }}