Skip to content

[ci] Stop copying body over to backports in backport-fixup (#4005) (#… #6693

[ci] Stop copying body over to backports in backport-fixup (#4005) (#…

[ci] Stop copying body over to backports in backport-fixup (#4005) (#… #6693

Workflow file for this run

name: Continuous Integration
on:
pull_request:
push:
branches:
- master
- 3.6.x
- 3.5.x
- 3.4.x
- 3.3.x
- 3.2.x
jobs:
ci:
name: ci
strategy:
matrix:
system: ["ubuntu-20.04"]
jvm: ["8"]
scala: ["2.13.10", "2.12.17"]
espresso: ["2.4"]
circt: ["firtool-1.37.0"]
runs-on: ${{ matrix.system }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Tabby OSS Cad Suite
uses: ./.github/workflows/setup-oss-cad-suite
- name: Install Espresso
uses: ./.github/workflows/install-espresso
with:
version: ${{ matrix.espresso }}
- name: Setup Scala
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: ${{ matrix.jvm }}
cache: 'sbt'
- name: Install CIRCT
uses: ./.github/workflows/install-circt
with:
version: ${{ matrix.circt }}
- name: Test
run: sbt ++${{ matrix.scala }} test
- name: Binary compatibility
run: sbt ++${{ matrix.scala }} mimaReportBinaryIssues
doc:
name: Formatting
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Scala
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '11'
cache: 'sbt'
- name: Install CIRCT
uses: ./.github/workflows/install-circt
- name: Check Formatting
run: sbt fmtCheck
integration:
name: Integration Tests (w/ chiseltest)
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Tabby OSS Cad Suite
uses: ./.github/workflows/setup-oss-cad-suite
- name: Install Espresso
uses: ./.github/workflows/install-espresso
- name: Install CIRCT
uses: ./.github/workflows/install-circt
- name: Setup Scala
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '11'
cache: 'sbt'
- name: Integration Tests
# 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 too.
# 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 chiseltest')
run: sbt integrationTests/test
std:
name: Standard Library Tests
runs-on: ubuntu-20.04
strategy:
matrix:
scala: [ "2.13.10", "2.12.17" ]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Tabby OSS Cad Suite
uses: ./.github/workflows/setup-oss-cad-suite
- name: Setup Scala
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '11'
cache: 'sbt'
- name: Check Formatting (Scala 2.12 only)
if: startsWith(matrix.scala, '2.12')
run: sbt ++${{ matrix.scala }} standardLibrary/scalafmtCheckAll
- name: Unit Tests
run: sbt ++${{ matrix.scala }} standardLibrary/test
website:
name: Build Mdoc & Website
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Scala
uses: olafurpg/setup-scala@v10
with:
java-version: [email protected]
- name: Cache Scala
uses: coursier/cache-action@v5
- name: Setup Ruby
uses: actions/setup-ruby@v1
- name: Setup Jekyll
run: |
gem install jekyll -v 4.2.0
gem install jekyll-redirect-from
- name: Install CIRCT
uses: ./.github/workflows/install-circt
#TODO: make the microsite building include building ScalaDoc
- name: Build the docs
run: sbt doc
- name: Build the microsite
run: make -C website
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Tar built website
run: tar zcf website.tar.gz website/docs/target/site
- name: Share Built Website
uses: actions/upload-artifact@v3
with:
name: website
path: website.tar.gz
scala-cli-example:
name: Test Chisel Scala-CLI Example
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
# Need to fetch full history for deriving version
with:
fetch-depth: 0
- name: Build and Test Chisel Scala-CLI Example
uses: ./.github/workflows/build-scala-cli-example
# Sentinel job to simplify how we specify which checks need to pass in branch
# protection and in Mergify. This job checks that all jobs were successful.
#
# When adding new jobs, please add them to `needs` below
check-tests:
name: "check tests"
needs: [ci, integration, std, doc, website, scala-cli-example]
runs-on: ubuntu-20.04
if: success() # only run if all tests have passed
outputs:
success: ${{ steps.setoutput.outputs.success }}
steps:
- id: setoutput
run: echo "success=true" >> $GITHUB_OUTPUT
# Related to check-tests above, this job _always_ runs (even if tests fail
# and thus check-steps is skipped). This two sentinel job approach avoids an
# issue where failing tests causes a single sentinel job to be skipped which
# counts as passing for purposes of branch protection.
#
# See: https://brunoscheufler.com/blog/2022-04-09-the-required-github-status-check-that-wasnt
all_tests_passed:
name: "all tests passed"
runs-on: ubuntu-20.04
if: always() # Always run so that we never skip this check
needs: check-tests
# Pass only if check-tests set its output value
steps:
- run: |
PASSED="${{ needs.check-tests.outputs.success }}"
if [[ $PASSED == "true" ]]; then
echo "### All tests passed! :rocket:" >> $GITHUB_STEP_SUMMARY
exit 0
else
echo "### One or more tests FAILED! :bangbang:" >> $GITHUB_STEP_SUMMARY
exit 1
fi
# 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-20.04
if: github.event_name == 'push'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install CIRCT
uses: ./.github/workflows/install-circt
- name: Setup Scala
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '8'
cache: 'sbt'
- name: Setup GPG (for Publish)
uses: olafurpg/setup-gpg@v3
- name: Publish
run: sbt -DdisableFatalWarnings ci-release
env:
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
PGP_SECRET: ${{ secrets.PGP_SECRET }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}