workcraft/workcraft

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: CI

on: [push, pull_request]

jobs:

  linux-build:
    strategy:
      matrix:
        os: [ubuntu-20.04, ubuntu-22.04]
        java-distribution: [temurin, zulu]
        java-version: [17, 21]

    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout sources
        uses: actions/checkout@v3
        with:
          submodules: recursive

      - name: Setup JDK ${{ matrix.java-version }}
        uses: actions/setup-java@v3
        with:
          distribution: ${{ matrix.java-distribution }}
          java-version: ${{ matrix.java-version }}

      - name: Assemble Workcraft
        run: ./gradlew assemble

      - name: Install clasp
        run: sudo apt-get install clasp

      - name: Run unit tests
        uses: GabrielBB/xvfb-action@v1
        with:
          run: ./gradlew test

      - name: Run integration tests
        uses: GabrielBB/xvfb-action@v1
        with:
          run: ./ci/run.sh


  osx-build:
    strategy:
      matrix:
        os: [macos-11, macos-12]
        java-distribution: [temurin]
        java-version: [17, 21]

    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout sources
        uses: actions/checkout@v3
        with:
          submodules: recursive

      - name: Setup JDK ${{ matrix.java-version }}
        uses: actions/setup-java@v3
        with:
          distribution: ${{ matrix.java-distribution }}
          java-version: ${{ matrix.java-version }}

      - name: Assemble Workcraft
        run: ./gradlew assemble

      - name: Install clasp
        run: brew install clasp

      - name: Run unit tests
        run: ./gradlew test

      - name: Run integration tests (without 32-bit backends)
        uses: GabrielBB/xvfb-action@v1
        with:
          run: ./ci/run.sh exec help workspace ci/export-* ci/import-* ci/property-* ci/statistics-*


  windows-build:
    strategy:
      matrix:
        os: [windows-2019, windows-2022]
        java-distribution: [temurin]
        java-version: [17, 21]

    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout sources
        uses: actions/checkout@v3
        with:
          submodules: recursive

      - name: Setup JDK ${{ matrix.java-version }}
        uses: actions/setup-java@v3
        with:
          distribution: ${{ matrix.java-distribution }}
          java-version: ${{ matrix.java-version }}

      - name: Assemble Workcraft
        run: ./gradlew assemble

      - name: Run unit tests
        run: ./gradlew test

      - name: Run integration tests
        run: ./ci/run.sh
        shell: bash


  code-analysis:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout sources
        uses: actions/checkout@v3
        with:
          submodules: recursive

      - name: Setup JDK
        uses: actions/setup-java@v3
        with:
          distribution: temurin
          java-version: 17

      - name: Run Checkstyle
        run: ./gradlew checkstyle

      - name: Run PMD checks
        run: ./gradlew pmd

      - name: Assemble Workcraft
        run: ./gradlew assemble

      - name: Install clasp
        run: sudo apt-get install clasp

      - name: Run unit tests
        uses: GabrielBB/xvfb-action@v1
        with:
          run: ./gradlew test

      - name: Run caverage analysis
        run: ./gradlew coverall

      - name: Integrate with coveralls
        uses: coverallsapp/github-action@v2
        with:
          format: jacoco

#      - name: Run a specific unit test
#        uses: GabrielBB/xvfb-action@v1
#        with:
#           run: ./gradlew :MpsatSynthesisPlugin:test --tests org.workcraft.plugins.mpsat_synthesis.SynthesisCommandsTests.bufferTechnologyMappingSynthesis

#      - name: Setup tmate session for remote debugging in case of failure
#        if: ${{ failure() }}
#        uses: mxschmitt/action-tmate@v3