Repository navigation
80 lines (63 loc) · 1.93 KB
/
Copy pathci.yml
File metadata and controls
80 lines (63 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
name: CI
on:
push:
branches: [ master, main ]
pull_request:
branches: [ master, main ]
jobs:
test:
name: Test & Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.4
- name: Install dependencies
run: bun install
- name: Verify strict TypeScript types
run: bun run typecheck
- name: Build all micro-engines & ESM
run: bun run build:engines && bun run build:esm
- name: Build minified CSS
run: bun run build:css
- name: Build static site pages
run: bun run scripts/build-static.ts
- name: Verify distribution bundle checksums
run: bun run scripts/verify-checksums.ts
- name: Run unit test suite
run: bun test
- name: Check bundle size budget (<350KB uncompressed total including appz)
shell: bash
run: |
total_size=$(ls -l public/htmx-*.js public/appz.js | awk '{sum += $5} END {print sum}')
echo "Total uncompressed public JS bundle size: ${total_size} bytes"
if [ "$total_size" -gt 350000 ]; then
echo "Bundle size exceeded threshold!"
exit 1
fi
go:
name: Go vet, build & test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Vet & build stdlib-only native server
run: |
go vet server.go
go build -o hyperstack-server server.go
- name: Vet & test component DSL module
working-directory: go
run: |
go vet ./...
go test ./...