@@ -27,14 +27,19 @@ jobs:
27
27
include :
28
28
- os : macos-13 # x64
29
29
rust-target : x86_64-apple-darwin
30
+ node-target : darwin-x64
30
31
- os : macos-14 # ARM
31
32
rust-target : aarch64-apple-darwin
33
+ node-target : darwin-arm64
32
34
- os : ubuntu-24.04 # x64
33
35
rust-target : x86_64-unknown-linux-musl
36
+ node-target : linux-x64
34
37
- os : ubuntu-24.04-arm # ARM
35
38
rust-target : aarch64-unknown-linux-musl
39
+ node-target : linux-arm64
36
40
- os : windows-latest
37
41
rust-target : x86_64-pc-windows-gnu
42
+ node-target : win32-x64
38
43
39
44
runs-on : ${{matrix.os}}
40
45
@@ -66,25 +71,24 @@ jobs:
66
71
uses : dtolnay/rust-toolchain@master
67
72
with :
68
73
toolchain : stable
69
- targets : ${{matrix.rust-target}}
74
+ targets : ${{ matrix.rust-target }}
70
75
71
76
- name : Build rewatch
72
77
if : steps.build-cache.outputs.cache-hit != 'true'
73
- run : cargo build --manifest-path rewatch/Cargo.toml --target ${{matrix.rust-target}} --release
74
-
75
- - name : Copy rewatch exe to platform bin dir
76
78
run : |
77
- cp rewatch/target/${{matrix.rust-target}}/release/rewatch${{ runner.os == 'Windows' && '.exe' || '' }} rewatch
78
- node ./scripts/copyExes.js -rewatch
79
+ cargo build --manifest-path rewatch/Cargo.toml --target ${{ matrix.rust-target }} --release
79
80
80
- - name : Get artifact dir name
81
- run : node .github/workflows/get_artifact_dir_name.js
81
+ - name : Copy rewatch binary
82
+ run : |
83
+ cp rewatch/target/${{ matrix.rust-target }}/release/rewatch${{ runner.os == 'Windows' && '.exe' || '' }} rewatch.exe
84
+ shell : bash
82
85
83
86
- name : " Upload artifact: rewatch binary"
84
87
uses : actions/upload-artifact@v4
85
88
with :
86
- name : rewatch-${{env.artifact_dir_name}}
87
- path : ${{ env.artifact_dir_name }}
89
+ name : rewatch-${{ matrix.node-target }}
90
+ path : rewatch.exe
91
+ if-no-files-found : error
88
92
89
93
build-compiler :
90
94
strategy :
@@ -95,21 +99,26 @@ jobs:
95
99
ocaml_compiler : ocaml-variants.5.3.0+options,ocaml-option-static
96
100
upload_binaries : true
97
101
upload_libs : true
102
+ node-target : linux-x64
98
103
- os : ubuntu-24.04-arm # ARM
99
104
ocaml_compiler : ocaml-variants.5.3.0+options,ocaml-option-static
100
105
upload_binaries : true
101
106
# Build the playground compiler and run the benchmarks on the fastest runner
102
107
build_playground : true
103
108
benchmarks : true
109
+ node-target : linux-arm64
104
110
- os : macos-13 # x64
105
111
ocaml_compiler : 5.3.0
106
112
upload_binaries : true
113
+ node-target : darwin-x64
107
114
- os : macos-14 # ARM
108
115
ocaml_compiler : 5.3.0
109
116
upload_binaries : true
117
+ node-target : darwin-arm64
110
118
- os : windows-latest
111
119
ocaml_compiler : 5.3.0
112
120
upload_binaries : true
121
+ node-target : win32-x64
113
122
114
123
# Verify that the compiler still builds with older OCaml versions
115
124
- os : ubuntu-24.04
@@ -144,9 +153,6 @@ jobs:
144
153
cache : yarn
145
154
node-version-file : .nvmrc
146
155
147
- - name : Get artifact dir name
148
- run : node .github/workflows/get_artifact_dir_name.js
149
-
150
156
- name : Install dependencies (Linux)
151
157
if : runner.os == 'Linux'
152
158
@@ -303,13 +309,13 @@ jobs:
303
309
run : yarn install
304
310
305
311
- name : Copy compiler exes to platform bin dir
306
- run : node ./ scripts/copyExes.js -compiler
312
+ run : node scripts/copyExes.js - -compiler
307
313
308
314
- name : Restore ninja build cache
309
315
id : ninja-build-cache
310
316
uses : actions/cache@v4
311
317
with :
312
- path : ${{ env.artifact_dir_name }}/ninja.exe
318
+ path : packages/@rescript/ ${{ matrix.node-target }}/bin /ninja.exe
313
319
key : ninja-build-v1-${{ matrix.os }}-${{ hashFiles('ninja/src/**') }}
314
320
315
321
- name : Setup Python for ninja build
@@ -336,7 +342,7 @@ jobs:
336
342
337
343
- name : Copy ninja exe to platform bin dir
338
344
if : steps.ninja-build-cache.outputs.cache-hit != 'true'
339
- run : node ./ scripts/copyExes.js -ninja
345
+ run : node scripts/copyExes.js - -ninja
340
346
341
347
- name : " Syntax: Run roundtrip tests"
342
348
if : ${{ runner.os != 'Windows' }}
@@ -423,8 +429,8 @@ jobs:
423
429
if : matrix.upload_binaries
424
430
uses : actions/upload-artifact@v4
425
431
with :
426
- name : binaries-${{ env.artifact_dir_name }}
427
- path : ${{ env.artifact_dir_name }}
432
+ name : binaries-${{ matrix.node-target }}
433
+ path : packages/@rescript/ ${{ matrix.node-target }}/bin
428
434
429
435
- name : " Upload artifacts: lib/ocaml"
430
436
if : matrix.upload_libs
@@ -438,7 +444,7 @@ jobs:
438
444
- build-compiler
439
445
- build-rewatch
440
446
441
- runs-on : ubuntu-24.04
447
+ runs-on : ubuntu-24.04-arm
442
448
443
449
steps :
444
450
- name : Checkout
@@ -447,29 +453,22 @@ jobs:
447
453
- name : Use Node.js
448
454
uses : actions/setup-node@v4
449
455
with :
450
- cache : yarn
451
456
node-version-file : .nvmrc
452
457
453
- - name : NPM install
454
- run : yarn install
455
-
456
458
- name : Download artifacts
457
459
uses : actions/download-artifact@v4
458
460
with :
459
461
pattern : " @(binaries-*|rewatch-*|lib-ocaml)"
460
462
461
- - name : Move artifacts
462
- run : ./scripts/moveArtifacts.sh
463
+ - name : Move artifacts into packages
464
+ run : .github/workflows/moveArtifacts.sh
465
+ shell : bash
463
466
464
- - name : npm pack (rescript) + check artifact list
467
+ - name : Check artifact list
465
468
run : node ./scripts/npmPack.js
466
469
467
- - name : Copy JS files to stdlib package
468
- run : mkdir -p packages/std/lib && cp -R lib/es6 lib/js packages/std/lib
469
-
470
- - name : npm pack (@rescript/std)
471
- run : npm pack
472
- working-directory : packages/std
470
+ - name : yarn pack @rescript/* subpackages
471
+ run : yarn workspaces foreach -W --no-private --exclude rescript pack
473
472
474
473
- name : Prepare package upload
475
474
# For pull requests, pass the correct commit SHA explicitly as GITHUB_SHA points to the wrong commit.
@@ -482,6 +481,11 @@ jobs:
482
481
path : |
483
482
rescript-${{ env.rescript_version }}.tgz
484
483
rescript-std-${{ env.rescript_version }}.tgz
484
+ rescript-linux-x64-${{ env.rescript_version }}.tgz
485
+ rescript-linux-arm64-${{ env.rescript_version }}.tgz
486
+ rescript-darwin-x64-${{ env.rescript_version }}.tgz
487
+ rescript-darwin-arm64-${{ env.rescript_version }}.tgz
488
+ rescript-win32-x64-${{ env.rescript_version }}.tgz
485
489
486
490
outputs :
487
491
rescript_version : ${{ env.rescript_version }}
@@ -491,15 +495,19 @@ jobs:
491
495
strategy :
492
496
fail-fast : false
493
497
matrix :
494
- os : [
495
- macos-13, # x64
496
- macos-14, # ARM
497
- ubuntu-24.04,
498
- ubuntu-24.04-arm,
499
- windows-latest,
500
- ]
498
+ include :
499
+ - os : macos-13
500
+ node-target : darwin-x64
501
+ - os : macos-14
502
+ node-target : darwin-arm64
503
+ - os : ubuntu-24.04
504
+ node-target : linux-x64
505
+ - os : ubuntu-24.04-arm
506
+ node-target : linux-arm64
507
+ - os : windows-latest
508
+ node-target : win32-x64
501
509
502
- runs-on : ${{matrix.os}}
510
+ runs-on : ${{ matrix.os }}
503
511
504
512
steps :
505
513
- name : Checkout
@@ -532,7 +540,8 @@ jobs:
532
540
- name : Install ReScript package
533
541
run : |
534
542
npm i --ignore-scripts --no-audit \
535
- rescript-${{ needs.package.outputs.rescript_version }}.tgz
543
+ rescript-${{ needs.package.outputs.rescript_version }}.tgz \
544
+ rescript-${{ matrix.node-target }}-${{ needs.package.outputs.rescript_version }}.tgz
536
545
shell : bash
537
546
working-directory : ${{ steps.tmp-dir.outputs.path }}
538
547
@@ -546,7 +555,7 @@ jobs:
546
555
547
556
if : startsWith(github.ref, 'refs/tags/v')
548
557
549
- runs-on : ubuntu-24.04
558
+ runs-on : ubuntu-24.04-arm
550
559
551
560
steps :
552
561
- name : Checkout
@@ -568,8 +577,13 @@ jobs:
568
577
env :
569
578
NODE_AUTH_TOKEN : ${{ secrets.NPM_ACCESS_TOKEN }}
570
579
run : |
571
- npm publish rescript-${{ needs.package.outputs.rescript_version }}.tgz --tag ci
572
- npm publish rescript-std-${{ needs.package.outputs.rescript_version }}.tgz --tag ci
580
+ npm publish --tag ci rescript-${{ needs.package.outputs.rescript_version }}.tgz
581
+ npm publish --tag ci rescript-std-${{ needs.package.outputs.rescript_version }}.tgz
582
+ npm publish --tag ci rescript-linux-x64-${{ needs.package.outputs.rescript_version }}.tgz
583
+ npm publish --tag ci rescript-linux-arm64-${{ needs.package.outputs.rescript_version }}.tgz
584
+ npm publish --tag ci rescript-darwin-x64-${{ needs.package.outputs.rescript_version }}.tgz
585
+ npm publish --tag ci rescript-darwin-arm64-{{ needs.package.outputs.rescript_version }}.tgz
586
+ npm publish --tag ci rescript-win32-x64-${{ needs.package.outputs.rescript_version }}.tgz
573
587
574
588
- name : Update Website Playground
575
589
env :
0 commit comments