From 6d3061d7b9a41f083939988d5a20fa0235a21950 Mon Sep 17 00:00:00 2001 From: cansavvy Date: Fri, 10 Jan 2025 18:58:52 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=94=84=20Synced=20local=20'.github/wo?= =?UTF-8?q?rkflows/'=20with=20remote=20'.github/workflows/'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-2.1.0 --- .github/workflows/check-url.yml | 10 +++ .github/workflows/pull_request.yml | 74 ++++++++++++++------ .github/workflows/render-all.yml | 109 +++++++++++++++++++---------- 3 files changed, 134 insertions(+), 59 deletions(-) diff --git a/.github/workflows/check-url.yml b/.github/workflows/check-url.yml index a4370498..090f12f6 100644 --- a/.github/workflows/check-url.yml +++ b/.github/workflows/check-url.yml @@ -78,6 +78,16 @@ jobs: run: | echo ${{ steps.check-report.outputs.error_url }} echo ${{ steps.check-report.outputs.error_num }} + + # Commit file + - name: Commit tocless bookdown files + if: ${{ steps.check-report.outputs.error_num >= 1 }} + env: + GH_PAT: ${{ secrets.GH_PAT }} + run: | + git add --force check_reports/url_checks.tsv + git commit -m 'Add spell check file' || echo "No changes to commit" + git push --set-upstream origin preview-spell-error || echo echo branch exists remotely - name: Find issues id: find-issue diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 2e122ba7..091af950 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 @@ -17,7 +17,6 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - token: ${{ secrets.GH_PAT }} # Use the yaml-env-action action. - name: Load environment from YAML @@ -39,15 +38,18 @@ 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 }}" toggle_quiz_check: "${{ env.CHECK_QUIZZES }}" + toggle_md_linter: "${{ env.MARKDOWN_LINTER }}" + toggle_readability: "${{ env.READABILITY_REPORT }}" toggle_render_preview: "${{ env.RENDER_PREVIEW }}" rendering_docker_image: "${{ env.RENDERING_DOCKER_IMAGE }}" @@ -60,8 +62,9 @@ jobs: with: check_type: spelling error_min: 3 - gh_pat: secrets.GH_PAT branch_name: ${GITHUB_HEAD_REF} + secrets: + gh_pat: ${{ secrets.GH_PAT }} url-check: name: Check URLs @@ -71,8 +74,9 @@ jobs: with: check_type: urls error_min: 0 - gh_pat: secrets.GH_PAT branch_name: ${GITHUB_HEAD_REF} + secrets: + gh_pat: ${{ secrets.GH_PAT }} quiz-check: name: Check quiz formatting @@ -82,8 +86,9 @@ jobs: with: check_type: quiz_format error_min: 0 - gh_pat: secrets.GH_PAT branch_name: ${GITHUB_HEAD_REF} + secrets: + gh_pat: ${{ secrets.GH_PAT }} ############################# Style the code ################################### style-code: @@ -101,15 +106,35 @@ 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" +############################# Readability Report ################################### + + readability-report: + name: Readability report + needs: yaml-check + runs-on: ubuntu-latest + if: ${{needs.yaml-check.outputs.toggle_readability == 'yes'}} + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Readability report + uses: Rebilly/lexi@v2 + with: + github-token: ${{ secrets.GH_PAT }} + glob: '**/*.md' + ############################# Render Preview ################################### render-preview: @@ -142,23 +167,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 +223,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/render-all.yml b/.github/workflows/render-all.yml index d1fa46ae..56dffb71 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,8 @@ on: push: branches: [ main, staging ] paths: - - '**.Rmd' + - '*.qmd' + - '*.Rmd' - assets/* - quizzes/* @@ -27,20 +28,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 +57,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 --allow-unrelated-histories --strategy-option=ours - git push -u origin main || echo "No changes to push" + git commit -m 'Render course' || echo "No changes to commit" + git status docs/* + git push --force -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,31 +124,40 @@ 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 --set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours - git push -u origin main || echo "No changes to push" + 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/ottrpal:main + image: jhudsl/ottrpal if: ${{needs.yaml-check.outputs.toggle_leanpub == 'yes'}} steps: @@ -145,6 +172,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 @@ -158,6 +189,7 @@ jobs: --git_pat ${{ secrets.GH_PAT }} \ --repo $GITHUB_REPOSITORY \ --output_dir resources/chapt_screen_images) + rm make_screenshots.R # We want a fresh run of the renders each time - name: Delete manuscript/ @@ -165,20 +197,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 --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 @@ -187,7 +218,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 +230,8 @@ jobs: 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 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 +254,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 +264,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 +277,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 push -u origin main || echo "No changes to push" + git status + git push --force -u origin main || echo "No changes to push" From 951fb9bb7a488b4e5b2fe935249d3ccb538d999e Mon Sep 17 00:00:00 2001 From: cansavvy Date: Fri, 10 Jan 2025 18:58:52 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=94=84=20Synced=20local=20'config=5Fa?= =?UTF-8?q?utomation.yml'=20with=20remote=20'config=5Fautomation.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-2.1.0 --- config_automation.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/config_automation.yml b/config_automation.yml index 8e70217b..bcbe6135 100644 --- a/config_automation.yml +++ b/config_automation.yml @@ -1,7 +1,7 @@ ##### Checks run at pull request ##### # Check quiz formatting -check-quizzes: yes +check-quizzes: no # Check that urls in the content are not broken url-checker: yes # Render preview of content with changes (Rmd's and md's are checked) @@ -10,18 +10,24 @@ render-preview: yes spell-check: yes # Style any R code style-code: yes +# Would you like your markdown files to be checked for formatting +markdown-linter: yes +# Would you like a readability report on your markdowns? +readability-report: yes # Test build the docker image if any docker-relevant files have been changed docker-test: no +# Should URLs be tested periodically? +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: yes +render-coursera: no -## Automate the creation of Book.txt file? TRUE/FALSE? +## Automate the creation of Book.txt file? yes/no ## This is only relevant if render-leanpub is yes, otherwise it will be ignored -make-book-txt: TRUE +make-book-txt: yes # What docker image should be used for rendering? # The default is jhudsl/base_ottr:main