Skip to content

Commit 70b6c85

Browse files
committed
feat: add linux-arm64 prebuild via QEMU, fix publish
1 parent aed5252 commit 70b6c85

File tree

3 files changed

+71
-20
lines changed

3 files changed

+71
-20
lines changed

.github/Dockerfile.arm64

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
FROM node:20-bookworm
2+
3+
# Install build dependencies
4+
RUN apt-get update && apt-get install -y \
5+
liblasso3-dev \
6+
libxml2-dev \
7+
libxmlsec1-dev \
8+
libglib2.0-dev \
9+
python3 \
10+
make \
11+
g++ \
12+
&& rm -rf /var/lib/apt/lists/*
13+
14+
WORKDIR /app
15+
16+
# Copy package files
17+
COPY package*.json ./
18+
19+
# Install dependencies
20+
RUN npm ci
21+
22+
# Copy source
23+
COPY . .
24+
25+
# Build prebuilds
26+
RUN npm run prebuildify
27+
28+
# Output stage - copy prebuilds to /prebuilds
29+
RUN mkdir -p /output/prebuilds && cp -r prebuilds/* /output/prebuilds/

.github/workflows/ci.yml

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ jobs:
6262
include:
6363
- os: ubuntu-latest
6464
target: linux-x64
65-
# Note: linux-arm64 requires self-hosted runners or QEMU cross-compilation
66-
# - os: ubuntu-24.04-arm64
67-
# target: linux-arm64
6865
- os: macos-latest
6966
target: darwin-x64
7067
- os: macos-14
@@ -105,8 +102,40 @@ jobs:
105102
name: prebuilds-${{ matrix.target }}
106103
path: prebuilds/
107104

105+
build-linux-arm64:
106+
needs: test
107+
if: startsWith(github.ref, 'refs/tags/v')
108+
runs-on: ubuntu-latest
109+
steps:
110+
- uses: actions/checkout@v4
111+
112+
- name: Set up QEMU
113+
uses: docker/setup-qemu-action@v3
114+
with:
115+
platforms: arm64
116+
117+
- name: Build in arm64 container
118+
uses: docker/build-push-action@v5
119+
with:
120+
context: .
121+
file: .github/Dockerfile.arm64
122+
platforms: linux/arm64
123+
push: false
124+
outputs: type=local,dest=./output
125+
126+
- name: Extract prebuilds
127+
run: |
128+
mkdir -p prebuilds
129+
cp -r output/prebuilds/* prebuilds/
130+
131+
- name: Upload prebuilds
132+
uses: actions/upload-artifact@v4
133+
with:
134+
name: prebuilds-linux-arm64
135+
path: prebuilds/
136+
108137
publish:
109-
needs: build
138+
needs: [build, build-linux-arm64]
110139
runs-on: ubuntu-latest
111140
steps:
112141
- uses: actions/checkout@v4
@@ -135,6 +164,6 @@ jobs:
135164
run: npm run build:ts
136165

137166
- name: Publish to npm
138-
run: npm publish
167+
run: npm publish --ignore-scripts
139168
env:
140169
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

package.json

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "lasso.js",
33
"version": "0.1.1",
4-
"description": "Node.js N-API binding for Lasso SAML library",
4+
"description": "SAML 2.0 Identity Provider (IdP) and Service Provider (SP) for Node.js - Native binding to Lasso library",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",
77
"scripts": {
@@ -45,30 +45,23 @@
4545
"saml",
4646
"saml2",
4747
"saml-2.0",
48-
"saml2.0",
49-
"lasso",
50-
"sso",
51-
"single-sign-on",
52-
"idp",
5348
"identity-provider",
54-
"sp",
5549
"service-provider",
56-
"identity",
57-
"federation",
50+
"idp",
51+
"sp",
52+
"sso",
53+
"single-sign-on",
5854
"authentication",
59-
"auth",
6055
"slo",
6156
"single-logout",
57+
"federation",
6258
"xml-signature",
6359
"xmlsec",
6460
"express",
6561
"middleware",
66-
"passport",
67-
"oauth",
68-
"security",
69-
"n-api",
62+
"lasso",
7063
"native",
71-
"binding"
64+
"n-api"
7265
],
7366
"author": "LINAGORA <https://linagora.com>",
7467
"license": "GPL-2.0-or-later",

0 commit comments

Comments
 (0)