@@ -142,6 +142,171 @@ jobs:
142142 shell : bash
143143 run : python ./ci/run_ci.py java --version windows_java21
144144
145+ csharp :
146+ name : C# CI
147+ runs-on : ubuntu-latest
148+ steps :
149+ - uses : actions/checkout@v5
150+ - name : Set up .NET 8
151+ uses : actions/setup-dotnet@v4
152+ with :
153+ dotnet-version : " 8.0.x"
154+ cache : true
155+ cache-dependency-path : |
156+ csharp/**/*.csproj
157+ csharp/Fory.sln
158+ - name : Restore C# dependencies
159+ run : |
160+ cd csharp
161+ dotnet restore Fory.sln
162+ - name : Build C# solution
163+ run : |
164+ cd csharp
165+ dotnet build Fory.sln -c Release --no-restore
166+ - name : Run C# tests
167+ run : |
168+ cd csharp
169+ dotnet test tests/Fory.Tests/Fory.Tests.csproj -c Release --no-build
170+ - name : Verify C# format
171+ run : |
172+ cd csharp
173+ dotnet format Fory.sln --verify-no-changes \
174+ --exclude src/Fory.Generator/AnalyzerReleases.Shipped.md \
175+ --exclude src/Fory.Generator/AnalyzerReleases.Unshipped.md
176+
177+ csharp_xlang :
178+ name : C# Xlang Test
179+ runs-on : ubuntu-latest
180+ steps :
181+ - uses : actions/checkout@v5
182+ - name : Set up Python 3.11
183+ uses : actions/setup-python@v5
184+ with :
185+ python-version : 3.11
186+ - name : Set up .NET 8
187+ uses : actions/setup-dotnet@v4
188+ with :
189+ dotnet-version : " 8.0.x"
190+ cache : true
191+ cache-dependency-path : |
192+ csharp/**/*.csproj
193+ csharp/Fory.sln
194+ - name : Set up JDK 21
195+ uses : actions/setup-java@v4
196+ with :
197+ java-version : 21
198+ distribution : " temurin"
199+ - name : Cache Maven local repository
200+ uses : actions/cache@v4
201+ with :
202+ path : ~/.m2/repository
203+ key : ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
204+ restore-keys : |
205+ ${{ runner.os }}-maven-
206+ - name : Restore and build C# xlang peer
207+ run : |
208+ cd csharp
209+ dotnet restore tests/Fory.XlangPeer/Fory.XlangPeer.csproj
210+ dotnet build tests/Fory.XlangPeer/Fory.XlangPeer.csproj -c Debug --no-restore
211+ - name : Run C# Xlang Test
212+ env :
213+ FORY_CSHARP_JAVA_CI : " 1"
214+ ENABLE_FORY_DEBUG_OUTPUT : " 1"
215+ run : |
216+ cd java
217+ mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
218+ cd fory-core
219+ mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.CSharpXlangTest
220+ - name : Run C# IDL Tests
221+ run : ./integration_tests/idl_tests/run_csharp_tests.sh
222+
223+ swift :
224+ name : Swift CI
225+ runs-on : macos-latest
226+ steps :
227+ - uses : actions/checkout@v5
228+ - name : Run Swift unit tests
229+ run : |
230+ cd swift
231+ swift test
232+ - name : Run SwiftLint check
233+ run : |
234+ if ! command -v swiftlint >/dev/null; then
235+ brew install swiftlint
236+ fi
237+ cd swift
238+ swiftlint lint --config .swiftlint.yml
239+
240+ swift_xlang :
241+ name : Swift Xlang Test
242+ runs-on : macos-latest
243+ steps :
244+ - uses : actions/checkout@v5
245+ - name : Set up Python 3.11
246+ uses : actions/setup-python@v5
247+ with :
248+ python-version : 3.11
249+ - name : Set up JDK 21
250+ uses : actions/setup-java@v4
251+ with :
252+ java-version : 21
253+ distribution : " temurin"
254+ - name : Cache Maven local repository
255+ uses : actions/cache@v4
256+ with :
257+ path : ~/.m2/repository
258+ key : ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
259+ restore-keys : |
260+ ${{ runner.os }}-maven-
261+ - name : Cache Swift package dependencies and build artifacts
262+ uses : actions/cache@v4
263+ with :
264+ path : |
265+ ~/.swiftpm
266+ ~/Library/Caches/org.swift.swiftpm
267+ swift/.build
268+ key : ${{ runner.os }}-${{ runner.arch }}-swiftpm-${{ hashFiles('swift/Package.resolved', 'swift/Package.swift', 'swift/Sources/**') }}
269+ restore-keys : |
270+ ${{ runner.os }}-${{ runner.arch }}-swiftpm-
271+ - name : Prebuild Swift xlang peer for cache reuse
272+ run : |
273+ cd swift
274+ swift build -c release --disable-automatic-resolution --product ForyXlangTests
275+ - name : Run Swift Xlang Test
276+ env :
277+ ENABLE_FORY_DEBUG_OUTPUT : " 1"
278+ FORY_SWIFT_JAVA_CI : " 1"
279+ run : |
280+ cd java
281+ mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
282+ cd fory-core
283+ mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.SwiftXlangTest
284+ - name : Generate Swift IDL test code
285+ run : python ./integration_tests/idl_tests/generate_idl.py --lang swift
286+ - name : Cache Swift IDL package build artifacts
287+ uses : actions/cache@v4
288+ with :
289+ path : |
290+ integration_tests/idl_tests/swift/idl_package/.build
291+ integration_tests/idl_tests/swift/idl_package/.swiftpm
292+ key : ${{ runner.os }}-${{ runner.arch }}-swift-idl-package-${{ hashFiles('integration_tests/idl_tests/swift/idl_package/Package.swift', 'integration_tests/idl_tests/swift/idl_package/Package.resolved', 'swift/Package.swift', 'swift/Package.resolved', 'swift/Sources/ForyMacro/**') }}
293+ restore-keys : |
294+ ${{ runner.os }}-${{ runner.arch }}-swift-idl-package-
295+ - name : Prebuild Swift IDL package
296+ run : |
297+ cd integration_tests/idl_tests/swift/idl_package
298+ swift build --disable-automatic-resolution --build-tests
299+ - name : Run Swift IDL package tests
300+ env :
301+ ENABLE_FORY_DEBUG_OUTPUT : " 1"
302+ run : |
303+ cd integration_tests/idl_tests/swift/idl_package
304+ swift test --disable-automatic-resolution --skip-build
305+ - name : Run Java IDL tests against Swift peer
306+ env :
307+ IDL_PEER_LANG : " swift"
308+ run : ./integration_tests/idl_tests/run_java_tests.sh
309+
145310 graalvm :
146311 name : GraalVM CI
147312 runs-on : ubuntu-latest
@@ -220,9 +385,9 @@ jobs:
220385 key : ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
221386 restore-keys : |
222387 ${{ runner.os }}-maven-
223- - uses : sbt/setup-sbt@v1
388+ - uses : sbt/setup-sbt@1cad58d595b729a71ca2254cdf5b43dd6f42d4bb # v1.1.18
224389 - name : Install fory java
225- run : cd java && mvn -T10 --no-transfer-progress clean install -DskipTests && cd -
390+ run : cd java && mvn -T10 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true && cd -
226391 - name : Test
227392 run : |
228393 cd scala && sbt +test && cd -
@@ -255,7 +420,7 @@ jobs:
255420 name : JavaScript CI
256421 strategy :
257422 matrix :
258- node-version : [18, 20, 24]
423+ node-version : [18, 24]
259424 os : [ubuntu-latest, macos-latest, windows-latest]
260425 runs-on : ${{ matrix.os }}
261426 steps :
@@ -281,6 +446,47 @@ jobs:
281446 - name : Run CI with NodeJS
282447 run : python ./ci/run_ci.py javascript
283448
449+ javascript_xlang :
450+ name : JavaScript Xlang Test
451+ runs-on : ubuntu-latest
452+ steps :
453+ - uses : actions/checkout@v5
454+ - name : Use Node.js 20.x
455+ uses : actions/setup-node@v4
456+ with :
457+ node-version : 20.x
458+ - name : Set up JDK 21
459+ uses : actions/setup-java@v4
460+ with :
461+ java-version : 21
462+ distribution : " temurin"
463+ - name : Cache Maven local repository
464+ uses : actions/cache@v4
465+ with :
466+ path : ~/.m2/repository
467+ key : ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
468+ restore-keys : |
469+ ${{ runner.os }}-maven-
470+ - name : Cache npm local repository
471+ uses : actions/cache@v4
472+ with :
473+ path : ~/.npm
474+ key : ${{ runner.os }}-npm-${{ hashFiles('javascript/package-lock.json') }}
475+ restore-keys : |
476+ ${{ runner.os }}-npm-
477+ - name : Install JavaScript dependencies
478+ run : |
479+ cd javascript
480+ npm install
481+ - name : Run JavaScript Xlang Test
482+ env :
483+ FORY_JAVASCRIPT_JAVA_CI : " 1"
484+ run : |
485+ cd java
486+ mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
487+ cd fory-core
488+ mvn --no-transfer-progress test -Dtest=org.apache.fory.xlang.JavaScriptXlangTest -DforkCount=0
489+
284490 rust :
285491 name : Rust CI
286492 strategy :
@@ -336,7 +542,7 @@ jobs:
336542 ENABLE_FORY_DEBUG_OUTPUT : " 1"
337543 run : |
338544 cd java
339- mvn -T16 --no-transfer-progress clean install -DskipTests
545+ mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
340546 cd fory-core
341547 mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.RustXlangTest
342548 - name : Run Rust IDL Tests
@@ -434,44 +640,12 @@ jobs:
434640 ENABLE_FORY_DEBUG_OUTPUT : " 1"
435641 run : |
436642 cd java
437- mvn -T16 --no-transfer-progress clean install -DskipTests
643+ mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
438644 cd fory-core
439645 mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.CPPXlangTest
440646 - name : Run C++ IDL Tests
441647 run : ./integration_tests/idl_tests/run_cpp_tests.sh
442648
443- javascript_xlang :
444- name : JavaScript Xlang Test
445- runs-on : ubuntu-latest
446- steps :
447- - uses : actions/checkout@v5
448- - name : Use Node.js 20.x
449- uses : actions/setup-node@v4
450- with :
451- node-version : 20.x
452- - name : Set up JDK 21
453- uses : actions/setup-java@v4
454- with :
455- java-version : 21
456- distribution : " temurin"
457- - name : Cache Maven local repository
458- uses : actions/cache@v4
459- with :
460- path : ~/.m2/repository
461- key : ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
462- restore-keys : |
463- ${{ runner.os }}-maven-
464- - name : Run JavaScript Xlang Test
465- env :
466- FORY_JAVASCRIPT_JAVA_CI : " 0"
467- run : |
468- cd javascript
469- npm install
470- cd ../java
471- mvn -T16 --no-transfer-progress clean install -DskipTests
472- cd fory-core
473- mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.JavaScriptXlangTest
474-
475649 cpp_examples :
476650 name : C++ Examples
477651 runs-on : ubuntu-latest
@@ -598,7 +772,7 @@ jobs:
598772 ENABLE_FORY_DEBUG_OUTPUT : " 1"
599773 run : |
600774 cd java
601- mvn -T16 --no-transfer-progress clean install -DskipTests
775+ mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
602776 cd fory-core
603777 mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.PythonXlangTest
604778 mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.PyCrossLanguageTest
@@ -673,7 +847,7 @@ jobs:
673847 ENABLE_FORY_DEBUG_OUTPUT : " 1"
674848 run : |
675849 cd java
676- mvn -T16 --no-transfer-progress clean install -DskipTests
850+ mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
677851 cd fory-core
678852 mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.GoXlangTest
679853 - name : Run Go IDL Tests
@@ -708,13 +882,17 @@ jobs:
708882 run : |
709883 cd dart
710884 dart pub get
885+ - name : Generate Dart code
886+ run : |
887+ cd dart/packages/fory-test
888+ dart run build_runner build --delete-conflicting-outputs
711889 - name : Run Dart Xlang Test
712890 env :
713891 FORY_DART_JAVA_CI : " 1"
714892 ENABLE_FORY_DEBUG_OUTPUT : " 1"
715893 run : |
716894 cd java
717- mvn -T16 --no-transfer-progress clean install -DskipTests
895+ mvn -T16 --no-transfer-progress clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true
718896 cd fory-core
719897 mvn -T16 --no-transfer-progress test -Dtest=org.apache.fory.xlang.DartXlangTest
720898
@@ -770,6 +948,10 @@ jobs:
770948 uses : actions/setup-python@v5
771949 with :
772950 python-version : 3.8
951+ - name : Set up .NET 8
952+ uses : actions/setup-dotnet@v4
953+ with :
954+ dotnet-version : " 8.0.x"
773955 - name : Use Node.js 20.x
774956 uses : actions/setup-node@v4
775957 with :
0 commit comments