Skip to content

Commit 7c93b9e

Browse files
committed
[WIP] matrix build for smoke tests
This lets us smoke test the binaries for every platform instead of just linux x86_64. Signed-off-by: David Thompson <davthomp@redhat.com>
1 parent 9e06486 commit 7c93b9e

File tree

2 files changed

+48
-11
lines changed

2 files changed

+48
-11
lines changed

.github/workflows/ci.yaml

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,23 @@ jobs:
1717
run: npm run eslint
1818

1919
build-test-native-image:
20-
runs-on: ubuntu-latest
20+
strategy:
21+
matrix:
22+
label: [linux-x86_64, linux-aarch64, osx-x86_64, osx-aarch64]
23+
include:
24+
- label: linux-x86_64
25+
os: ubuntu-latest
26+
opt: -Dgraalvm.static=-H:+StaticExecutableWithDynamicLibC
27+
startx: xvfb-run
28+
- label: linux-aarch64
29+
os: ubuntu-24.04-arm
30+
opt: -Dgraalvm.static=-H:+StaticExecutableWithDynamicLibC
31+
startx: xvfb-run
32+
- label: osx-x86_64
33+
os: macos-13
34+
- label: osx-aarch64
35+
os: macos-latest
36+
runs-on: ${{ matrix.os }}
2137
steps:
2238
- uses: actions/checkout@v4
2339
with:
@@ -26,33 +42,47 @@ jobs:
2642
with:
2743
distribution: graalvm-community
2844
java-version: 17
29-
- run: ./mvnw -B package -Dnative -DskipTests -Dgraalvm.static=-H:+StaticExecutableWithDynamicLibC -Dcbi.jarsigner.skip=true
30-
- run: mv org.eclipse.lemminx/target/lemminx-* lemminx-linux
45+
- run: ./mvnw -B package -Dnative -DskipTests ${{ matrix.opt }} -Dcbi.jarsigner.skip=true
46+
- run: mv org.eclipse.lemminx/target/lemminx-* lemminx-${{ matrix.label }}
3147
- uses: actions/upload-artifact@v4
3248
with:
33-
name: lemminx-linux
34-
path: lemminx-linux
49+
name: lemminx-${{ matrix.label }}
50+
path: lemminx-${{ matrix.label }}
3551
if-no-files-found: error
3652

3753
smoke-test:
38-
runs-on: ubuntu-latest
54+
strategy:
55+
matrix:
56+
label: [linux-x86_64, linux-aarch64, osx-x86_64, osx-aarch64]
57+
include:
58+
- label: linux-x86_64
59+
os: ubuntu-latest
60+
opt: -Dgraalvm.static=-H:+StaticExecutableWithDynamicLibC
61+
- label: linux-aarch64
62+
os: ubuntu-24.04-arm
63+
opt: -Dgraalvm.static=-H:+StaticExecutableWithDynamicLibC
64+
- label: osx-x86_64
65+
os: macos-13
66+
- label: osx-aarch64
67+
os: macos-latest
68+
runs-on: ${{ matrix.os }}
3969
needs: build-test-native-image
4070
steps:
4171
- uses: actions/checkout@v4
4272
- uses: actions/download-artifact@v4
4373
with:
44-
name: lemminx-linux
74+
name: lemminx-${{ matrix.label }}
4575
path: server
4676
- name: Make lemminx binary executable
47-
run: chmod u+x ./server/lemminx-linux
77+
run: chmod u+x ./server/lemminx-${{ matrix.label }}
4878
- name: Make lemminx binary trusted
49-
run: sha256sum ./server/lemminx-linux > ./server/lemminx-linux.sha256
79+
run: openssl sha256 ./server/lemminx-${{ matrix.label }} | awk '{print $2}' > ./server/lemminx-${{ matrix.label }}.sha256
5080
- name: Install dependencies
5181
run: npm i --also=dev
5282
- name: Run smoke test suite
53-
run: xvfb-run npm test
83+
run: ${{ matrix.startx }} npm test
5484
- name: Delete lemminx binary
5585
if: always()
5686
uses: geekyeggo/delete-artifact@e46cfb9575865f907c2beb2e4170b5f4c7d77c52
5787
with:
58-
name: lemminx-linux
88+
name: lemminx-${{ matrix.label }}

src/server/binary/binaryServerStarter.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,13 @@ function getServerBinaryNameWithoutExtension(): string {
220220
default:
221221
return 'lemminx-osx-x86_64';
222222
}
223+
case 'linux':
224+
switch (os.arch()) {
225+
case 'arm64':
226+
return 'lemminx-linux-aarch64';
227+
default:
228+
return 'lemminx-linux-x86_64';
229+
}
223230
default:
224231
return `lemminx-${os.platform()}`;
225232
}

0 commit comments

Comments
 (0)