Repository navigation
95 lines (94 loc) · 3.39 KB
/
Copy pathinterop.yml
File metadata and controls
95 lines (94 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
name: Language interoperability
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
workflow_call:
permissions:
contents: read
jobs:
interop:
name: Six languages on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-python@v7
with:
python-version: '3.14'
- uses: actions/setup-node@v7
with:
node-version: '24'
- uses: actions/setup-go@v7
with:
go-version: '1.27.x'
cache: false
- uses: actions/setup-dotnet@v6
with:
dotnet-version: '10.0.x'
- if: runner.os == 'Windows'
id: msys
uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
install: mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-pkgconf
- if: runner.os == 'Windows'
shell: pwsh
run: '"${{ steps.msys.outputs.msys2-location }}\ucrt64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append'
- if: runner.os == 'macOS'
run: brew install pkgconf
- name: Build packages and test every language pair
run: python tests/interop/build.py
- uses: actions/upload-artifact@v7
with:
name: packages-${{ runner.os }}-${{ runner.arch }}
path: |
target/wheels/*.whl
target/sdk/
src/node/*.node
runtimes:
name: Python ${{ matrix.python }} / Node ${{ matrix.node }}
needs: interop
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- {python: '3.9', node: '18'}
- {python: '3.12', node: '20'}
- {python: '3.14', node: '24'}
- {python: '3.14', node: '26'}
steps:
- uses: actions/checkout@v7
- uses: actions/download-artifact@v8
with:
name: packages-Linux-X64
path: .
- uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
- uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node }}
- run: pip install target/wheels/*.whl
- run: python src/python/test_api.py
- run: node --test src/node/test.js
- name: Check the minimum TypeScript version
if: matrix.node == '20'
run: |
npm install --prefix "$RUNNER_TEMP/interprocess-types" --ignore-scripts --no-audit --no-fund typescript@5.2.2 @types/node@18.16.19
node "$RUNNER_TEMP/interprocess-types/node_modules/typescript/bin/tsc" --strict --noEmit --target es2022 --module node16 --typeRoots "$RUNNER_TEMP/interprocess-types/node_modules/@types" tests/interop/typescript.ts
- name: Check the current TypeScript and Node types
if: matrix.node == '26'
run: |
npm install --prefix "$RUNNER_TEMP/interprocess-current-types" --ignore-scripts --no-audit --no-fund typescript@7.0.2 @types/node@26.5.1
node "$RUNNER_TEMP/interprocess-current-types/node_modules/typescript/bin/tsc" --strict --noEmit --target es2022 --module node16 --types node --typeRoots "$RUNNER_TEMP/interprocess-current-types/node_modules/@types" tests/interop/typescript.ts