From beb1e0da7161fcf4643f186b572fc70e73d3256a Mon Sep 17 00:00:00 2001 From: Candace Savonen Date: Tue, 16 Jul 2024 15:59:32 -0400 Subject: [PATCH] Make GHA yml's compatible with quarto (#746) * Update render-all.yml * add if statement * Update config_automation.yml * Add quarto rendering * Update pull request.yml * Add fhdsl/ottr to sync.yml * Update with the changes on fhdsl/ottr * Fix styler part 3 * Updates to git handling * Some rebases and some rearrangements of git stuffs --- .github/sync.yml | 3 +- .github/workflows/pull_request.yml | 42 +++++++----- .github/workflows/release-notes.yml | 2 +- .github/workflows/render-all.yml | 101 ++++++++++++++++++---------- config_automation.yml | 2 +- 5 files changed, 95 insertions(+), 55 deletions(-) diff --git a/.github/sync.yml b/.github/sync.yml index 865d2fd7..9510ba27 100755 --- a/.github/sync.yml +++ b/.github/sync.yml @@ -68,6 +68,7 @@ group: fhdsl/Intermediate-Git-GitHub fhdsl/GitHub_Automation_for_Scientists williamtmillsiv/introduction_to_bioinformatics + fhdsl/OTTR_Quarto fhdsl/bench_to_bytes fhdsl/Intermediate_R fhdsl/DataViz_Practice @@ -148,7 +149,7 @@ group: deleteOrphaned: true repos: | C-MOOR/C-MOOR_Template - + - files: - source: config_automation.yml dest: config_automation.yml diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 2e122ba7..5cd835ee 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,5 +1,5 @@ # Candace Savonen 2021 -# Updated Jan 2023 +# Updated May 2024 name: Pull Request @@ -39,11 +39,12 @@ jobs: branch_name='preview-${{ github.event.pull_request.number }}' echo branch doesnt exist git checkout -b $branch_name || echo branch exists - git push --set-upstream origin $branch_name || echo echo branch exists remotely + git push --set-upstream origin $branch_name || echo branch exists remotely shell: bash outputs: + toggle_website: "${{ env.RENDER_WEBSITE }}" toggle_spell_check: "${{ env.SPELL_CHECK }}" toggle_style_code: "${{ env.STYLE_CODE }}" toggle_url_check: "${{ env.URL_CHECKER }}" @@ -101,13 +102,13 @@ jobs: fetch-depth: 0 - name: Run styler - run: Rscript -e "styler::style_file(list.files(pattern = 'Rmd$', recursive = TRUE, full.names = TRUE));warnings()" + run: Rscript -e "styler::style_file(list.files(pattern = '(R|q)md$', recursive = FALSE, full.names = TRUE));warnings()" - name: Commit styled files run: | git config --system --add safe.directory "$GITHUB_WORKSPACE" - git add \*.Rmd - git commit -m 'Style Rmds' || echo "No changes to commit" + git add \*md + git commit -m 'Style *mds' || echo "No changes to commit" git push origin || echo "No changes to commit" ############################# Render Preview ################################### @@ -142,23 +143,32 @@ jobs: # Run bookdown rendering - name: Run bookdown render id: bookdown + if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} run: Rscript -e "bookdown::render_book('index.Rmd', output_format = 'all')" - # Run TOC-less version - # 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()" + # Run quarto rendering + - 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 steps - if: steps.bookdown.outcome != 'success' || steps.tocless.outcome != 'success' + - name: Check on Rmd render steps + if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} run: | echo Bookdown status ${{steps.bookdown.outcome}} - echo Toc-less status ${{steps.tocless.outcome}} - exit 1 + if [${{steps.bookdown.outcome}} != 'success']; then + exit 1 + fi + + - 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 - name: Website preview for download run: zip website-preview.zip docs/* -r @@ -189,12 +199,10 @@ jobs: run: | course_name=$(head -n 1 _bookdown.yml | cut -d'"' -f 2| tr " " "-") bookdown_link=$(echo "https://htmlpreview.github.io/?https://raw.githubusercontent.com/$GITHUB_REPOSITORY/preview-${{ github.event.pull_request.number }}/docs/index.html") - tocless_link=$(echo "https://htmlpreview.github.io/?https://raw.githubusercontent.com/$GITHUB_REPOSITORY/preview-${{ github.event.pull_request.number }}/docs/no_toc/index.html") docx_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/docs/$course_name.docx") zip_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/website-preview.zip") echo "zip_link=$zip_link" >> $GITHUB_OUTPUT echo "bookdown_link=$bookdown_link" >> $GITHUB_OUTPUT - echo "tocless_link=$tocless_link" >> $GITHUB_OUTPUT echo "docx_link=$docx_link" >> $GITHUB_OUTPUT echo "time=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT echo "commit_id=$GITHUB_SHA" >> $GITHUB_OUTPUT diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index d76e0e2f..30a6ab7d 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: mshick/add-pr-comment@v1 + - uses: mshick/add-pr-comment@v2 if: ${{ github.head_ref == 'repo-sync/OTTR_Template/default' }} with: message: | diff --git a/.github/workflows/render-all.yml b/.github/workflows/render-all.yml index a1b22814..b2e39b2c 100644 --- a/.github/workflows/render-all.yml +++ b/.github/workflows/render-all.yml @@ -1,5 +1,5 @@ - -# Candace Savonen Apr 2021 +# Candace Savonen 2021 +# Updated May 2024 name: Render all output courses @@ -8,7 +8,7 @@ on: push: branches: [ main, staging ] paths: - - '**.Rmd' + - '**md$' - assets/* - quizzes/* @@ -27,20 +27,19 @@ 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 }}" make_book_txt: "${{ env.MAKE_BOOK_TXT }}" rendering_docker_image: "${{ env.RENDERING_DOCKER_IMAGE }}" toggle_quiz_check: "${{ env.CHECK_QUIZZES }}" - render-bookdown: - name: Render bookdown + render-course: + name: Render course preview 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 @@ -57,38 +56,56 @@ 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 - # 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)" + - 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}} @@ -106,23 +123,32 @@ 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: 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/no_toc* git commit -m 'Render toc-less' || echo "No changes to commit" - git pull --rebase --allow-unrelated-histories --strategy-option=ours + git status docs/no_toc* git push -u origin main || echo "No changes to push" render-leanpub: @@ -130,7 +156,7 @@ jobs: needs: [yaml-check, render-tocless] runs-on: ubuntu-latest container: - image: jhudsl/ottrpal:main + image: jhudsl/ottrpal if: ${{needs.yaml-check.outputs.toggle_leanpub == 'yes'}} steps: @@ -145,6 +171,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 @@ -165,20 +195,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 --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 @@ -187,7 +216,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 @@ -199,7 +228,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: @@ -222,6 +252,9 @@ 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 @@ -229,14 +262,12 @@ jobs: 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 @@ -244,5 +275,5 @@ jobs: 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" diff --git a/config_automation.yml b/config_automation.yml index 1a1a5776..9258b069 100644 --- a/config_automation.yml +++ b/config_automation.yml @@ -17,7 +17,7 @@ url-check-periodically: yes ##### Renderings run upon merge to main branch ##### # Rendering each platform's content -render-bookdown: yes +render-website: rmd render-leanpub: yes render-coursera: no