Skip to content

Commit ada2adc

Browse files
authored
ci(native): support Linux x64 glibc (#260)
1 parent 2892a71 commit ada2adc

2 files changed

Lines changed: 93 additions & 1 deletion

File tree

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
name: Reusable Native Build
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
target:
7+
description: Rust target triple to build
8+
required: true
9+
type: string
10+
runner:
11+
description: GitHub-hosted runner label
12+
required: true
13+
type: string
14+
filename:
15+
description: Expected NAPI-RS binary filename
16+
required: true
17+
type: string
18+
use_napi_cross:
19+
description: Build with the NAPI-RS cross toolchain
20+
default: false
21+
required: false
22+
type: boolean
23+
24+
permissions:
25+
contents: read
26+
27+
env:
28+
CARGO_INCREMENTAL: 0
29+
30+
jobs:
31+
build:
32+
name: Build ${{ inputs.target }}
33+
runs-on: ${{ inputs.runner }}
34+
env:
35+
RUST_TARGET: ${{ inputs.target }}
36+
steps:
37+
- name: Checkout
38+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
39+
40+
- name: Setup Node.js
41+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
42+
with:
43+
node-version: 24.18.0
44+
package-manager-cache: false
45+
46+
- name: Install Pnpm
47+
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
48+
with:
49+
run_install: true
50+
51+
- name: Install Rust target
52+
shell: bash
53+
run: rustup target add "$RUST_TARGET"
54+
55+
- name: Build native binding with NAPI-RS cross toolchain
56+
if: inputs.use_napi_cross
57+
shell: bash
58+
working-directory: packages/rstack
59+
run: >-
60+
pnpm exec napi build --platform --release
61+
--target "$RUST_TARGET"
62+
--manifest-path ../../Cargo.toml
63+
--package rstack-binding
64+
--package-json-path package.json
65+
--output-dir .
66+
--js binding.cjs
67+
--dts binding.d.cts
68+
--use-napi-cross
69+
70+
- name: Build native binding
71+
if: ${{ !inputs.use_napi_cross }}
72+
shell: bash
73+
working-directory: packages/rstack
74+
run: >-
75+
pnpm exec napi build --platform --release
76+
--target "$RUST_TARGET"
77+
--manifest-path ../../Cargo.toml
78+
--package rstack-binding
79+
--package-json-path package.json
80+
--output-dir .
81+
--js binding.cjs
82+
--dts binding.d.cts
83+
84+
- name: Upload native binding
85+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
86+
with:
87+
name: native-${{ inputs.target }}
88+
path: packages/rstack/${{ inputs.filename }}
89+
if-no-files-found: error
90+
retention-days: 1

packages/rstack/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@
116116
"napi": {
117117
"binaryName": "rstack",
118118
"packageName": "@rstackjs/binding",
119-
"targets": []
119+
"targets": [
120+
"x86_64-unknown-linux-gnu"
121+
]
120122
}
121123
}

0 commit comments

Comments
 (0)