diff options
| author | Jack Koenig | 2021-01-19 11:51:33 -0800 |
|---|---|---|
| committer | GitHub | 2021-01-19 11:51:33 -0800 |
| commit | bbd7fc4115728ecc7cf88bf0524f2126d8220c34 (patch) | |
| tree | 1d49d377c0da72490f70a2dbcc9e6a4881b0d7d1 /.github/workflows | |
| parent | 15013df6f6ac2dafeb35d7ed15cf95c7ac8a5bef (diff) | |
Switch from Travis to Github Actions CI (#2041)
* Fix .run_formal_checks for Github Actions instead of Travis
* Remove .run_chisel_tests
Because we publish SNAPSHOTs on every merge to master, the Chisel repo
checks against master of FIRRTL regularly
* Only run unidoc for Scala 2.12
Under Travis we ran for 2.11, 2.12, and 2.13, but it doesn't work when
using ++2.<major>.<minor> when major != to 2.12. It seems if we want to
run all 3, we have to run as `sbt +unidoc`. It's not clear how much
benefit we get from building on the other versions, so stick with 2.12
for now.
* Generate .mergify.yml with script in chisel-repo-tools
Generated with config:
conditions:
- status-success=all tests passed
branches:
- 1.2.x
- 1.3.x
- 1.4.x
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/test.yml | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..3f57a1a6 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,108 @@ +name: Continuous Integration + +on: + pull_request: + push: + branches: + - master + - 1.4.x + - 1.3.x + - 1.2.x + +jobs: + test: + name: sbt test + runs-on: ubuntu-latest + strategy: + matrix: + scala: [2.13.2, 2.12.12, 2.11.12] + container: + image: ucbbar/chisel3-tools + options: --user github --entrypoint /bin/bash + env: + CONTAINER_HOME: /home/github + + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Scala + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.8 + - name: Cache Scala + uses: coursier/cache-action@v5 + - name: Unidoc builds (Scala 2.12 only) + if: matrix.scala == '2.12.12' + run: sbt ++${{ matrix.scala }} unidoc + - name: Sanity check benchmarking scripts (Scala 2.12 only) + if: matrix.scala == '2.12.12' + run: | + benchmark/scripts/benchmark_cold_compile.py -N 2 --designs regress/ICache.fir --versions HEAD + benchmark/scripts/find_heap_bound.py -- -cp firrtl*jar firrtl.stage.FirrtlMain -i regress/ICache.fir -o out -X verilog + - name: Test + run: sbt ++${{ matrix.scala }} test + - name: Binary compatibility + run: sbt ++${{ matrix.scala }} mimaReportBinaryIssues + + # TODO find better way to express Ops and AddNot as single test + equiv: + name: formal equivalence + runs-on: ubuntu-latest + strategy: + matrix: + design: [RocketCore, FPU, ICache, Ops, AddNot] + container: + image: ucbbar/chisel3-tools + options: --user github --entrypoint /bin/bash + env: + CONTAINER_HOME: /home/github + + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Scala + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.8 + - name: Cache Scala + uses: coursier/cache-action@v5 + - name: Run Formal Equivalence + run: ./.run_formal_checks.sh ${{ matrix.design }} + + # Sentinel job to simplify how we specify which checks need to pass in branch + # protection and in Mergify + # + # When adding new jobs, please add them to `needs` below + all_tests_passed: + name: "all tests passed" + needs: [test, equiv] + runs-on: ubuntu-latest + steps: + - run: echo Success! + + # sbt ci-release publishes all cross versions so this job needs to be + # separate from a Scala versions build matrix to avoid duplicate publishing + publish: + needs: [all_tests_passed] + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Scala + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.8 + - name: Cache Scala + uses: coursier/cache-action@v5 + - name: Setup GPG (for Publish) + uses: olafurpg/setup-gpg@v3 + - name: Publish + run: sbt ci-release + env: + PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} + PGP_SECRET: ${{ secrets.PGP_SECRET }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + |
