1111 SBT_OPTS : -Xmx4G -XX:+UseG1GC
1212
1313jobs :
14- build-and-test :
15- name : Build and test
14+ build :
15+ strategy :
16+ matrix :
17+ include :
18+ - module : core
19+ commands : >
20+ scalafmtCheckAll scalafixAll core/test compile-fail-tests/test
21+ paths : |
22+ target
23+ modules/core/target
24+ modules/compile-fail-tests/target
25+ - module : connectors
26+ commands : >
27+ connectors/test connectors-gcs/test
28+ paths : |
29+ target
30+ modules/connectors/target
31+ modules/connectors-gcs/target
32+ - module : engines
33+ commands : >
34+ engines-spark/test engines-flink/test "engines-spark/testOnly *StreamingCDCSpec" "engines-flink/testOnly *EngineAbstractionSpec"
35+ paths : |
36+ target
37+ modules/engines-spark/target
38+ modules/engines-flink/target
39+ name : ${{ matrix.module }}
1640 runs-on : ubuntu-22.04
1741 steps :
1842 - name : Checkout
@@ -31,58 +55,13 @@ jobs:
3155 ~/.ivy2/cache
3256 ~/.cache/coursier
3357 ~/.sbt
34- key : ${{ runner.os }}-sbt-${{ hashFiles('**/build.sbt', '**/project/**/*.sbt', '**/project/**/Dependencies.scala') }}
58+ ${{ matrix.paths }}
59+ key : ${{ runner.os }}-sbt-${{ matrix.module }}-${{ hashFiles('**/build.sbt', '**/project/**/*.sbt', format('modules/{0}/**', matrix.module)) }}
3560 restore-keys : |
36- ${{ runner.os }}-sbt-
37-
38- - name : Check formatting and linting
39- run : sbt scalafmtCheckAll scalafixAll
40-
41- - name : Compile all modules
42- run : sbt compile Test/compile
43-
44- - name : Run tests with coverage
45- run : |
46- sbt coverage test
47- sbt coverageReport
48- sbt coverageAggregate
49-
50- - name : Upload coverage reports to Codecov
51- uses : codecov/codecov-action@v4
52- with :
53- file : target/scala-2.13/scoverage-report/scoverage.xml
54- token : ${{ secrets.CODECOV_TOKEN }}
55- fail_ci_if_error : false
61+ ${{ runner.os }}-sbt-${{ matrix.module }}-
5662
57- - name : Run compile-fail tests
58- run : |
59- echo "🔥 Running compile-fail tests - proving FlowForge's core USP"
60- sbt "compile-fail-tests / test"
61- echo "✅ Compile-fail tests passed - contract drift prevention verified!"
62-
63- - name : Spark smoke test
64- run : |
65- echo "🚀 Running Spark local smoke test"
66- sbt "engines-spark/testOnly *StreamingCDCSpec"
67- echo "✅ Spark smoke test passed!"
68-
69- - name : Flink smoke test
70- run : |
71- echo "🌊 Running Flink smoke test"
72- sbt "engines-flink/testOnly *EngineAbstractionSpec"
73- echo "✅ Flink smoke test passed!"
74-
75- - name : Test g8 template generation
76- run : |
77- echo "📋 Testing g8 template generation"
78- cd /tmp
79- sbt new file://${{ github.workspace }}/flowforge.g8 --name="ci-test-pipeline" --organization="com.flowforge.ci"
80- cd ci-test-pipeline
81- echo "🔨 Testing generated project compilation"
82- sbt compile
83- echo "🧪 Testing generated project tests"
84- sbt test
85- echo "✅ G8 template test passed - turnkey experience verified!"
63+ - name : Build module
64+ run : sbt -batch ${{ matrix.commands }}
8665
8766 spark-it :
8867 if : github.event_name == 'workflow_dispatch'
10685 ${{ runner.os }}-sbt-
10786 - name : Run opt-in Spark/Delta ITs
10887 run : |
109- sbt -DwithSparkIT=true "enginesSpark/testOnly *SparkDeltaSCD2IT"
88+ sbt -batch - DwithSparkIT=true "enginesSpark/testOnly *SparkDeltaSCD2IT"
0 commit comments