Skip to content

Simplified CI for tutorials + Tutorial Docs #3

Simplified CI for tutorials + Tutorial Docs

Simplified CI for tutorials + Tutorial Docs #3

name: chipyard-tutorials
# TODO: figure out when to run tutorials
on:
# run ci on pull requests targeting following branches (runs on the merge commit)
pull_request:
branches:
- main
- '1.[0-9]*.x'
# nicer shell to run commands in
defaults:
run:
shell: bash -leo pipefail {0}
env:
CHIPYARD_DIR: ${{ secrets.BUILDDIR }}/cy-ci-shared/cy-${{ github.sha }}
JAVA_TMP_DIR: /tmp/cy-${{ github.sha }}-full
jobs:
cancel-prior-workflows:
name: Cancel Prior Workflows
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
# example of running a tutorial given a pre-made script
first-verilog-build-tutorial:
name: First Verilog Build Tutorial
needs: [cancel-prior-workflows]
runs-on: as4
steps:
# workaround actions/checkout not 'cleaning' submodules on new checkouts. see https://github.com/actions/checkout/issues/358
- name: Delete old checkout
run: |
rm -rf ${{ github.workspace }}/* || true
rm -rf ${{ github.workspace }}/.* || true
- uses: actions/checkout@v3
# copy repository to globally visible area (useful for if tutorials need to be split across multiple GH-A jobs).
# in this case, a tutorial run is within a single GH-A job so you could just use the $GITHUB_WORKSPACE
- name: Setup repository
run: |
git clone ${{ github.workspace }} $CHIPYARD_DIR
mkdir $JAVA_TMP_DIR
# a script with all the tutorial commands
- name: Run tutorial
run: |
cd $CHIPYARD_DIR # cd's into globally visible directory 1st (otherwise would run out of the $GITHUB_WORKSPACE which is per-job)
scripts/tutorial-first-verilog-build.sh
- name: Delete repository (and other misc. data)
if: ${{ always() }} # always run at the end
run: |
rm -rf ${{ env.REMOTE_WORK_DIR }}
rm -rf ${{ env.JAVA_TMP_DIR }}
# example of running a tutorial from an auto-generated script built from .rst
first-verilog-build-automated-tutorial:
name: First Verilog Build Automated Tutorial
needs: [cancel-prior-workflows]
runs-on: as4
steps:
# workaround actions/checkout not 'cleaning' submodules on new checkouts. see https://github.com/actions/checkout/issues/358
- name: Delete old checkout
run: |
rm -rf ${{ github.workspace }}/* || true
rm -rf ${{ github.workspace }}/.* || true
- uses: actions/checkout@v3
# copy repository to globally visible area (useful for if tutorials need to be split across multiple GH-A jobs).
# in this case, a tutorial run is within a single GH-A job so you could just use the $GITHUB_WORKSPACE
- name: Setup repository
run: |
git clone ${{ github.workspace }} $CHIPYARD_DIR
mkdir $JAVA_TMP_DIR
# run the autogenerated script with all the tutorial commands
- name: Run tutorial
run: |
cd $CHIPYARD_DIR # cd's into globally visible directory 1st (otherwise would run out of the $GITHUB_WORKSPACE which is per-job)
scripts/generate-script-from-tutorial-rst.py docs/Tutorials/First-Verilog-Build.rst tutorial.sh
echo "Created tutorial.sh >>>" && cat tutorial.sh && echo "<<< Done tutorial.sh"
chmod +x tutorial.sh
./tutorial.sh
- name: Delete repository (and other misc. data)
if: ${{ always() }} # always run at the end
run: |
rm -rf ${{ env.REMOTE_WORK_DIR }}
rm -rf ${{ env.JAVA_TMP_DIR }}