Skip to content

chore: auto npm publish on main #53

chore: auto npm publish on main

chore: auto npm publish on main #53

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
jobs:
fmt:
name: fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Check formatting
run: bun run fmt
lint:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Run linter
run: bun run lint
typecheck:
name: type check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Check types
run: bun run typecheck
test:
name: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- uses: ./.github/actions/setup-zig
with:
version: 0.15.2
- name: Build WASM
run: ./scripts/build-wasm.sh
- name: Install dependencies
run: bun install
- name: Run tests
run: bun test
build:
name: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- uses: ./.github/actions/setup-zig
with:
version: 0.15.2
- name: Build WASM
run: ./scripts/build-wasm.sh
- name: Check WASM size
run: |
SIZE=$(stat -c%s ghostty-vt.wasm)
echo "WASM size: $SIZE bytes"
if [ "$SIZE" -gt 524288 ]; then
echo "❌ Error: WASM exceeds 512 KB limit"
exit 1
fi
- name: Install dependencies
run: bun install
- name: Build library
run: bun run build
publish:
name: publish to npm
runs-on: ubuntu-latest
# Only publish on main branch pushes after all checks pass
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
needs: [fmt, lint, typecheck, test, build]
permissions:
contents: read
id-token: write # Required for OIDC trusted publishing
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for git describe to find tags
- name: Publish to NPM
uses: ./.github/actions/npm-publish