Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/WORKFLOWS_SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

## ✅ **FINAL STATE - Production-Ready CI/CD**

### 🧪 **CI Matrix Build Status**

| Module | Status |
|--------|--------|
| core | ![core](https://github.com/flowforge/flowforge/actions/workflows/ci.yml/badge.svg?job=core) |
| connectors | ![connectors](https://github.com/flowforge/flowforge/actions/workflows/ci.yml/badge.svg?job=connectors) |
| engines | ![engines](https://github.com/flowforge/flowforge/actions/workflows/ci.yml/badge.svg?job=engines) |

### 🚀 **Active Workflows (8 files)**

| Workflow | Purpose | Status | Triggers |
Expand Down
85 changes: 32 additions & 53 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,32 @@ env:
SBT_OPTS: -Xmx4G -XX:+UseG1GC

jobs:
build-and-test:
name: Build and test
build:
strategy:
matrix:
include:
- module: core
commands: >
scalafmtCheckAll scalafixAll core/test compile-fail-tests/test
paths: |
target
modules/core/target
modules/compile-fail-tests/target
- module: connectors
commands: >
connectors/test connectors-gcs/test
paths: |
target
modules/connectors/target
modules/connectors-gcs/target
- module: engines
commands: >
engines-spark/test engines-flink/test "engines-spark/testOnly *StreamingCDCSpec" "engines-flink/testOnly *EngineAbstractionSpec"
paths: |
target
modules/engines-spark/target
modules/engines-flink/target
Comment on lines +14 to +38

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Ensure all modules are built in CI matrix

The new matrix job only runs commands for core, connectors, and engines, but the repository still contains other modules such as contracts, infrastructure, quality-deequ, and the CLI subprojects. Because the workflow no longer performs a global sbt compile Test/compile, any change in those omitted modules will merge without even compiling or running their tests. Consider adding the remaining modules to the matrix or restoring a catch‑all compile step so CI continues to guard the whole build.

Useful? React with 👍 / 👎.

name: ${{ matrix.module }}
runs-on: ubuntu-22.04
steps:
- name: Checkout
Expand All @@ -31,58 +55,13 @@ jobs:
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('**/build.sbt', '**/project/**/*.sbt', '**/project/**/Dependencies.scala') }}
${{ matrix.paths }}
key: ${{ runner.os }}-sbt-${{ matrix.module }}-${{ hashFiles('**/build.sbt', '**/project/**/*.sbt', format('modules/{0}/**', matrix.module)) }}
restore-keys: |
${{ runner.os }}-sbt-

- name: Check formatting and linting
run: sbt scalafmtCheckAll scalafixAll

- name: Compile all modules
run: sbt compile Test/compile

- name: Run tests with coverage
run: |
sbt coverage test
sbt coverageReport
sbt coverageAggregate

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
file: target/scala-2.13/scoverage-report/scoverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
${{ runner.os }}-sbt-${{ matrix.module }}-

- name: Run compile-fail tests
run: |
echo "🔥 Running compile-fail tests - proving FlowForge's core USP"
sbt "compile-fail-tests / test"
echo "✅ Compile-fail tests passed - contract drift prevention verified!"

- name: Spark smoke test
run: |
echo "🚀 Running Spark local smoke test"
sbt "engines-spark/testOnly *StreamingCDCSpec"
echo "✅ Spark smoke test passed!"

- name: Flink smoke test
run: |
echo "🌊 Running Flink smoke test"
sbt "engines-flink/testOnly *EngineAbstractionSpec"
echo "✅ Flink smoke test passed!"

- name: Test g8 template generation
run: |
echo "📋 Testing g8 template generation"
cd /tmp
sbt new file://${{ github.workspace }}/flowforge.g8 --name="ci-test-pipeline" --organization="com.flowforge.ci"
cd ci-test-pipeline
echo "🔨 Testing generated project compilation"
sbt compile
echo "🧪 Testing generated project tests"
sbt test
echo "✅ G8 template test passed - turnkey experience verified!"
- name: Build module
run: sbt -batch ${{ matrix.commands }}
Comment on lines 55 to +64

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Restore code coverage and Codecov upload

The previous workflow generated scoverage data (sbt coverage test followed by coverageReport/coverageAggregate) and uploaded it to Codecov. The refactored job now ends after a single sbt -batch … invocation with no coverage instrumentation or upload, so coverage metrics will stop being produced and Codecov will not receive updates. If coverage reporting is still required, reintroduce these steps—either per matrix job or in a dedicated job—before merging.

Useful? React with 👍 / 👎.


spark-it:
if: github.event_name == 'workflow_dispatch'
Expand All @@ -106,4 +85,4 @@ jobs:
${{ runner.os }}-sbt-
- name: Run opt-in Spark/Delta ITs
run: |
sbt -DwithSparkIT=true "enginesSpark/testOnly *SparkDeltaSCD2IT"
sbt -batch -DwithSparkIT=true "enginesSpark/testOnly *SparkDeltaSCD2IT"
Loading