From 1382a9d4ead4b133418c761bd10784b2e31296e7 Mon Sep 17 00:00:00 2001 From: Julien Cohen-Adad Date: Sun, 27 Oct 2024 14:42:45 -0400 Subject: [PATCH] Update run_notebooks.yml Organize github action workflow as multiple dependent jobs --- .github/workflows/run_notebooks.yml | 52 +++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/.github/workflows/run_notebooks.yml b/.github/workflows/run_notebooks.yml index 02f83ba..16bb676 100644 --- a/.github/workflows/run_notebooks.yml +++ b/.github/workflows/run_notebooks.yml @@ -6,8 +6,43 @@ on: - main # Trigger the action on the main branch jobs: + # First job: Clear outputs with nbstripout + clear-outputs: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install nbstripout + run: | + pip install nbstripout + nbstripout --install + + - name: Strip notebook outputs + run: | + find . -name "*.ipynb" -exec nbstripout --force --keep-count {} + + + - name: Check for changes + run: git status + + - name: Commit cleaned notebooks if needed + run: | + git config --global user.email "action@github.com" + git config --global user.name "GitHub Action" + git add . + git commit -m "Auto-strip notebook outputs" || echo "No changes to commit" + git push || echo "Nothing to push" + + # Second job: Run the notebooks run-notebooks: runs-on: ubuntu-latest + needs: clear-outputs # Ensure this job runs after 'clear-outputs' steps: - name: Checkout repository @@ -42,19 +77,20 @@ jobs: echo "Executing $notebook" jupyter nbconvert --to notebook --execute --allow-errors --inplace \ --output executed_notebooks/$(basename $notebook) $notebook \ - 2>&1 | tee -a notebook_execution.log || echo "Execution failed for $notebook" + 2>&1 | tee -a notebook_execution.log || exit 1 done - - name: List Executed Notebooks (Debug Step) - run: | - echo "Listing executed notebooks:" - ls -l executed_notebooks || echo "No notebooks found." + # Third job: Deploy to GitHub Pages (depends on run-notebooks) + deploy: + runs-on: ubuntu-latest + needs: run-notebooks # Ensure this job runs after 'run-notebooks' + steps: - name: Copy Executed Notebooks to Pages Directory run: | COMMIT_SHA=$(git rev-parse --short HEAD) mkdir -p gh-pages/$COMMIT_SHA - cp executed_notebooks/*.ipynb gh-pages/$COMMIT_SHA/ || echo "No executed notebooks to copy." + cp executed_notebooks/*.ipynb gh-pages/$COMMIT_SHA/ - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 @@ -62,7 +98,3 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: gh-pages publish_branch: gh-pages - - - name: Success or Failure Message - if: failure() - run: echo "Notebooks executed with errors, but pushed to GitHub Pages."