Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
52 changes: 52 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: ci

on:
pull_request:
push:
branches:
- main

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"

jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: "24"

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "1.3.9"

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Lint
run: npm run lint

- name: Typecheck
run: npm run typecheck

- name: Test
run: npm test

- name: Build V1 and V2
run: npm run build:all

- name: Verify V1 package
run: npm pack --dry-run

- name: Verify V2 package
run: npm pack --dry-run
working-directory: packages/v2

- name: Test packed package in OpenCode 2
run: npm run test:v2:e2e
92 changes: 92 additions & 0 deletions .github/workflows/release-v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: release-v2

on:
push:
tags:
- "v2-*"

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"

permissions:
contents: read
id-token: write

jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: "24"

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "1.3.9"

- name: Validate tag and package version
run: |
node -e '
const fs = require("node:fs");
const tag = process.env.GITHUB_REF_NAME || "";
const version = JSON.parse(fs.readFileSync("packages/v2/package.json", "utf8")).version;
if (tag !== `v2-${version}`) {
throw new Error(`tag/version mismatch: tag=${tag} package=${version}`);
}
'

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Verify repository
run: npm run lint && npm run typecheck && npm test

- name: Build and pack V2
run: npm --prefix ../.. run build:v2 && npm pack --dry-run
working-directory: packages/v2

- name: Test packed package in OpenCode 2
run: npm run test:v2:e2e

publish:
needs: verify
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: "24"
registry-url: "https://registry.npmjs.org"

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "1.3.9"

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Publish V2 beta
run: npm publish --access public --provenance --tag next
working-directory: packages/v2

- name: Create GitHub prerelease
env:
GH_TOKEN: ${{ github.token }}
run: |
if gh release view "$GITHUB_REF_NAME" >/dev/null 2>&1; then
echo "GitHub release already exists: $GITHUB_REF_NAME"
else
gh release create "$GITHUB_REF_NAME" --verify-tag --generate-notes --title "$GITHUB_REF_NAME" --prerelease --latest=false
fi
12 changes: 11 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
needs: verify
runs-on: ubuntu-latest
permissions:
contents: read
contents: write
id-token: write
steps:
- name: Checkout
Expand All @@ -89,3 +89,13 @@ jobs:

- name: Publish to npm
run: npm publish --access public --provenance

- name: Create GitHub release
env:
GH_TOKEN: ${{ github.token }}
run: |
if gh release view "$GITHUB_REF_NAME" >/dev/null 2>&1; then
echo "GitHub release already exists: $GITHUB_REF_NAME"
else
gh release create "$GITHUB_REF_NAME" --verify-tag --generate-notes --title "$GITHUB_REF_NAME"
fi
Loading
Loading