Skip to content

Commit 83f475e

Browse files
authored
Add GitHub Actions workflow for build and release
1 parent a039155 commit 83f475e

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

.github/workflows/release.yml

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: Build and Release ZScript
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
build:
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
include:
17+
# ---------- LINUX X64 ----------
18+
- os: ubuntu-latest
19+
name: linux-x64-avx2
20+
target: bun-linux-x64
21+
- os: ubuntu-latest
22+
name: linux-x64-baseline
23+
target: bun-linux-x64-baseline
24+
# ---------- LINUX MUSL (Alpine) ----------
25+
- os: ubuntu-latest
26+
name: linux-x64-musl-avx2
27+
target: bun-linux-x64-musl
28+
- os: ubuntu-latest
29+
name: linux-x64-musl-baseline
30+
target: bun-linux-x64-musl-baseline
31+
# ---------- LINUX ARM64 ----------
32+
- os: ubuntu-latest
33+
name: linux-arm64
34+
target: bun-linux-arm64
35+
# ---------- WINDOWS X64 ----------
36+
- os: ubuntu-latest
37+
name: windows-x64-avx2
38+
target: bun-windows-x64
39+
- os: ubuntu-latest
40+
name: windows-x64-baseline
41+
target: bun-windows-x64-baseline
42+
# ---------- MACOS ----------
43+
- os: macos-latest
44+
name: macos-x64-avx2
45+
target: bun-darwin-x64
46+
- os: macos-latest
47+
name: macos-x64-baseline
48+
target: bun-darwin-x64-baseline
49+
- os: macos-latest
50+
name: macos-arm64
51+
target: bun-darwin-arm64
52+
53+
runs-on: ${{ matrix.os }}
54+
55+
steps:
56+
- uses: actions/checkout@v4
57+
58+
- uses: oven-sh/setup-bun@v1
59+
with:
60+
bun-version: 1.3.6
61+
62+
- name: Install dependencies
63+
# Updated path to new src/compiler directory
64+
working-directory: src/compiler
65+
shell: bash
66+
run: bun install
67+
68+
- name: Build binary
69+
working-directory: src/compiler
70+
shell: bash
71+
run: |
72+
mkdir -p dist
73+
# We compile to 'zsc' or 'zsc.exe' exactly as requested
74+
if [[ "${{ matrix.target }}" == *"windows"* ]]; then
75+
OUTFILE="dist/zsc.exe"
76+
else
77+
OUTFILE="dist/zsc"
78+
fi
79+
80+
bun build zsc.js \
81+
--bundle \
82+
--compile \
83+
--target=${{ matrix.target }} \
84+
--outfile "$OUTFILE"
85+
86+
# -------- Packaging Logic --------
87+
- name: Package Assets
88+
working-directory: src/compiler/dist
89+
shell: bash
90+
run: |
91+
if [[ "${{ matrix.target }}" == *"windows"* ]]; then
92+
# Archive contains 'zsc.exe' but zip is named by platform
93+
zip zsc-${{ matrix.name }}.zip zsc.exe
94+
else
95+
chmod +x zsc
96+
tar -czf zsc-${{ matrix.name }}.tar.gz zsc
97+
fi
98+
99+
- name: Upload Release Assets
100+
uses: softprops/action-gh-release@v1
101+
with:
102+
files: |
103+
src/compiler/dist/*.zip
104+
src/compiler/dist/*.tar.gz

0 commit comments

Comments
 (0)