Merge pull request #32 from fhdsl/kweav-audit-patch #33
This file contains hidden or 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
# Candace Savonen 2021 | |
# Updated April 2025 | |
name: Render all output courses | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ main, staging ] | |
paths: | |
- '*.qmd' | |
- '*.Rmd' | |
- assets/* | |
- quizzes/* | |
jobs: | |
yaml-check: | |
name: Load user automation choices | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
# Use the yaml-env-action action. | |
- name: Load environment from YAML | |
uses: doughepi/yaml-env-action@v1.0.0 | |
with: | |
files: config_automation.yml # Pass a space-separated list of configuration files. Rightmost files take precedence. | |
outputs: | |
toggle_website: "${{ env.RENDER_WEBSITE }}" | |
toggle_coursera: "${{ env.RENDER_COURSERA }}" | |
toggle_leanpub: "${{ env.RENDER_LEANPUB }}" | |
make_book_txt: "${{ env.MAKE_BOOK_TXT }}" | |
rendering_docker_image: "${{ env.RENDERING_DOCKER_IMAGE }}" | |
toggle_quiz_check: "${{ env.CHECK_QUIZZES }}" | |
render-course: | |
name: Render course preview | |
needs: yaml-check | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GH_PAT }} | |
- name: Run render | |
id: render | |
uses: ottrproject/ottr-preview@main | |
with: | |
toggle_website: ${{needs.yaml-check.outputs.toggle_website}} | |
preview: false | |
token: ${{ secrets.GH_PAT }} | |
docker_image: ${{needs.yaml-check.outputs.rendering_docker_image}} | |
render-tocless: | |
name: Render TOC-less version for Leanpub or Coursera | |
needs: [yaml-check, render-course] | |
runs-on: ubuntu-latest | |
container: | |
image: ${{needs.yaml-check.outputs.rendering_docker_image}} | |
if: ${{needs.yaml-check.outputs.toggle_coursera == 'true' || needs.yaml-check.outputs.toggle_leanpub == 'true'}} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GH_PAT }} | |
- name: Login as github-actions bot | |
run: | | |
git config --global --add safe.directory $GITHUB_WORKSPACE | |
git config --global user.name 'github-actions[bot]' | |
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} | |
git fetch origin | |
git pull --rebase --allow-unrelated-histories --strategy-option=ours | |
# Rendered content for Leanpub and Coursera is very similar. | |
# This job creates a shared scaffold for both. | |
- name: Run TOC-less version of render -- Rmd version | |
if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} | |
id: tocless_rmd | |
run: Rscript -e "ottrpal::render_without_toc()" | |
- name: Run TOC-less version of render -- quarto version | |
id: tocless_quarto | |
if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} | |
run: | | |
Rscript -e "quarto::quarto_render('.', metadata = list(sidebar = F, toc = F), | |
quarto_args = c('--output-dir', 'docs/no_toc/'))" | |
# Commit the TOC-less version files | |
- name: Commit tocless bookdown files | |
env: | |
GH_PAT: ${{ secrets.GH_PAT }} | |
run: | | |
git add --force docs/no_toc* | |
git commit -m 'Render toc-less' || echo "No changes to commit" | |
git status docs/no_toc* | |
git push --force -u origin main || echo "No changes to push" | |
render-leanpub: | |
name: Finish Leanpub prep | |
needs: [yaml-check, render-tocless] | |
runs-on: ubuntu-latest | |
container: | |
image: jhudsl/base_ottr:dev | |
if: ${{needs.yaml-check.outputs.toggle_leanpub == 'true'}} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GH_PAT }} | |
- name: Login as github actions bot | |
run: | | |
git config --global --add safe.directory $GITHUB_WORKSPACE | |
git config --global user.name 'github-actions[bot]' | |
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} | |
git fetch origin | |
git pull --rebase --allow-unrelated-histories --strategy-option=ours | |
ls docs/no_toc | |
# Create screenshots | |
- name: Run the screenshot creation | |
run: | | |
# Remove old folder | |
rm -rf resources/chapt_screen_images | |
# Make new screenshots | |
chapt_urls=$(Rscript -e " \ | |
Sys.setenv(CHROMOTE_CHROME = '/usr/bin/vivaldi'); \ | |
ottrpal::make_screenshots( \ | |
token = '${{ secrets.GH_PAT }}', \ | |
repo = '$GITHUB_REPOSITORY' )" \ | |
) | |
# We want a fresh run of the renders each time | |
- name: Delete manuscript/ | |
env: | |
GH_PAT: ${{ secrets.GH_PAT }} | |
run: | | |
rm -rf manuscript/ | |
git add . | |
git commit -m 'Delete manuscript folder' || echo "No changes to commit" | |
git push -u origin main || echo "No changes to push" | |
- name: Run ottrpal::bookdown_to_embed_leanpub -- No Quiz | |
if: ${{ needs.yaml-check.outputs.toggle_quiz_check != 'true'}} | |
run: | | |
Rscript -e "ottrpal::website_to_embed_leanpub( | |
render = FALSE, \ | |
chapt_img_key = 'resources/chapt_screen_images/chapter_urls.tsv', \ | |
make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'true'}}'), \ | |
quiz_dir = NULL)" | |
- name: Run ottrpal::bookdown_to_embed_leanpub -- with Quiz | |
if: ${{ needs.yaml-check.outputs.toggle_quiz_check == 'true'}} | |
run: | | |
Rscript -e "ottrpal::website_to_embed_leanpub( | |
render = FALSE, \ | |
chapt_img_key = 'resources/chapt_screen_images/chapter_urls.tsv', \ | |
make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'true'}}'))" | |
# Commit the rendered Leanpub files | |
- name: Commit rendered Leanpub files | |
env: | |
GH_PAT: ${{ secrets.GH_PAT }} | |
run: | | |
git add --force manuscript/* || "No files to add" | |
git add --force resources/* || "No files to add" | |
git add --force docs/* || "No files to add" | |
git commit -m 'Render Leanpub' || echo "No changes to commit" | |
git status docs/* | |
git pull --rebase --allow-unrelated-histories --strategy-option=ours --autostash | |
git push --force --set-upstream origin main || echo "No changes to push" | |
render-coursera: | |
name: Finish Coursera prep | |
needs: [yaml-check, render-tocless] | |
runs-on: ubuntu-latest | |
container: | |
image: ${{needs.yaml-check.outputs.rendering_docker_image}} | |
if: ${{needs.yaml-check.outputs.toggle_coursera == 'true'}} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GH_PAT }} | |
- name: Login as github action | |
run: | | |
git config --global --add safe.directory $GITHUB_WORKSPACE | |
git config --global user.name 'github-actions[bot]' | |
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} | |
git fetch origin | |
git pull --rebase --allow-unrelated-histories --strategy-option=ours | |
# Run Coursera version | |
- name: Convert Leanpub quizzes to Coursera | |
if: needs.yaml-check.outputs.toggle_leanpub == 'true' && needs.yaml-check.outputs.toggle_quiz_check == 'true' | |
id: coursera | |
run: Rscript -e "ottrpal::convert_coursera_quizzes()" | |
# Commit the rendered files | |
# Only commit coursera quizzes if the directory is present | |
- name: Commit rendered Coursera files | |
env: | |
GH_PAT: ${{ secrets.GH_PAT }} | |
run: | | |
if [ -d 'coursera_quizzes' ]; then | |
git add --force coursera_quizzes/* | |
fi | |
git add --force resources/* | |
git add --force docs/* | |
git commit -m 'Render Coursera quizzes' || echo "No changes to commit" | |
git status | |
git push --force -u origin main || echo "No changes to push" |