Skip to content

Commit a1f4955

Browse files
authored
Merge pull request #2 from LLMTooling/claude/manual-release-workflow-01UGkqhjkAeNRBiCcMMNc94Z
Create manual GitHub workflow for releases
2 parents 32d51a2 + 2c78254 commit a1f4955

1 file changed

Lines changed: 89 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
name: Create Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Version to release (e.g., 0.1.0, 1.0.0)'
8+
required: true
9+
type: string
10+
prerelease:
11+
description: 'Mark as pre-release'
12+
required: false
13+
type: boolean
14+
default: false
15+
16+
jobs:
17+
release:
18+
name: Create Release
19+
runs-on: ubuntu-latest
20+
permissions:
21+
contents: write
22+
steps:
23+
- name: Checkout code
24+
uses: actions/checkout@v4
25+
26+
- name: Setup Node.js
27+
uses: actions/setup-node@v4
28+
with:
29+
node-version: '20'
30+
31+
- name: Validate version format
32+
run: |
33+
if ! echo "${{ inputs.version }}" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then
34+
echo "Error: Invalid version format. Expected format: X.Y.Z or X.Y.Z-suffix"
35+
exit 1
36+
fi
37+
38+
- name: Update package version
39+
run: |
40+
npm version ${{ inputs.version }} --no-git-tag-version
41+
echo "Updated package.json to version ${{ inputs.version }}"
42+
43+
- name: Install dependencies
44+
run: npm install
45+
46+
- name: Run tests
47+
run: npm test
48+
49+
- name: Build package tarball
50+
run: |
51+
npm pack
52+
echo "TARBALL=$(ls *.tgz)" >> $GITHUB_ENV
53+
54+
- name: Display package info
55+
run: |
56+
echo "Package: $(node -p "require('./package.json').name")"
57+
echo "Version: $(node -p "require('./package.json').version")"
58+
echo "Tarball: ${{ env.TARBALL }}"
59+
ls -lh *.tgz
60+
61+
- name: Create Git tag
62+
run: |
63+
git config user.name "github-actions[bot]"
64+
git config user.email "github-actions[bot]@users.noreply.github.com"
65+
git tag -a "v${{ inputs.version }}" -m "Release v${{ inputs.version }}"
66+
git push origin "v${{ inputs.version }}"
67+
68+
- name: Create GitHub Release
69+
uses: softprops/action-gh-release@v1
70+
with:
71+
tag_name: v${{ inputs.version }}
72+
name: Release v${{ inputs.version }}
73+
draft: false
74+
prerelease: ${{ inputs.prerelease }}
75+
generate_release_notes: true
76+
files: |
77+
${{ env.TARBALL }}
78+
env:
79+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
80+
81+
- name: Release summary
82+
run: |
83+
echo "✅ Successfully created release v${{ inputs.version }}"
84+
echo ""
85+
echo "📦 Tarball: ${{ env.TARBALL }}"
86+
echo "🔗 Release: https://github.com/${{ github.repository }}/releases/tag/v${{ inputs.version }}"
87+
echo ""
88+
echo "To install this version:"
89+
echo " npm install https://github.com/${{ github.repository }}/releases/download/v${{ inputs.version }}/${{ env.TARBALL }}"

0 commit comments

Comments
 (0)