mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-03-25 09:25:50 +00:00
155 lines
3.5 KiB
YAML
155 lines
3.5 KiB
YAML
name: Web CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, ms-pty ]
|
|
paths:
|
|
- 'web/**'
|
|
- '.github/workflows/web-ci.yml'
|
|
pull_request:
|
|
branches: [ main ]
|
|
paths:
|
|
- 'web/**'
|
|
- '.github/workflows/web-ci.yml'
|
|
|
|
permissions:
|
|
pull-requests: write
|
|
issues: write
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: web
|
|
|
|
jobs:
|
|
lint-and-type-check:
|
|
name: Lint and Type Check
|
|
runs-on: blacksmith-8vcpu-ubuntu-2404-arm
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10.12.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'pnpm'
|
|
cache-dependency-path: 'web/pnpm-lock.yaml'
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libpam0g-dev
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Run linting
|
|
run: pnpm run lint
|
|
|
|
- name: Build node-pty for TypeScript
|
|
run: |
|
|
cd node-pty && npm install && npm run build
|
|
|
|
- name: Run type checking
|
|
run: pnpm run typecheck
|
|
|
|
- name: Check formatting
|
|
run: pnpm run format:check
|
|
|
|
build:
|
|
name: Build
|
|
runs-on: blacksmith-8vcpu-ubuntu-2404-arm
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10.12.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'pnpm'
|
|
cache-dependency-path: 'web/pnpm-lock.yaml'
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libpam0g-dev
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Build node-pty
|
|
run: |
|
|
cd node-pty && npm install && npm run build
|
|
|
|
- name: Build project
|
|
run: pnpm run build
|
|
|
|
- name: Upload build artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: web-build
|
|
path: |
|
|
web/dist/
|
|
web/public/
|
|
retention-days: 7
|
|
|
|
test:
|
|
name: Test
|
|
runs-on: blacksmith-8vcpu-ubuntu-2404-arm
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10.12.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'pnpm'
|
|
cache-dependency-path: 'web/pnpm-lock.yaml'
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libpam0g-dev
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Run client tests
|
|
run: pnpm run test:client:coverage
|
|
|
|
- name: Run server tests
|
|
run: pnpm run test:server:coverage
|
|
|
|
- name: Upload client coverage
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: client-coverage-report
|
|
path: web/coverage/client/
|
|
retention-days: 7
|
|
|
|
- name: Upload server coverage
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: server-coverage-report
|
|
path: web/coverage/server/
|
|
retention-days: 7
|
|
|