Skip to content

use shell parameter expansion to get corect relative path and add mis… #11

use shell parameter expansion to get corect relative path and add mis…

use shell parameter expansion to get corect relative path and add mis… #11

Workflow file for this run

name: Render Quarto Files and Deploy to GitHub Pages
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch: # Manual trigger
jobs:
render_quarto:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Build Docker image
run: |
docker build -t demo-quarto-image .
- name: Create gallery directory on the host
run: |
echo 'Creating gallery directory...'
mkdir -p gallery && chmod -R 777 gallery
echo 'gallery directory created.'
- name: Run Quarto in Docker container
run: |
docker run --rm -v ${{ github.workspace }}:/workspace -w /workspace demo-quarto-image bash -c "
source /opt/venv/bin/activate
echo 'activated virtualenv.'
chmod +x /workspace/r/install_quarto_extensions.expect
/workspace/r/install_quarto_extensions.expect
quarto list extensions
FOLDERS=(python r)
echo 'Folders to process: \${FOLDERS[@]}'
for FOLDER in \"\${FOLDERS[@]}\"; do
echo \"Searching for .qmd and .ipynb files in /workspace/\$FOLDER...\"
find \"/workspace/\$FOLDER\" \( -name '*.qmd' -o -name '*.ipynb' \) | while read -r file; do
echo \"Processing file: \$file\"
# Remove the /workspace prefix from the file path
relative_dir=\$(dirname \"\${file#'/workspace/'}\")
target_dir=\"/workspace/gallery/\$relative_dir\"
echo \"Creating target directory: \$target_dir\"
mkdir -p \"\$target_dir\" && echo \"Directory \$target_dir created.\"
echo \"Attempting to render \$file with execution...\"
if quarto render \"\$file\" --to html --output-dir \"\$target_dir\"; then
echo \"Successfully rendered \$file with execution.\"
else
echo \"Failed to render \$file with execution. Rendering without execution...\"
if quarto render \"\$file\" --to html --no-execute --output-dir \"\$target_dir\"; then
echo \"Successfully rendered \$file without execution.\"
else
echo \"Rendering failed for \$file, even without execution.\"
fi
fi
done
done"
- name: Generate Index HTML
run: |
ls -laR gallery
echo "<html><body><h1>Gallery Index</h1><ul>" > gallery/index.html
find gallery -name "*.html" | while read -r file; do
# Remove the 'gallery/' prefix from the file path
relative_path="${file#gallery/}"
file_name=$(basename "$file")
echo "<li><a href=\"./$relative_path\">$file_name</a></li>" >> gallery/index.html
done
echo "</ul></body></html>" >> gallery/index.html
- name: Upload HTML output
uses: actions/upload-artifact@v4
with:
name: gallery
path: gallery/
- name: Set up Git user
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
- name: Commit and Push to docs branch
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
ls -laR .
# Fetch all branches
git fetch origin
# Check if the docs branch exists, create it if not
if git show-ref --quiet refs/heads/docs; then
git checkout docs
else
git checkout --orphan docs
fi
# Add, commit, and push changes
# Check if there are changes to commit
if git diff-index --quiet HEAD --; then
echo "No changes to commit."
else
# Commit and push changes
# First Remove any files in the gallery directory that no longer exist locally
git rm -r --cached gallery
# Add all current changes from the gallery folder
git add -A gallery
git commit -m "Update rendered Quarto files for GitHub Pages (commit: ${{ github.sha }})"
git push origin docs --force
fi