Skip to content
This repository has been archived by the owner on Aug 20, 2024. It is now read-only.

Archive the README #1840

Archive the README

Archive the README #1840

Workflow file for this run

name: Continuous Integration
on:
pull_request:
push:
branches:
- master
- 1.6.x
- 1.5.x
- 1.4.x
- 1.3.x
- 1.2.x
jobs:
test:
name: sbt test
runs-on: ubuntu-latest
strategy:
matrix:
scala: [2.13.10, 2.12.17]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Tabby OSS Cad Suite
uses: ./.github/workflows/setup-oss-cad-suite
- name: Setup Scala
uses: olafurpg/setup-scala@v10
with:
java-version: adopt@1.8
- name: Cache Scala
uses: coursier/cache-action@v6
- name: Check Formatting (Scala 2.12 only)
if: startsWith(matrix.scala, '2.12')
run: sbt ++${{ matrix.scala }} scalafmtCheckAll
- name: Unidoc
run: sbt ++${{ matrix.scala }} unidoc
- name: Sanity check benchmarking scripts (Scala 2.13 only)
if: startsWith(matrix.scala, '2.13')
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
mill:
name: Mill Sanity Check
runs-on: ubuntu-latest
strategy:
matrix:
scala: [2.13.10, 2.12.17]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Scala
uses: olafurpg/setup-scala@v10
- name: Cache
uses: coursier/cache-action@v5
- name: Setup Mill
uses: jodersky/setup-mill@v0.2.3
- name: Mill sanity check
run: mill _[${{ matrix.scala }}].compile
# 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]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Tabby OSS Cad Suite
uses: ./.github/workflows/setup-oss-cad-suite
- 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
# This is here instead of on the whole job because if a job is skipped, so are dependent jobs
# If this job were skipped, all_tests_passed would be skipped to
# By having this "if" here, this job returns success so that all_tests_passed will succeed too
if: github.event_name == 'pull_request' &&
! contains(github.event.pull_request.labels.*.name, 'Skip Formal CI')
run: |
echo ${{ github.event_name }}
echo ${{ github.event.pull_request.labels }}
./.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, mill, 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 }}