.github/workflows/ci.yml
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