# This file describes the GitHub Actions workflow for continuous integration of rocket-chip. # # See # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions # for API reference documentation on this file format. name: Continuous Integration on: push: branches: - master pull_request: branches: - master jobs: check-wit: name: Check Wit Manifest runs-on: ubuntu-16.04 steps: - uses: actions/checkout@v2 - run: ci-tests/check_submodules prepare-riscv-tools-cache: name: Prepare riscv-tools Cache runs-on: ubuntu-16.04 steps: - uses: actions/checkout@v2 - id: cache uses: actions/cache@v2 with: path: | ./regression/install ./regression/stamps/rocket-tools_checkout.stamp key: riscv-tools-${{ hashFiles('./riscv-tools.hash') }}-v1 - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: sudo xargs apt-get install -y < .github/workflows/apt-packages.txt - if: steps.cache.outputs.cache-hit != 'true' env: CXX: g++-4.8 CC: gcc-4.8 run: make tools -C regression SUITE=none prepare-verilator-cache: name: Prepare Verilator Cache runs-on: ubuntu-16.04 steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 with: path: ./emulator/verilator key: verilator-${{ hashFiles('./verilator.hash') }}-v1 # WARNING: The version of gcc used to compile Verilator MUST match the # version of gcc used to compile the fesvr. There is some bug related to # some C struct not being ABI-compatible across gcc 4 and 5, which we have # not debugged yet. - name: Install Dependencies run: sudo xargs apt-get install -y < .github/workflows/apt-packages.txt - env: CXX: g++-4.8 CC: gcc-4.8 run: make verilator -C regression SUITE=none check-wake-compilation: name: Check Wake Compilation runs-on: ubuntu-16.04 steps: - uses: actions/checkout@v2 - name: Use SBT Cache uses: actions/cache@v2 with: path: | ~/.cache/coursier ~/.sbt key: sbt-${{ hashFiles('**/build.sbt') }}-v1 - run: ci-tests/wake_scala_compilation # This job is defined as a matrix job, where the definitions of each test # bucket is located in a shell script at ./regression/run-test-bucket. test: name: Test runs-on: ubuntu-16.04 needs: [prepare-riscv-tools-cache, prepare-verilator-cache] strategy: fail-fast: false matrix: bucket: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] steps: - uses: actions/checkout@v2 - name: Use riscv-tools Cache uses: actions/cache@v2 with: path: | ./regression/install ./regression/stamps/rocket-tools_checkout.stamp key: riscv-tools-${{ hashFiles('./riscv-tools.hash') }}-v1 - name: Use Verilator Cache uses: actions/cache@v2 with: path: ./emulator/verilator key: verilator-${{ hashFiles('./verilator.hash') }}-v1 - name: Use SBT Cache uses: actions/cache@v2 with: path: | ~/.cache/coursier ~/.sbt key: sbt-${{ hashFiles('**/build.sbt') }}-v1 - name: Install Dependencies run: | sudo xargs apt-get install -y < .github/workflows/apt-packages.txt python3 -m pip install pexpect==4.3.1 - env: CXX: g++-4.8 CC: gcc-4.8 run: ./regression/run-test-bucket ${{ matrix.bucket }} - if: failure() name: Upload Artifacts on Failure uses: actions/upload-artifact@v1 with: name: test-bucket-${{ matrix.bucket }}-failures path: emulator/output