-
Notifications
You must be signed in to change notification settings - Fork 0
99 lines (80 loc) · 3.8 KB
/
Copy pathci.yml
File metadata and controls
99 lines (80 loc) · 3.8 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
name: Zag CI
on:
push:
branches: [ main, native-self-hosting-no-zig ]
pull_request:
branches: [ main ]
permissions:
contents: write
jobs:
test:
name: v1 native backend
runs-on: ubuntu-24.04 # pinned for reproducibility — not ubuntu-latest
defaults:
run:
working-directory: zag-poc
steps:
- name: Checkout (full history for tags)
uses: actions/checkout@v4
with:
fetch-depth: 0
# Cache the native seed keyed on its SHA256. Bootstrap is always executed;
# the cache only avoids artifact transfer work.
- name: Compute seed SHA256
id: seed-sha
run: |
sha256sum znc | cut -d' ' -f1 > /tmp/seed_hash
echo "hash=$(cat /tmp/seed_hash)" >> "$GITHUB_OUTPUT"
- name: Cache seed binaries
uses: actions/cache@v4
id: seed-cache
with:
path: |
zag-poc/znc
key: seed-${{ runner.os }}-${{ steps.seed-sha.outputs.hash }}
- name: Make scripts executable
run: |
chmod +x znc bootstrap.sh run_tests.sh \
tests/run_native.sh tests/run_selfhost.sh tests/run_native_authority.sh \
tests/run_optimize.sh tests/run_stdlib.sh tests/run_selfhost_features.sh \
tests/check_native_bootstrap_repro.sh tests/run_semantics.sh tests/run_diag.sh \
tests/run_tooling.sh tests/run_programs.sh tests/test_lsp.sh \
release.sh 2>/dev/null || true
# ── Bootstrap ─────────────────────────────────────────────────────────
- name: Bootstrap (rebuild znc from seed)
run: ./bootstrap.sh
# ── Fixpoint check ────────────────────────────────────────────────────
- name: Fixpoint check (three native generations, byte-identical)
run: bash tests/check_native_bootstrap_repro.sh
# ── Authoritative v1 release gate ────────────────────────────────────
# Poisons cc/gcc/clang/as/ld in PATH, then rebuilds znc + smoke-tests.
# This is the only gate that must be green for a release.
- name: Native authority gate (v1 release gate)
run: bash tests/run_native_authority.sh
# ── Native backend test suite ─────────────────────────────────────────
- name: Native semantic conformance
run: bash tests/run_semantics.sh
- name: Structured diagnostic regressions
run: bash tests/run_diag.sh
- name: Formatter, package, DWARF, and LSP tooling
run: bash tests/run_tooling.sh
- name: Real-program acceptance suite
run: bash tests/run_programs.sh
- name: Native backend suite
run: bash tests/run_native.sh
# ── Additional suites (informational) ────────────────────────────────
- name: Selfhost pipeline tests (informational)
run: bash tests/run_selfhost.sh
continue-on-error: true
- name: Differential suite via zagc (informational, not a release gate)
run: bash run_tests.sh
continue-on-error: true
# ── Preserve the verified native compiler ─────────────────────────────
- name: Upload verified native compiler
if: success()
uses: actions/upload-artifact@v4
with:
name: zag-znc-${{ github.sha }}
path: zag-poc/znc
if-no-files-found: ignore
retention-days: 7