Skip to content

Merge pull request #4 from tino1b2be/v2-foundation #4

Merge pull request #4 from tino1b2be/v2-foundation

Merge pull request #4 from tino1b2be/v2-foundation #4

Workflow file for this run

name: CI
# Task 1.11 — GitHub Actions CI for the DTMF-Decoder v2 foundation build.
#
# Runs `./gradlew build --no-daemon` on Ubuntu, macOS, and Windows against a
# Temurin JDK 17 toolchain (Requirements 1.3, 1.9). Gradle caches are keyed on
# the wrapper properties and the version catalog so cache hits survive across
# branches but invalidate whenever the build toolchain or pinned library
# versions change.
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
permissions:
contents: read
jobs:
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up JDK 17 (Temurin)
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Cache Gradle caches and wrapper dists
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build
run: ./gradlew build --no-daemon
# Integration-scale tests (Task 13.5, Requirements 12.1, 12.2, 12.3) live
# in their own source set and are excluded from the default `test` task,
# so they do not slow down the matrix `build` job. They run once on Linux
# only — the detection-rate and noise-FP tests are deterministic, so a
# single-OS run is enough.
integration-test:
name: Integration tests (Linux)
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up JDK 17 (Temurin)
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Cache Gradle caches and wrapper dists
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Run integration tests
run: ./gradlew :dtmf-core:integrationTest --no-daemon