Nightly CIRCT #363
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Nightly CIRCT | |
env: | |
# This is the name of the branch containing accumulated patches that need to | |
# be applied in order for the latest CIRCT to work with Chisel. | |
branch-name: ci/ci-circt-nightly | |
on: | |
workflow_dispatch: | |
# Run every day at 1100 UTC which is: | |
# - 0400 PDT / 0300 PST | |
# - 0700 EDT / 0600 EST | |
# This time is *four* hours after the scheduled build of the firtool Nightly. | |
schedule: | |
- cron: '0 11 * * *' | |
# Run on PRs that target the | |
pull_request: | |
branches: | |
- ci/ci-circt-nightly | |
jobs: | |
determine-branch: | |
name: 'Update Staging Branch and Determine Target Branch' | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Update Staging Branch | |
uses: circt/update-staging-branch@v1.2.0 | |
with: | |
user: chiselbot | |
email: chiselbot@users.noreply.github.com | |
main-branch: main | |
staging-branch: ${{ env.branch-name }} | |
- name: Determine Branch | |
id: determine-branch | |
shell: bash | |
run: | | |
branch=$(git rev-parse HEAD) | |
echo branches=\[\"$branch\"\] >> $GITHUB_OUTPUT | |
outputs: | |
branches: ${{ steps.determine-branch.outputs.branches }} | |
ci: | |
name: ci | |
needs: [determine-branch] | |
strategy: | |
matrix: | |
system: ["ubuntu-22.04"] | |
jvm: [8] | |
scala: ["2.13.12"] | |
espresso: ["2.4"] | |
circt: ["nightly"] | |
ref: ${{ fromJSON(needs.determine-branch.outputs.branches) }} | |
uses: ./.github/workflows/test.yml | |
with: | |
system: ${{ matrix.system }} | |
jvm: ${{ matrix.jvm }} | |
scala: ${{ matrix.scala }} | |
espresso: ${{ matrix.espresso }} | |
circt: ${{ matrix.circt }} | |
ref: ${{ matrix.ref }} | |
# 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 |