-
Notifications
You must be signed in to change notification settings - Fork 3
131 lines (108 loc) · 4.45 KB
/
Copy pathci.yml
File metadata and controls
131 lines (108 loc) · 4.45 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
name: Product CI
on:
pull_request:
branches: [main]
push:
branches: [main]
paths:
- 'README.md'
- 'CONTRIBUTING.md'
- 'SUPPORT.md'
- '.github/**'
- 'scripts/verify-landing-surface.sh'
- 'scripts/verify-m051-s01.sh'
- 'mesher/**'
permissions:
contents: read
jobs:
mesher-maintainer-surface:
name: Mesher maintainer surface
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout product repo
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Checkout mesh-lang toolchain repo
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
repository: hyperpush-org/mesh-lang
path: mesh-lang
- name: Setup Rust
uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 # stable
- name: Cache LLVM
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
id: cache-llvm
with:
path: ~/llvm
key: llvm-21.1.8-v3-x86_64-unknown-linux-gnu
- name: Install LLVM 21 (Linux x86_64)
if: steps.cache-llvm.outputs.cache-hit != 'true'
timeout-minutes: 10
run: |
LLVM_VERSION="21.1.8"
LLVM_ARCHIVE="LLVM-${LLVM_VERSION}-Linux-X64.tar.xz"
LLVM_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/${LLVM_ARCHIVE}"
curl -sSfL "$LLVM_URL" -o llvm.tar.xz
echo 'b3b7f2801d15d50736acea3c73982994d025b01c2f035b91ae3b49d1b575732b llvm.tar.xz' | sha256sum --check --strict
mkdir -p "$HOME/llvm"
tar xf llvm.tar.xz --strip-components=1 -C "$HOME/llvm"
rm llvm.tar.xz
- name: Set LLVM prefix (Linux tarball)
shell: bash
run: echo "LLVM_SYS_211_PREFIX=$HOME/llvm" >> "$GITHUB_ENV"
- name: Build meshc and mesh-rt from sibling toolchain repo
working-directory: mesh-lang
run: cargo build -p meshc -p mesh-rt
- name: Install PostgreSQL client
run: sudo apt-get update && sudo apt-get install -y postgresql-client
- name: Verify Mesher maintainer surface
env:
MESHER_MESHC_BIN: ${{ github.workspace }}/mesh-lang/target/debug/meshc
MESHER_MESHC_SOURCE: ci-mesh-lang-checkout
CARGO_TARGET_DIR: ${{ github.workspace }}/mesh-lang/target
run: bash scripts/verify-m051-s01.sh
landing-and-client:
name: Landing and client build
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
cache: npm
cache-dependency-path: |
mesher/landing/package-lock.json
mesher/client/package-lock.json
- name: Verify landing surface contract
run: bash scripts/verify-landing-surface.sh
- name: Install landing dependencies
run: npm --prefix mesher/landing ci
- name: Build landing
env:
NEXT_PUBLIC_SITE_URL: https://hyperpush.dev
run: npm --prefix mesher/landing run build
- name: Check landing types, lint, dependencies, and bundle budgets
run: |
npm --prefix mesher/landing run typecheck
npm --prefix mesher/landing run lint
npm --prefix mesher/landing audit --audit-level=high --omit=dev
node mesher/scripts/check-frontend-budgets.mjs landing
- name: Install landing browser matrix
run: npm --prefix mesher/landing exec playwright install --with-deps chromium firefox webkit
- name: Run landing browser, accessibility, and interaction gates
run: npm --prefix mesher/landing run test:e2e
- name: Install client dependencies
run: npm --prefix mesher/client ci
- name: Verify client route-inventory structural contract
run: node --test mesher/scripts/tests/verify-client-route-inventory.test.mjs
- name: Build client
run: npm --prefix mesher/client run build
- name: Check client types, lint, dependencies, and bundle budgets
run: |
npm --prefix mesher/client run typecheck
npm --prefix mesher/client run lint
npm --prefix mesher/client audit --audit-level=high --omit=dev
node mesher/scripts/check-frontend-budgets.mjs client