Simplified CI for tutorials + Tutorial Docs #3
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: 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 }} |