forked from chipsalliance/chisel
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ci] Refactor "test.yml" into Reusable Workflow (chipsalliance#3459)
Change the monolithic test.yml Continuous Integration GitHub Action into a reusable workflow that is called by a new "ci.yml" workflow. The check-tests/all_tests_passed are moved into "ci.yml" as are publishing and deploy jobs. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
- Loading branch information
Showing
2 changed files
with
146 additions
and
117 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
name: Continuous Integration | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
push: | ||
tags: | ||
- '*' | ||
branches: | ||
- main | ||
- '*.x' | ||
|
||
jobs: | ||
ci: | ||
name: ci | ||
strategy: | ||
matrix: | ||
system: ["ubuntu-20.04"] | ||
jvm: [8] | ||
scala: ["2.13.11"] | ||
espresso: ["2.4"] | ||
circt: ["firtool-1.48.0"] | ||
uses: ./.github/workflows/test.yml | ||
with: | ||
system: ${{ matrix.system }} | ||
jvm: ${{ matrix.jvm }} | ||
scala: ${{ matrix.scala }} | ||
espresso: ${{ matrix.espresso }} | ||
circt: ${{ matrix.circt }} | ||
|
||
# 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-20.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-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 }} | ||
|
||
# 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 | ||
with: | ||
fetch-depth: 0 | ||
- name: Install CIRCT | ||
uses: ./.github/workflows/install-circt | ||
with: | ||
github-token: ${{ github.token }} | ||
- 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 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 }} | ||
|
||
deploy_website: | ||
name: Deploy Website | ||
runs-on: ubuntu-latest | ||
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@v3 | ||
with: | ||
name: website | ||
- name: Untar built website | ||
run: tar zxf website.tar.gz | ||
- name: Deploy Website to GitHub Pages (From Main Branch) | ||
uses: JamesIves/github-pages-deploy-action@3.7.1 | ||
with: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
BRANCH: gh-pages | ||
FOLDER: website/docs/target/site |
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