Skip to content

Commit

Permalink
Update workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
avahoffman committed Nov 1, 2024
1 parent b8adbce commit 46b3977
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 45 deletions.
104 changes: 60 additions & 44 deletions .github/workflows/render-all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
with:
files: config_automation.yml # Pass a space-separated list of configuration files. Rightmost files take precedence.
outputs:
toggle_bookdown: "${{ env.RENDER_BOOKDOWN }}"
toggle_website: "${{ env.RENDER_WEBSITE }}"
toggle_coursera: "${{ env.RENDER_COURSERA }}"
toggle_leanpub: "${{ env.RENDER_LEANPUB }}"
toggle_feedback_link: "${{ env.FEEDBACK_LINK }}"
Expand All @@ -61,7 +61,6 @@ jobs:
runs-on: ubuntu-latest
container:
image: ${{needs.yaml-check.outputs.rendering_docker_image}}
if: ${{needs.yaml-check.outputs.toggle_bookdown == 'yes'}}

steps:
- name: checkout
Expand All @@ -78,7 +77,10 @@ jobs:
# We want a fresh run of the renders each time
- name: Delete old docs/*
run: rm -rf docs/*
run: |
git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY}
git fetch origin
git pull --rebase --allow-unrelated-histories --strategy-option=ours
# Make sure the link for AnVIL feedback is prepopulated for the specific course
- name: Set up feedback link
Expand All @@ -88,53 +90,51 @@ jobs:
git add _output.yml
git commit -m 'Set up feedback link' || echo "No changes to commit"
# Run bookdown rendering
# Run Rmd rendering
- name: Run bookdown render
id: bookdown
if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }}
run: |
rm -rf docs/*
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"
- name: Render quarto version
id: quarto
if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }}
run: Rscript -e "quarto::quarto_render('.')"

# 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'
- name: Check on Rmd render steps
if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }}
run: |
echo Bookdown status ${{steps.bookdown.outcome}}
exit 1
if [${{steps.bookdown.outcome}} != 'success']; then
exit 1
fi
# Commit the rendered bookdown files
- name: Commit rendered bookdown files
- name: Check on quarto render steps
if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }}
run: |
echo Quarto status ${{steps.quarto.outcome}}
if [${{steps.quarto.outcome}} != 'success']; then
exit 1
fi
# Commit the rendered course files
- name: Commit rendered course 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 --rebase --allow-unrelated-histories --strategy-option=ours
git commit -m 'Render course' || echo "No changes to commit"
git status docs/*
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]
needs: [yaml-check, render-course]
runs-on: ubuntu-latest
container:
image: ${{needs.yaml-check.outputs.rendering_docker_image}}
Expand All @@ -152,13 +152,24 @@ jobs:
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
id: tocless
- 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:
Expand All @@ -174,7 +185,7 @@ jobs:
needs: [yaml-check, build-collection, render-tocless]
runs-on: ubuntu-latest
container:
image: jhudsl/ottrpal:main
image: jhudsl/ottrpal
if: ${{needs.yaml-check.outputs.toggle_leanpub == 'yes'}}

steps:
Expand All @@ -189,6 +200,10 @@ jobs:
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
Expand All @@ -209,20 +224,19 @@ jobs:
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 --rebase --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: |
echo needs.yaml-check.outputs.toggle_make_book_txt == 'yes'
echo needs.yaml-check.outputs.toggle_make_book_txt
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}}'), \
make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'yes'}}'), \
quiz_dir = NULL)"
- name: Run ottrpal::bookdown_to_embed_leanpub
Expand All @@ -231,7 +245,7 @@ jobs:
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}}'))"
make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'yes'}}'))"
# Commit the rendered Leanpub files
- name: Commit rendered Leanpub files
Expand All @@ -243,7 +257,8 @@ jobs:
git add --force resources/*
git add --force docs/*
git commit -m 'Render Leanpub' || echo "No changes to commit"
git pull --rebase --allow-unrelated-histories --strategy-option=ours
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:
Expand All @@ -266,27 +281,28 @@ jobs:
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 == 'yes' && needs.yaml-check.outputs.toggle_quiz_check == 'yes'
id: coursera
run: Rscript -e "ottrpal::convert_coursera_quizzes()"

# Commit the rendered bookdown files
# 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: |
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 status
git push -u origin main || echo "No changes to push"
2 changes: 1 addition & 1 deletion config_automation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ docker-test: no

##### Renderings run upon merge to main branch #####
# Rendering each platform's content
render-bookdown: yes
render-website: yes
render-leanpub: no
render-coursera: no

Expand Down

0 comments on commit 46b3977

Please sign in to comment.