name: Continuous Integration on: pull_request: push: branches: - master - 3.4.x - 3.3.x - 3.2.x jobs: ci: name: ci strategy: matrix: system: ["ubuntu-20.04"] jvm: ["adopt@1.8"] scala: ["2.13.6", "2.12.15"] espresso: ["2.4"] runs-on: ${{ matrix.system }} steps: - name: Checkout uses: actions/checkout@v2 - name: Install Tabby OSS Cad Suite (from YosysHQ) run: | cd /home/runner/work/ wget https://github.com/YosysHQ/oss-cad-suite-build/releases/download/2021-09-23/oss-cad-suite-linux-x64-20210923.tgz tar -xf oss-cad-suite-linux-x64-20210923.tgz ls /home/runner/work/oss-cad-suite/bin echo "/home/runner/work/oss-cad-suite/bin" >> $GITHUB_PATH - name: Install Espresso run: | cd /tmp wget https://github.com/chipsalliance/espresso/releases/download/v${{ matrix.espresso }}/x86_64-linux-gnu-espresso chmod +x x86_64-linux-gnu-espresso sudo mv x86_64-linux-gnu-espresso /usr/local/bin/espresso espresso || true - name: Setup Scala uses: olafurpg/setup-scala@v10 with: java-version: ${{ matrix.jvm }} - name: Cache Scala uses: coursier/cache-action@v5 - name: Documentation (Scala 2.12 only) if: startsWith(matrix.scala, '2.12') run: sbt ++${{ matrix.scala }} docs/mdoc - name: Test run: sbt ++${{ matrix.scala }} test noPluginTests/test - name: Binary compatibility run: sbt ++${{ matrix.scala }} mimaReportBinaryIssues integration: name: Integration Tests (w/ chiseltest) runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v2 - name: Install Tabby OSS Cad Suite (from YosysHQ) run: | cd /home/runner/work/ wget https://github.com/YosysHQ/oss-cad-suite-build/releases/download/2021-09-23/oss-cad-suite-linux-x64-20210923.tgz tar -xf oss-cad-suite-linux-x64-20210923.tgz ls /home/runner/work/oss-cad-suite/bin echo "/home/runner/work/oss-cad-suite/bin" >> $GITHUB_PATH - name: Install Espresso run: | cd /tmp wget https://github.com/chipsalliance/espresso/releases/download/v2.4/x86_64-linux-gnu-espresso chmod +x x86_64-linux-gnu-espresso sudo mv x86_64-linux-gnu-espresso /usr/local/bin/espresso espresso || true - name: Setup Scala uses: olafurpg/setup-scala@v10 with: java-version: "adopt@1.11" - name: Cache Scala uses: coursier/cache-action@v5 - name: Integration Tests run: sbt integrationTests/test # 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: [ci, integration] runs-on: ubuntu-20.04 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-20.04 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 }}