fix git commit issue #12
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: 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 | |
if [ -d gallery ]; then | |
git rm -r --cached gallery | |
else | |
echo "gallery folder not found, No cleanup, continue to commit...." | |
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 | |
# 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 |