diff --git a/.github/workflows/backport-fixup.yml b/.github/workflows/backport-fixup.yml index 86b73f4e326..af96a054e22 100644 --- a/.github/workflows/backport-fixup.yml +++ b/.github/workflows/backport-fixup.yml @@ -28,7 +28,7 @@ jobs: original_pr: ${{ steps.original.outputs.pr }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Figure out backport PR number id: backport run: | @@ -57,7 +57,7 @@ jobs: if: ${{ needs.resolve_prs.outputs.original_pr }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Copy over labels env: GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/build-scala-cli-example.yml b/.github/workflows/build-scala-cli-example.yml new file mode 100644 index 00000000000..893758da10e --- /dev/null +++ b/.github/workflows/build-scala-cli-example.yml @@ -0,0 +1,64 @@ +name: Build and Test Chisel Scala-CLI Example + +on: + workflow_call: + inputs: + circt: + description: 'The version of CIRCT to use' + type: string + +jobs: + build_example: + name: Build and Test + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@v4 + # Need to fetch full history for deriving version + with: + fetch-depth: 0 + - name: Install CIRCT + id: install-circt + if: ${{ inputs.circt }} + uses: circt/install-circt@v1.1.1 + with: + version: ${{ inputs.circt }} + github-token: ${{ github.token }} + # TODO have install-circt do this + - name: Set CHISEL_FIRTOOL_PATH + if: steps.install-circt.outcome == 'success' + run: | + dir=$(dirname $(which firtool)) + echo "CHISEL_FIRTOOL_PATH=$dir" >> "$GITHUB_ENV" + - name: Cache Scala-CLI + uses: coursier/cache-action@v6 + - name: Setup Scala-CLI + uses: VirtusLab/scala-cli-setup@v1 + with: + jvm: adoptium:17 + apps: sbt + - name: Generate Chisel Scala CLI Example + shell: bash + run: | + # Determine the version and insert it into the example + sbt emitVersion + VERSION=$(cat version.txt) + sed "s/@VERSION@/$VERSION/g" .github/workflows/build-scala-cli-example/chisel-example.scala > chisel-example.scala + # If the version does NOT contain SNAPSHOT, remove line including snapshots repo + if ! grep -qi 'snapshot' <<< $VERSION; then + sed -i '1d' chisel-example.scala + fi + # Need to publishLocal to test the example + - name: Publish Local + shell: bash + run: sbt "unipublish / publishLocal" + - name: Test Scala CLI Example + shell: bash + run: scala-cli chisel-example.scala + - name: Upload Example + uses: actions/upload-artifact@v4 + with: + name: chisel-example.scala + path: chisel-example.scala + retention-days: 7 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000..f606f5358ca --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,117 @@ +name: Continuous Integration + +on: + workflow_dispatch: + pull_request: + branches-ignore: + - ci/ci-circt-nightly + push: + tags: + - '*' + branches: + - main + - '*.x' + +jobs: + ci: + name: ci + strategy: + matrix: + system: ["ubuntu-22.04"] + jvm: [8] + scala: ["2.13.14"] + espresso: ["2.4"] + uses: ./.github/workflows/test.yml + with: + system: ${{ matrix.system }} + jvm: ${{ matrix.jvm }} + scala: ${{ matrix.scala }} + espresso: ${{ matrix.espresso }} + + # Sentinel job to simplify how we specify which checks need to pass in branch + # protection and in Mergify. This job checks that all matrix jobs were + # successful. + check-tests: + name: "check tests" + needs: ci + runs-on: ubuntu-22.04 + 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-22.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-22.04 + if: github.event_name == 'push' + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Cache Scala + uses: coursier/cache-action@v6 + - name: Setup Scala + uses: VirtusLab/scala-cli-setup@v1 + with: + jvm: adopt:8 + apps: sbt + - name: Publish + run: sbt ci-release + env: + CI_SNAPSHOT_RELEASE: "+unipublish/publish" + CI_SONATYPE_RELEASE: "+unipublish/publishSigned" + PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} + PGP_SECRET: ${{ secrets.PGP_SECRET }} + SONATYPE_PASSWORD: ${{ secrets.CHIPSALLIANCE_SONATYPE_PASSWORD }} + SONATYPE_USERNAME: ${{ secrets.CHIPSALLIANCE_SONATYPE_USERNAME }} + - run: | + sbt emitVersion + echo "Published version: $(cat version.txt)" >> $GITHUB_STEP_SUMMARY + + + deploy_website: + name: Deploy Website + runs-on: ubuntu-22.04 + needs: [all_tests_passed] + # Only Deploy website on pushes to main, may change to a stable branch + if: (github.event_name == 'push') && (github.ref_name == 'main') + steps: + - name: Download built website + uses: actions/download-artifact@v4 + with: + name: website + - name: Untar built website + run: tar zxf website.tar.gz + - name: Deploy Website to GitHub Pages (From Main Branch) + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: website/build diff --git a/.github/workflows/enable-bincompat-checking.yml b/.github/workflows/enable-bincompat-checking.yml index 6d7e8ae7f05..b5cc9c0a8e2 100644 --- a/.github/workflows/enable-bincompat-checking.yml +++ b/.github/workflows/enable-bincompat-checking.yml @@ -37,7 +37,7 @@ jobs: branches: ${{ steps.determine-branches.outputs.branches }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Check Valid @@ -70,14 +70,14 @@ jobs: branch: ${{ fromJson(needs.determine_branches.outputs.branches) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Create file run: | VERSION=${{ needs.determine_version.outputs.version }} VERSION_NO_V=${VERSION#v} echo $VERSION_NO_V >> project/previous-versions.txt - name: Open PR - uses: peter-evans/create-pull-request@v5 + uses: peter-evans/create-pull-request@v6 with: base: ${{ matrix.branch }} branch: bincompat/${{ matrix.branch }}/${{ needs.determine_version.outputs.version }} diff --git a/.github/workflows/install-espresso/action.yml b/.github/workflows/install-espresso/action.yml index fb1d655aafa..e43775e3df0 100644 --- a/.github/workflows/install-espresso/action.yml +++ b/.github/workflows/install-espresso/action.yml @@ -10,7 +10,7 @@ runs: using: composite steps: - id: cache-espresso - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: /usr/local/bin/espresso key: espresso-${{ runner.os }}-${{ inputs.version }} diff --git a/.github/workflows/install-jextract/action.yml b/.github/workflows/install-jextract/action.yml new file mode 100644 index 00000000000..cafae049b85 --- /dev/null +++ b/.github/workflows/install-jextract/action.yml @@ -0,0 +1,31 @@ +name: Install Jextract + +inputs: + file-name: + description: 'File name to install' + required: false + default: 'openjdk-21-jextract+1-2_linux-x64_bin.tar.gz' + +runs: + using: composite + steps: + - id: cache-jextract + uses: actions/cache@v4 + with: + path: jextract + key: jextract-${{ runner.os }}-${{ inputs.file-name }} + + - shell: bash + if: steps.cache-jextract.outputs.cache-hit != 'true' + run: | + mkdir -p jextract + cd jextract + wget -q https://download.java.net/java/early_access/jextract/21/1/${{ inputs.file-name }} + tar xzf ${{ inputs.file-name }} + + - shell: bash + run: | + cd jextract + DIR_NAME=$(ls -d jextract-*/ | head -c-2) + ./$DIR_NAME/bin/jextract --version + echo "$(pwd)/$DIR_NAME/bin" >> $GITHUB_PATH diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index eaa166de4fc..9535763777b 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -41,7 +41,7 @@ jobs: run: echo "$CHANGELOG" >> $GITHUB_STEP_SUMMARY - name: Upload Release Notes (on release) if: github.event_name == 'release' - uses: softprops/action-gh-release@v0.1.15 + uses: softprops/action-gh-release@v2.0.5 with: body: ${{ steps.release-notes.outputs.changelog }} - name: Error on uncategorized PRs diff --git a/.github/workflows/require-label.yml b/.github/workflows/require-label.yml index 160698d20a0..14c0e947523 100644 --- a/.github/workflows/require-label.yml +++ b/.github/workflows/require-label.yml @@ -16,7 +16,7 @@ jobs: name: Check Labels runs-on: ubuntu-latest steps: - - uses: docker://agilepathway/pull-request-label-checker:v1.4.25 + - uses: docker://agilepathway/pull-request-label-checker:v1.6.32 with: one_of: Feature,Performance,API Modification,Deprecation,Backend Code Generation,Bugfix,Documentation,Dependency Update,Internal,No Release Notes repo_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/scala-cli-example.yml b/.github/workflows/scala-cli-example.yml index 329b0f12aeb..4d2d6779334 100644 --- a/.github/workflows/scala-cli-example.yml +++ b/.github/workflows/scala-cli-example.yml @@ -11,6 +11,7 @@ jobs: runs-on: ubuntu-latest steps: +<<<<<<< HEAD - name: Checkout uses: actions/checkout@v3 # Need to fetch full history for deriving version @@ -20,13 +21,17 @@ jobs: uses: ./.github/workflows/build-scala-cli-example - name: Upload Example uses: actions/upload-artifact@v3 +======= + - name: Download Generated CLI Example + uses: actions/download-artifact@v4 +>>>>>>> 99aa9f1e4 (Bump versions of Github actions to versions using Node 20 (#4116)) with: name: chisel-example.scala path: chisel-example.scala retention-days: 7 - name: Upload To Release Page if: github.event_name == 'release' - uses: softprops/action-gh-release@v0.1.15 + uses: softprops/action-gh-release@v2.0.5 with: files: chisel-example.scala diff --git a/.github/workflows/setup-oss-cad-suite/action.yml b/.github/workflows/setup-oss-cad-suite/action.yml index 63d70e926bb..3b881db718b 100644 --- a/.github/workflows/setup-oss-cad-suite/action.yml +++ b/.github/workflows/setup-oss-cad-suite/action.yml @@ -10,7 +10,7 @@ runs: using: composite steps: - id: cache-oss-cad-suite - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: oss-cad-suite key: oss-cad-suite-${{ runner.os }}-${{ inputs.version }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9d61f8552c6..bb3300b39b0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,13 @@ jobs: steps: - name: Checkout +<<<<<<< HEAD uses: actions/checkout@v3 +======= + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} +>>>>>>> 99aa9f1e4 (Bump versions of Github actions to versions using Node 20 (#4116)) - name: Install Tabby OSS Cad Suite uses: ./.github/workflows/setup-oss-cad-suite - name: Install Espresso @@ -53,7 +59,21 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout +<<<<<<< HEAD uses: actions/checkout@v3 +======= + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + # FIXME: installling jextract before installing mill to workaround `os.proc` can't find jextract in the outdated PATH env from mill server + - name: Install Jextract + uses: ./.github/workflows/install-jextract + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'adopt' + java-version: '21' +>>>>>>> 99aa9f1e4 (Bump versions of Github actions to versions using Node 20 (#4116)) - name: Install Mill uses: jodersky/setup-mill@v0.3.0 with: @@ -68,9 +88,17 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout +<<<<<<< HEAD uses: actions/checkout@v3 - name: Setup Scala uses: actions/setup-java@v3 +======= + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + - name: Setup Java + uses: actions/setup-java@v4 +>>>>>>> 99aa9f1e4 (Bump versions of Github actions to versions using Node 20 (#4116)) with: distribution: 'adopt' java-version: '11' @@ -85,7 +113,13 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout +<<<<<<< HEAD uses: actions/checkout@v3 +======= + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} +>>>>>>> 99aa9f1e4 (Bump versions of Github actions to versions using Node 20 (#4116)) - name: Install Tabby OSS Cad Suite uses: ./.github/workflows/setup-oss-cad-suite - name: Install Espresso @@ -101,6 +135,30 @@ jobs: - name: Integration Tests run: sbt integrationTests/test +<<<<<<< HEAD +======= + # Currently just a sanity check that the benchmarking flow works + benchmark: + name: Benchmarking Sanity Check + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'adopt' + java-version: '21' + - name: Install Mill + uses: jodersky/setup-mill@v0.3.0 + with: + mill-version: 0.11.5 + - name: JMH + run: mill benchmark.runJmh + +>>>>>>> 99aa9f1e4 (Bump versions of Github actions to versions using Node 20 (#4116)) std: name: Standard Library Tests runs-on: ubuntu-20.04 @@ -109,7 +167,13 @@ jobs: scala: [ "2.13.10", "2.12.17" ] steps: - name: Checkout +<<<<<<< HEAD uses: actions/checkout@v3 +======= + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} +>>>>>>> 99aa9f1e4 (Bump versions of Github actions to versions using Node 20 (#4116)) - name: Install Tabby OSS Cad Suite uses: ./.github/workflows/setup-oss-cad-suite - name: Setup Scala @@ -130,7 +194,19 @@ jobs: steps: - name: Checkout +<<<<<<< HEAD uses: actions/checkout@v3 +======= + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + # Need full history to correctly determine SNAPSHOT version + fetch-depth: 0 + - name: Install Tabby OSS Cad Suite + uses: ./.github/workflows/setup-oss-cad-suite + - name: Cache Scala + uses: coursier/cache-action@v6 +>>>>>>> 99aa9f1e4 (Bump versions of Github actions to versions using Node 20 (#4116)) - name: Setup Scala uses: actions/setup-java@v3 with: @@ -157,7 +233,7 @@ jobs: - name: Tar built website run: tar zcf website.tar.gz website/docs/target/site - name: Share Built Website - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: website path: website.tar.gz