Skip to content
Merged
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
c55bd5f
chore: new branch (#33)
ashu17706 Feb 27, 2026
223795b
fix(ci): bench scorecard ci windows fixes (#34)
ashu17706 Feb 27, 2026
9256e03
ci: auto-template and title for dev to main PRs
ashu17706 Feb 27, 2026
06fb3a1
release: v0.3.2 (dev -> main) (#35)
ashu17706 Feb 27, 2026
c736bd8
ci: create dev draft release after successful dev test matrix
ashu17706 Feb 27, 2026
f2f0868
chore: add e2e dev release flow test marker (#36)
ashu17706 Feb 27, 2026
f9a2aae
release: v0.3.2 (dev -> main) (#37)
ashu17706 Feb 27, 2026
0a55dac
docs: update CHANGELOG.md for v0.4.0 [skip ci]
github-actions[bot] Feb 27, 2026
16d8e57
docs: add CI/release workflow architecture and north-star plan
ashu17706 Feb 27, 2026
8710322
ci: add commit lint, semver metadata, and deterministic release notes
ashu17706 Feb 27, 2026
7c44439
docs: finalize workflow policy docs without backlog sections
ashu17706 Feb 27, 2026
17270e6
ci: scope commit lint to pull request commit ranges only
ashu17706 Feb 27, 2026
149f174
merge: resolve main->dev workflow conflicts using dev policies
ashu17706 Feb 27, 2026
835df63
fix(ci): setup bun before dev draft release metadata step
ashu17706 Feb 27, 2026
58979fb
fix(ci): allow legacy non-conventional history for dev draft metadata
ashu17706 Feb 27, 2026
1005dd0
fix(release): align dev-main PR version with latest stable tag
ashu17706 Feb 27, 2026
4976ab6
ci: improve workflow and check naming for PR readability
ashu17706 Feb 27, 2026
c5d091f
ci: skip PR test job for dev to main release PRs
ashu17706 Feb 27, 2026
2de0504
fix(ci): use import.meta.dir for cross-platform path resolution
Feb 28, 2026
fc2fba9
ci: add auto-release job for main branch merges
Feb 28, 2026
048884c
merge: resolve main->dev conflict for auto-release workflow
Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,3 +143,77 @@ jobs:
generate_release_notes: false
draft: true
prerelease: true

auto-release:
name: Push(main) / Auto Release
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: test-merge
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive

- name: Check if already tagged
id: check
run: |
# Skip if this commit already has a stable version tag
for tag in $(git tag --points-at HEAD 2>/dev/null); do
if echo "$tag" | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "skip=true" >> "$GITHUB_OUTPUT"
echo "Commit already tagged as $tag, skipping."
exit 0
fi
done
echo "skip=false" >> "$GITHUB_OUTPUT"

- name: Setup Bun
if: steps.check.outputs.skip != 'true'
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies
if: steps.check.outputs.skip != 'true'
run: bun install

- name: Compute release metadata
if: steps.check.outputs.skip != 'true'
id: meta
run: |
bun run scripts/release-meta.ts --allow-invalid --github-output "$GITHUB_OUTPUT"

# Squash merges lose individual commit types, so if bump is
# "none" but there are unreleased commits, default to patch.
BUMP=$(grep '^bump=' "$GITHUB_OUTPUT" | cut -d= -f2)
COUNT=$(grep '^commit_count=' "$GITHUB_OUTPUT" | cut -d= -f2)
if [ "$BUMP" = "none" ] && [ "$COUNT" -gt 0 ]; then
echo "Bump was 'none' with $COUNT commits — overriding to 'patch'"
LATEST=$(git tag --list 'v*.*.*' --sort=-version:refname \
| grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
if [ -n "$LATEST" ]; then
IFS='.' read -r MAJ MIN PAT <<< "${LATEST#v}"
NEXT="v${MAJ}.${MIN}.$((PAT + 1))"
else
NEXT="v0.1.0"
fi
echo "next_version=${NEXT}" >> "$GITHUB_OUTPUT"
echo "bump=patch" >> "$GITHUB_OUTPUT"
fi

- name: Create release
if: steps.check.outputs.skip != 'true' && steps.meta.outputs.bump != 'none'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.meta.outputs.next_version }}
target_commitish: ${{ github.sha }}
name: ${{ steps.meta.outputs.next_version }}
body: ${{ steps.meta.outputs.release_notes }}
generate_release_notes: false
draft: false
prerelease: false