Merge pull request #224 from jhudsl/update-student-stuff #124
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
# Candace Savonen Apr 2021 | |
name: Render all output courses | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ main, staging ] | |
paths: | |
- '**.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/[email protected] | |
with: | |
files: config_automation.yml # Pass a space-separated list of configuration files. Rightmost files take precedence. | |
outputs: | |
toggle_bookdown: "${{ env.RENDER_BOOKDOWN }}" | |
toggle_coursera: "${{ env.RENDER_COURSERA }}" | |
toggle_leanpub: "${{ env.RENDER_LEANPUB }}" | |
toggle_feedback_link: "${{ env.FEEDBACK_LINK }}" | |
toggle_student_guide: "${{ env.RENDER_STUDENT_GUIDE }}" | |
rendering_docker_image: "${{ env.RENDERING_DOCKER_IMAGE }}" | |
toggle_quiz_check: "${{ env.CHECK_QUIZZES }}" | |
render-bookdown: | |
name: Render bookdown | |
needs: yaml-check | |
runs-on: ubuntu-latest | |
container: | |
image: ${{needs.yaml-check.outputs.rendering_docker_image}} | |
if: ${{needs.yaml-check.outputs.toggle_bookdown == 'yes'}} | |
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' | |
# We want a fresh run of the renders each time | |
- name: Delete old docs/* | |
run: rm -rf docs/* | |
# Make sure the link for AnVIL feedback is prepopulated for the specific course | |
- name: Set up feedback link | |
if: ${{needs.yaml-check.outputs.toggle_feedback_link == 'yes'}} | |
run: | | |
bash scripts/AnVIL_Feedback_Script.sh | |
git add _output.yml | |
git commit -m 'Set up feedback link' || echo "No changes to commit" | |
# Run bookdown rendering | |
- name: Run bookdown render | |
id: bookdown | |
run: | | |
Rscript -e "bookdown::render_book('index.Rmd', output_format = 'all'); | |
file.copy(from = 'assets', to = 'docs/assets', overwrite = TRUE)" | |
# Render a student guide if specified. This is a bit clunky because | |
# Bookdown does not work well if the files aren't named as such in the | |
# root directory | |
- name: Run student guide render | |
if: ${{needs.yaml-check.outputs.toggle_student_guide == 'yes'}} | |
id: student_guide | |
run: | | |
mkdir tmp1 | |
mv _bookdown.yml _output.yml tmp1 | |
mv student-guide/_bookdown.yml student-guide/_output.yml . | |
Rscript -e "bookdown::render_book('index.Rmd', output_format = 'all')" | |
mv _bookdown.yml _output.yml student-guide | |
mv tmp1/_bookdown.yml tmp1/_output.yml . | |
rm -r tmp1 | |
git add student-guide/* | |
git commit -m 'Create student guide' || echo "No changes to commit" | |
# This checks on the steps before it and makes sure that they completed. | |
# If the renders didn't complete we don't want to commit the file changes | |
- name: Check on render step | |
if: steps.bookdown.outcome != 'success' | |
run: | | |
echo Bookdown status ${{steps.bookdown.outcome}} | |
exit 1 | |
# Commit the rendered bookdown files | |
- name: Commit rendered bookdown files | |
env: | |
GH_PAT: ${{ secrets.GH_PAT }} | |
run: | | |
git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} | |
git fetch origin | |
git add --force docs/* | |
git commit -m 'Render bookdown' || echo "No changes to commit" | |
git pull --allow-unrelated-histories --strategy-option=ours | |
git push -u origin main || echo "No changes to push" | |
render-tocless: | |
name: Render TOC-less version for Leanpub or Coursera | |
needs: [yaml-check, render-bookdown] | |
runs-on: ubuntu-latest | |
container: | |
image: ${{needs.yaml-check.outputs.rendering_docker_image}} | |
if: ${{needs.yaml-check.outputs.toggle_coursera == 'yes' || needs.yaml-check.outputs.toggle_leanpub == 'yes'}} | |
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' | |
# Rendered content for Leanpub and Coursera is very similar. | |
# This job creates a shared scaffold for both. | |
- name: Run TOC-less version of render | |
id: tocless | |
run: Rscript -e "ottrpal::render_without_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 -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/ottrpal:main | |
if: ${{needs.yaml-check.outputs.toggle_leanpub == 'yes'}} | |
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' | |
# Create screenshots | |
- name: Run the screenshot creation | |
run: | | |
# Remove old folder | |
rm -rf resources/chapt_screen_images | |
# Make new screenshots | |
curl -o make_screenshots.R https://raw.githubusercontent.com/jhudsl/ottr-reports/main/scripts/make_screenshots.R | |
chapt_urls=$(Rscript --vanilla make_screenshots.R \ | |
--git_pat ${{ secrets.GH_PAT }} \ | |
--repo $GITHUB_REPOSITORY \ | |
--output_dir resources/chapt_screen_images) | |
# We want a fresh run of the renders each time | |
- name: Delete manuscript/ | |
env: | |
GH_PAT: ${{ secrets.GH_PAT }} | |
run: | | |
rm -rf manuscript/ | |
git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} | |
git fetch origin | |
git add . | |
git commit -m 'Delete manuscript folder' || echo "No changes to commit" | |
git pull --set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours | |
git push -u origin main || echo "No changes to push" | |
- name: Run ottrpal::bookdown_to_embed_leanpub | |
if: ${{ needs.yaml-check.outputs.toggle_quiz_check == 'no'}} | |
run: | | |
Rscript -e "ottrpal::bookdown_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}}'), \ | |
quiz_dir = NULL)" | |
- name: Run ottrpal::bookdown_to_embed_leanpub | |
if: ${{ needs.yaml-check.outputs.toggle_quiz_check == 'yes'}} | |
run: | | |
Rscript -e "ottrpal::bookdown_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}}'))" | |
# Commit the rendered Leanpub files | |
- name: Commit rendered Leanpub files | |
env: | |
GH_PAT: ${{ secrets.GH_PAT }} | |
run: | | |
mkdir -p manuscript | |
git add --force manuscript/* | |
git add --force resources/* | |
git add --force docs/* | |
git commit -m 'Render Leanpub' || echo "No changes to commit" | |
git pull --allow-unrelated-histories --strategy-option=ours | |
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 == 'yes'}} | |
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' | |
# Run Coursera version | |
- name: Convert Leanpub quizzes to Coursera | |
if: needs.yaml-check.outputs.toggle_leanpub == 'yes' && needs.yaml-check.outputs.toggle_quiz_check == 'yes' | |
id: coursera | |
run: Rscript -e "ottrpal::convert_coursera_quizzes()" | |
# Commit the rendered bookdown files | |
# Only commit coursera quizzes if the directory is present | |
- name: Commit rendered Coursera files | |
env: | |
GH_PAT: ${{ secrets.GH_PAT }} | |
run: | | |
git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} | |
git fetch origin | |
if [ -d 'coursera_quizzes' ]; then | |
git add --force coursera_quizzes/* | |
fi | |
git add --force manuscript/* | |
git add --force resources/* | |
git add --force docs/* | |
git commit -m 'Render Coursera quizzes' || echo "No changes to commit" | |
git pull --rebase --allow-unrelated-histories --strategy-option=ours | |
git push -u origin main || echo "No changes to push" |