perilus

RISC-V processor built with Chisel
git clone https://git.bradleygannon.com/perilus.git
Log | Files | Refs | Submodules | README

ci.yml (2625B)


      1 name: CI
      2 
      3 on:
      4   push:
      5   pull_request:
      6 
      7 jobs:
      8   build-test-generate:
      9     runs-on: ubuntu-latest
     10 
     11     steps:
     12       - name: Checkout
     13         uses: actions/checkout@v4
     14 
     15       - name: Set up JDK
     16         uses: actions/setup-java@v4
     17         with:
     18           distribution: temurin
     19           java-version: 21
     20 
     21       - name: Install sbt
     22         run: |
     23           sudo apt-get update
     24           sudo apt-get install apt-transport-https curl gnupg -yqq
     25           echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
     26           echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list
     27           curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo -H gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/scalasbt-release.gpg --import
     28           sudo chmod 644 /etc/apt/trusted.gpg.d/scalasbt-release.gpg
     29           sudo apt-get update
     30           sudo apt-get install -y sbt
     31 
     32       - name: Cache sbt
     33         uses: actions/cache@v4
     34         with:
     35           path: |
     36             ~/.ivy2/cache
     37             ~/.sbt
     38             ~/.cache/coursier
     39           key: ${{ runner.os }}-sbt-${{ hashFiles('**/build.sbt', '**/project/**') }}
     40           restore-keys: |
     41             ${{ runner.os }}-sbt-
     42 
     43       - name: Install Verilator
     44         run: |
     45           sudo apt-get update
     46           sudo apt-get install -y verilator
     47 
     48       - name: Install Typst
     49         uses: typst-community/setup-typst@v5
     50 
     51       # Ensure sbt & scalafmt plugins are resolved (if needed)
     52       - name: sbt update
     53         run: sbt update
     54 
     55       - name: Check scalafmt
     56         run: |
     57           # This assumes you have sbt-scalafmt configured in project/plugins.sbt
     58           sbt scalafmtAll
     59           # Fail if scalafmt caused changes
     60           if ! git diff --quiet **/*.scala; then
     61             echo "Code is not scalafmt-formatted. Run 'sbt scalafmtAll' locally."
     62             exit 1
     63           fi
     64 
     65       - name: Run tests
     66         run: sbt test
     67 
     68       - name: Run main (generate Verilog)
     69         run: |
     70           sbt run
     71           cd generated && zip ../perilus.zip ./*
     72 
     73       - name: Compile system diagram to SVG
     74         run: |
     75           typst compile --format svg doc/perilus.typ doc/perilus.svg
     76 
     77       - name: Upload perilus.zip artifact
     78         uses: actions/upload-artifact@v4
     79         with:
     80           name: perilus
     81           path: perilus.zip
     82 
     83       - name: Upload documentation SVG artifact
     84         uses: actions/upload-artifact@v4
     85         with:
     86           name: perilus-doc
     87           path: doc/perilus.svg