finmath lib build #216
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: finmath lib build | |
| on: | |
| push: | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| name: 🧪 Testing | |
| runs-on: ubuntu-latest | |
| outputs: | |
| test_suites: ${{ steps.collect_test_summary.outputs.test_suites }} | |
| test_total: ${{ steps.collect_test_summary.outputs.test_total }} | |
| test_passed: ${{ steps.collect_test_summary.outputs.test_passed }} | |
| test_failures: ${{ steps.collect_test_summary.outputs.test_failures }} | |
| test_errors: ${{ steps.collect_test_summary.outputs.test_errors }} | |
| test_skipped: ${{ steps.collect_test_summary.outputs.test_skipped }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Set up Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: zulu | |
| java-version: '17' | |
| cache: maven | |
| - name: Run unit tests | |
| run: mvn -B -Dcheckstyle.skip=true test | |
| - name: Collect unit test summary | |
| id: collect_test_summary | |
| if: ${{ always() }} | |
| run: | | |
| python3 <<'PY' | |
| import glob | |
| import os | |
| import xml.etree.ElementTree as ET | |
| suites = 0 | |
| total = 0 | |
| failures = 0 | |
| errors = 0 | |
| skipped = 0 | |
| for file in glob.glob("**/target/surefire-reports/TEST-*.xml", recursive=True): | |
| try: | |
| root = ET.parse(file).getroot() | |
| except ET.ParseError: | |
| continue | |
| if root.tag == "testsuite": | |
| test_suites = [root] | |
| elif root.tag == "testsuites": | |
| test_suites = root.findall("testsuite") | |
| else: | |
| test_suites = [] | |
| for suite in test_suites: | |
| suites += 1 | |
| total += int(float(suite.attrib.get("tests", 0))) | |
| failures += int(float(suite.attrib.get("failures", 0))) | |
| errors += int(float(suite.attrib.get("errors", 0))) | |
| skipped += int(float(suite.attrib.get("skipped", 0))) | |
| passed = max(total - failures - errors - skipped, 0) | |
| with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as out: | |
| out.write(f"test_suites={suites}\n") | |
| out.write(f"test_total={total}\n") | |
| out.write(f"test_passed={passed}\n") | |
| out.write(f"test_failures={failures}\n") | |
| out.write(f"test_errors={errors}\n") | |
| out.write(f"test_skipped={skipped}\n") | |
| PY | |
| test-java8: | |
| name: 🧪 Testing Java 8 | |
| runs-on: ubuntu-latest | |
| if: | | |
| github.event_name == 'pull_request' || | |
| github.event_name == 'push' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check whether Java 8 build is affected | |
| id: changes | |
| shell: bash | |
| run: | | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| BASE="${{ github.event.pull_request.base.sha }}" | |
| else | |
| BASE="${{ github.event.before }}" | |
| fi | |
| if git diff --name-only "$BASE" "$GITHUB_SHA" | grep -E '^(src/main/java8/|src/test/java8/|pom.xml|\.github/workflows/)'; then | |
| echo "run_java8=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "run_java8=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Set up Java 8 | |
| if: steps.changes.outputs.run_java8 == 'true' | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: zulu | |
| java-version: '8' | |
| cache: maven | |
| - name: Run Java 8 tests | |
| if: steps.changes.outputs.run_java8 == 'true' | |
| run: mvn -B -P java-8 -Dcheckstyle.skip=true test | |
| checkstyle: | |
| name: 🔍 Checkstyle | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Set up Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: zulu | |
| java-version: '17' | |
| cache: maven | |
| - name: Run Checkstyle | |
| run: mvn -B -DskipTests checkstyle:check | |
| javadoc: | |
| name: 📚 JavaDoc | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Set up Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: zulu | |
| java-version: '17' | |
| cache: maven | |
| - name: Generate JavaDoc | |
| run: | | |
| mvn -B \ | |
| -Dmaven.test.skip=true \ | |
| -DskipTests=true \ | |
| -Dcheckstyle.skip=true \ | |
| -Ddoclint=none \ | |
| package javadoc:javadoc | |
| summary: | |
| name: 📊 Summary | |
| runs-on: ubuntu-latest | |
| needs: | |
| - test | |
| - checkstyle | |
| - javadoc | |
| if: ${{ always() }} | |
| steps: | |
| - name: Write workflow summary | |
| env: | |
| TEST_RESULT: "${{ needs.test.result }}" | |
| CHECKSTYLE_RESULT: "${{ needs.checkstyle.result }}" | |
| JAVADOC_RESULT: "${{ needs.javadoc.result }}" | |
| TEST_SUITES: "${{ needs.test.outputs.test_suites }}" | |
| TEST_TOTAL: "${{ needs.test.outputs.test_total }}" | |
| TEST_PASSED: "${{ needs.test.outputs.test_passed }}" | |
| TEST_FAILURES: "${{ needs.test.outputs.test_failures }}" | |
| TEST_ERRORS: "${{ needs.test.outputs.test_errors }}" | |
| TEST_SKIPPED: "${{ needs.test.outputs.test_skipped }}" | |
| run: | | |
| status() { | |
| case "$1" in | |
| success) echo "✅ success" ;; | |
| failure) echo "❌ failure" ;; | |
| cancelled) echo "🚫 cancelled" ;; | |
| skipped) echo "⏭️ skipped" ;; | |
| *) echo "${1:-unknown}" ;; | |
| esac | |
| } | |
| TEST_SUITES="${TEST_SUITES:-0}" | |
| TEST_TOTAL="${TEST_TOTAL:-0}" | |
| TEST_PASSED="${TEST_PASSED:-0}" | |
| TEST_FAILURES="${TEST_FAILURES:-0}" | |
| TEST_ERRORS="${TEST_ERRORS:-0}" | |
| TEST_SKIPPED="${TEST_SKIPPED:-0}" | |
| { | |
| echo "### 📊 CI Summary" | |
| echo | |
| echo "| Job | Result |" | |
| echo "|---|---:|" | |
| echo "| 🧪 Testing | $(status "$TEST_RESULT") |" | |
| echo "| 🔍 Checkstyle | $(status "$CHECKSTYLE_RESULT") |" | |
| echo "| 📚 JavaDoc | $(status "$JAVADOC_RESULT") |" | |
| echo | |
| echo "### 🧪 Unit tests" | |
| echo | |
| echo "| Test suites | Tests | Passed | Failures | Errors | Skipped |" | |
| echo "|---:|---:|---:|---:|---:|---:|" | |
| echo "| $TEST_SUITES | $TEST_TOTAL | $TEST_PASSED | $TEST_FAILURES | $TEST_ERRORS | $TEST_SKIPPED |" | |
| } >> "$GITHUB_STEP_SUMMARY" |