feat: Add GitHub Actions CI and release workflows
CI Workflow (.github/workflows/ci.yml): - Tests on Node.js 18, 20, 22 - Runs typecheck, tests, and build on every push/PR Release Workflow (.github/workflows/release.yml): - Triggered on version tags (v*) or manual dispatch - Builds TypeScript and web frontend - Creates distributable tarball and zip - Publishes GitHub release with binaries - Optional npm publishing (requires NPM_TOKEN secret) Closes nd-27yb 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
2ab5f75c76
commit
89046f67dd
2 changed files with 168 additions and 0 deletions
40
.github/workflows/ci.yml
vendored
Normal file
40
.github/workflows/ci.yml
vendored
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [18.x, 20.x, 22.x]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Type check
|
||||
run: npm run typecheck
|
||||
|
||||
- name: Run tests
|
||||
run: npm test
|
||||
|
||||
- name: Build
|
||||
run: npm run build
|
||||
|
||||
- name: Build web frontend
|
||||
run: npm run build:web
|
||||
128
.github/workflows/release.yml
vendored
Normal file
128
.github/workflows/release.yml
vendored
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
name: Build and Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Version to release (e.g., 0.1.0)'
|
||||
required: false
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Run tests
|
||||
run: npm test
|
||||
|
||||
- name: Build TypeScript
|
||||
run: npm run build
|
||||
|
||||
- name: Build web frontend
|
||||
run: npm run build:web
|
||||
|
||||
- name: Create distribution package
|
||||
run: |
|
||||
mkdir -p release
|
||||
cp -r dist release/
|
||||
cp -r node_modules release/
|
||||
cp package.json release/
|
||||
cp README.md release/
|
||||
# Create wrapper script
|
||||
cat > release/fabric << 'SCRIPT'
|
||||
#!/usr/bin/env node
|
||||
require('./dist/cli.js');
|
||||
SCRIPT
|
||||
chmod +x release/fabric
|
||||
|
||||
- name: Create archives
|
||||
run: |
|
||||
cd release
|
||||
tar -czvf ../fabric-linux-x64.tar.gz .
|
||||
zip -r ../fabric-linux-x64.zip .
|
||||
|
||||
- name: Get version
|
||||
id: version
|
||||
run: |
|
||||
if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ -n "${{ github.event.inputs.version }}" ]; then
|
||||
echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: ${{ steps.version.outputs.VERSION }}
|
||||
name: FABRIC v${{ steps.version.outputs.VERSION }}
|
||||
body: |
|
||||
## FABRIC v${{ steps.version.outputs.VERSION }}
|
||||
|
||||
Flow Analysis & Bead Reporting Interface Console
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
# Download and extract
|
||||
curl -L https://github.com/jedarden/FABRIC/releases/download/v${{ steps.version.outputs.VERSION }}/fabric-linux-x64.tar.gz | tar xz
|
||||
|
||||
# Run
|
||||
./fabric tui # Terminal UI
|
||||
./fabric web # Web dashboard
|
||||
```
|
||||
|
||||
### Requirements
|
||||
- Node.js >= 18.0.0
|
||||
|
||||
files: |
|
||||
fabric-linux-x64.tar.gz
|
||||
fabric-linux-x64.zip
|
||||
draft: false
|
||||
prerelease: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Optional: Publish to npm
|
||||
publish-npm:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Build
|
||||
run: npm run build
|
||||
|
||||
- name: Publish to npm
|
||||
run: npm publish --access public
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
Loading…
Add table
Reference in a new issue