From 57b0db0c62071b051171da8e3c1e9932d97c4369 Mon Sep 17 00:00:00 2001 From: cansavvy Date: Tue, 17 Sep 2024 20:01:31 +0000 Subject: [PATCH 1/6] =?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- --- .github/workflows/check-url.yml | 107 +++++++++++++ .github/workflows/delete-preview.yml | 2 +- .github/workflows/pull_request.yml | 78 ++++++---- .github/workflows/render-all.yml | 147 +++++++++++------- .github/workflows/transfer-rendered-files.yml | 27 ++-- 5 files changed, 265 insertions(+), 96 deletions(-) create mode 100644 .github/workflows/check-url.yml diff --git a/.github/workflows/check-url.yml b/.github/workflows/check-url.yml new file mode 100644 index 0000000..a437049 --- /dev/null +++ b/.github/workflows/check-url.yml @@ -0,0 +1,107 @@ +name: Periodic URL Check + +on: + workflow_dispatch: + schedule: + - cron: '0 0 1 * *' + +jobs: + set-up: + name: Load user automation choices + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # 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_url_check_periodically: "${{ env.URL_CHECK_PERIODICALLY }}" + + url-check: + name: Check URLs + needs: set-up + if: ${{needs.set-up.outputs.toggle_url_check_periodically == 'yes'}} + runs-on: ubuntu-latest + container: + image: jhudsl/base_ottr:main + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Delete the branch if this has been run before + - name: Delete branch locally and remotely + run: git push origin --delete preview-spell-error || echo "No branch to delete" + + # Make the branch fresh + - name: Make the branch fresh + 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' + + echo branch doesnt exist + git checkout -b preview-spell-error || echo branch exists + git push --set-upstream origin preview-spell-error || echo echo branch exists remotely + shell: bash + + - name: Run the check + uses: jhudsl/ottr-reports@main + id: check_results + continue-on-error: true + with: + check_type: urls + error_min: 1 + + - name: Declare file path and time + id: check-report + run: | + error_num=$(cat check_reports/url_checks.tsv | wc -l) + error_num="$((error_num-1))" + echo "error_num=$error_num" >> $GITHUB_OUTPUT + echo "error_url=https://github.com/${GITHUB_REPOSITORY}/blob/preview-spell-error/check_reports/url_checks.tsv" >> $GITHUB_OUTPUT + shell: bash + + - name: Stop if failure + if: steps.check_results.outcome == 'failure' + run: exit 1 + + - name: Print out error variables + run: | + echo ${{ steps.check-report.outputs.error_url }} + echo ${{ steps.check-report.outputs.error_num }} + + - name: Find issues + id: find-issue + env: + GH_PAT: ${{ secrets.GH_PAT }} + run: | + echo "$GITHUB_REPOSITORY" + curl -o find_issue.R https://raw.githubusercontent.com/jhudsl/ottr-reports/main/scripts/find_issue.R + issue_exists=$(Rscript --vanilla find_issue.R --repo $GITHUB_REPOSITORY --git_pat $GH_PAT) + echo URL issue exists: $issue_exists + echo "issue_existence=$issue_exists" >> $GITHUB_OUTPUT + + - name: If too many URL errors, then make an issue + if: ${{ steps.check-report.outputs.error_num >= 1 && steps.find-issue.outputs.issue_existence == 0}} + uses: JasonEtco/create-an-issue@v2 + with: + filename: .github/ISSUE_TEMPLATE/url-error.md + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + FILE_URL: ${{ steps.check-report.outputs.error_url }} + ERROR_NUM: ${{ steps.check-report.outputs.error_num }} + + - name: If no URL errors than delete the branch we made + if: ${{ steps.check-report.outputs.error_num < 1 }} + run: | + git config --system --add safe.directory "$GITHUB_WORKSPACE" + git push origin --delete preview-spell-error || echo "No branch to delete" diff --git a/.github/workflows/delete-preview.yml b/.github/workflows/delete-preview.yml index afd658a..faa83cc 100644 --- a/.github/workflows/delete-preview.yml +++ b/.github/workflows/delete-preview.yml @@ -18,7 +18,7 @@ jobs: # Check out current repository - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 9316682..5cd835e 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 @@ -14,9 +14,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 + token: ${{ secrets.GH_PAT }} # Use the yaml-env-action action. - name: Load environment from YAML @@ -32,16 +33,18 @@ jobs: - name: Make the branch fresh run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' 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 + 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 }}" @@ -59,6 +62,7 @@ jobs: check_type: spelling error_min: 3 gh_pat: secrets.GH_PAT + branch_name: ${GITHUB_HEAD_REF} url-check: name: Check URLs @@ -69,6 +73,7 @@ jobs: check_type: urls error_min: 0 gh_pat: secrets.GH_PAT + branch_name: ${GITHUB_HEAD_REF} quiz-check: name: Check quiz formatting @@ -79,6 +84,7 @@ jobs: check_type: quiz_format error_min: 0 gh_pat: secrets.GH_PAT + branch_name: ${GITHUB_HEAD_REF} ############################# Style the code ################################### style-code: @@ -91,18 +97,18 @@ jobs: steps: - name: Checkout files - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: 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 ################################### @@ -117,7 +123,7 @@ jobs: steps: - name: Checkout files - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 @@ -125,8 +131,8 @@ jobs: - name: Set up git checkout run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' branch_name='preview-${{ github.event.pull_request.number }}' git fetch --all @@ -137,23 +143,35 @@ 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 # Commit the rendered bookdown files - name: Commit rendered bookdown files to preview branch @@ -164,7 +182,7 @@ jobs: echo "changes=$changes" >> $GITHUB_OUTPUT git add . --force git commit -m 'Render preview' || echo "No changes to commit" - git pull --set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours + git pull --rebase --set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours git push --force || echo "No changes to commit" shell: bash @@ -181,10 +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 @@ -198,11 +216,13 @@ jobs: issue-number: ${{ github.event.pull_request.number }} body: | Re-rendered previews from the latest commit: - - See [preview of Bookdown here](${{ steps.build-components.outputs.bookdown_link }}) - - See [preview of Coursera/Leanpub version here](${{ steps.build-components.outputs.tocless_link }}) - - Download the [preview of .docx file](${{ steps.build-components.outputs.docx_link }}) + - :eyes: Quick [preview of course website here](${{ steps.build-components.outputs.bookdown_link }}) \* + - :microscope: Comprehensive [download of the course website here](${{ steps.build-components.outputs.zip_link }}) + - Download the [.docx file](${{ steps.build-components.outputs.docx_link }}) - _Updated at ${{ steps.build-components.outputs.time }} with changes from ${{ steps.build-components.outputs.commit_id }}_ + \* note not all html features will be properly displayed in the "quick preview" but it will give you a rough idea. + + _Updated at ${{ steps.build-components.outputs.time }} with changes from the latest commit ${{ steps.build-components.outputs.commit_id }}_ edit-mode: replace - name: Comment if no changes diff --git a/.github/workflows/render-all.yml b/.github/workflows/render-all.yml index 083817a..b2e39b2 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,8 +8,9 @@ on: push: branches: [ main, staging ] paths: - - '**.Rmd' + - '**md$' - assets/* + - quizzes/* jobs: @@ -18,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Use the yaml-env-action action. - name: Load environment from YAML @@ -26,68 +27,85 @@ 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 - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as jhudsl-robot + - name: Login as github actions bot run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + 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/* + 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 + + - 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 bookdown files - - name: Commit rendered bookdown files + # 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 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] + needs: [yaml-check, render-course] runs-on: ubuntu-latest container: image: ${{needs.yaml-check.outputs.rendering_docker_image}} @@ -95,33 +113,42 @@ jobs: steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as jhudsl-robot + - name: Login as github-actions bot run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + 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 --allow-unrelated-histories --strategy-option=ours + git status docs/no_toc* git push -u origin main || echo "No changes to push" render-leanpub: @@ -129,21 +156,25 @@ 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: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as jhudsl-robot + - name: Login as github actions bot run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + 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 @@ -152,7 +183,8 @@ jobs: rm -rf resources/chapt_screen_images # Make new screenshots - chapt_urls=$(Rscript --vanilla scripts/make_screenshots.R \ + 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) @@ -163,29 +195,28 @@ 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 --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' + 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 - if: needs.yaml-check.outputs.toggle_quiz_check == 'yes' + 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}}'))" + make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'yes'}}'))" # Commit the rendered Leanpub files - name: Commit rendered Leanpub files @@ -197,7 +228,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: @@ -210,16 +242,19 @@ jobs: steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as jhudsl-robot + - name: Login as github action run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + 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 @@ -227,16 +262,18 @@ 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 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 --allow-unrelated-histories --strategy-option=ours + git status git push -u origin main || echo "No changes to push" diff --git a/.github/workflows/transfer-rendered-files.yml b/.github/workflows/transfer-rendered-files.yml index 3c3577e..dae4141 100644 --- a/.github/workflows/transfer-rendered-files.yml +++ b/.github/workflows/transfer-rendered-files.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Use the yaml-env-action action. - name: Load environment from YAML @@ -42,21 +42,23 @@ jobs: if: ${{needs.yaml-check.outputs.toggle_coursera == 'yes' || needs.yaml-check.outputs.toggle_leanpub == 'yes'}} steps: + - name: Checkout from Bookdown Repo + uses: actions/checkout@v4 + with: + path: bookdown + token: ${{ secrets.GH_PAT }} + - name: Run git repo check id: git_repo_check env: GH_PAT: ${{ secrets.GH_PAT }} run: | - sudo apt-get install subversion - # What's the Quizzes repository's name? QUIZ_REPO=$(echo ${GITHUB_REPOSITORY} | sed "s/_Bookdown/ /g" | sed "s/_Template/ /g" | awk '{print $1"_Quizzes"}') echo $QUIZ_REPO - # Get repo check script - svn export --force https://github.com/${GITHUB_REPOSITORY}.git/branches/${GITHUB_REF#refs/heads/}/scripts/git_repo_check.R git_repo_check.R - # Run repo check script + curl -o git_repo_check.R https://raw.githubusercontent.com/jhudsl/ottr-reports/main/scripts/git_repo_check.R results=$(Rscript --vanilla git_repo_check.R --repo "$GITHUB_REPOSITORY" --git_pat "$GH_PAT") echo $QUIZ_REPO exists: $results @@ -65,8 +67,9 @@ jobs: - name: Checkout code from Leanpub repo if: ${{ steps.git_repo_check.outputs.git_results == 'TRUE' }} - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: + path: quizzes repository: ${{ steps.git_repo_check.outputs.leanpub_repo }} token: ${{ secrets.GH_PAT }} @@ -76,17 +79,19 @@ jobs: env: GH_PAT: ${{ secrets.GH_PAT }} run: | - # Copy over images folder - svn export --force https://github.com/${GITHUB_REPOSITORY}.git/branches/${GITHUB_REF#refs/heads/}/resources/chapt_screen_images resources/chapt_screen_images + # Copy over images folder (from bookdown to quizzes repo) + mkdir -p quizzes/resources/chapt_screen_images + cp bookdown/resources/chapt_screen_images/* quizzes/resources/chapt_screen_images - # Copy over _bookdown.yml - svn export --force https://github.com/${GITHUB_REPOSITORY}.git/branches/${GITHUB_REF#refs/heads/}/_bookdown.yml _bookdown.yml + # Copy over _bookdown.yml (from bookdown to quizzes repo) + cp bookdown/_bookdown.yml quizzes/_bookdown.yml - name: Create PR with resources files if: ${{ steps.git_repo_check.outputs.git_results == 'TRUE' }} uses: peter-evans/create-pull-request@v3 id: cpr with: + path: quizzes # Must create the PR in the Quizzes Repo token: ${{ secrets.GH_PAT }} commit-message: Copy files from Bookdown repository signoff: false From c40c7a0ea0f2f484cc569beb9efefa8840244329 Mon Sep 17 00:00:00 2001 From: cansavvy Date: Tue, 17 Sep 2024 20:01:31 +0000 Subject: [PATCH 2/6] =?UTF-8?q?=F0=9F=94=84=20Created=20local=20'.github/I?= =?UTF-8?q?SSUE=5FTEMPLATE/url-error.md'=20from=20remote=20'.github/ISSUE?= =?UTF-8?q?=5FTEMPLATE/url-error.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release- --- .github/ISSUE_TEMPLATE/url-error.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/url-error.md diff --git a/.github/ISSUE_TEMPLATE/url-error.md b/.github/ISSUE_TEMPLATE/url-error.md new file mode 100644 index 0000000..fe13196 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/url-error.md @@ -0,0 +1,8 @@ +--- +title: Broken URLs found in the course! +labels: url-error +--- +URL's in this course were just checked and some broken URLs were found. + +**Number of errors:** {{ env.ERROR_NUM }} +**File where errors are:** [url checks file here]({{ env.FILE_URL }}) From d5c5fcd56d4adccdd3ef30d07c0e1f3ca4a54609 Mon Sep 17 00:00:00 2001 From: cansavvy Date: Tue, 17 Sep 2024 20:01:31 +0000 Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=94=84=20Synced=20local=20'style-sets?= =?UTF-8?q?'=20with=20remote=20'style-sets'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release- --- style-sets/data-trail/_output.yml | 3 ++- style-sets/fhdasl/_output.yml | 3 ++- style-sets/itcr/_output.yml | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/style-sets/data-trail/_output.yml b/style-sets/data-trail/_output.yml index bf0596b..571771a 100644 --- a/style-sets/data-trail/_output.yml +++ b/style-sets/data-trail/_output.yml @@ -10,7 +10,8 @@ bookdown::gitbook: before: | after: | -

This content was published with bookdown by:

+

This content was published with bookdown using

+

The OTTR Template by:

The Johns Hopkins Data Science Lab

Style adapted from: rstudio4edu-book (CC-BY 2.0)

diff --git a/style-sets/fhdasl/_output.yml b/style-sets/fhdasl/_output.yml index d00716f..0a86496 100644 --- a/style-sets/fhdasl/_output.yml +++ b/style-sets/fhdasl/_output.yml @@ -11,7 +11,8 @@ bookdown::gitbook: before: | after: | -

This content was published with bookdown by:

+

This content was published with bookdown using

+

The OTTR Template by:

The Fred Hutch Data Science Lab

Style adapted from: rstudio4edu-book (CC-BY 2.0)

diff --git a/style-sets/itcr/_output.yml b/style-sets/itcr/_output.yml index 87b4a01..9c1d813 100644 --- a/style-sets/itcr/_output.yml +++ b/style-sets/itcr/_output.yml @@ -10,7 +10,8 @@ bookdown::gitbook: before: | after: | -

This content was published with bookdown by:

+

This content was published with bookdown using

+

The OTTR Template by:

The Johns Hopkins Data Science Lab

Style adapted from: rstudio4edu-book (CC-BY 2.0)

From b7f97e7d46fae9b50f30d1999cd1cba415d73c48 Mon Sep 17 00:00:00 2001 From: cansavvy Date: Tue, 17 Sep 2024 20:01:31 +0000 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=94=84=20Synced=20local=20'assets/box?= =?UTF-8?q?=5Fimages/'=20with=20remote=20'assets/box=5Fimages/'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release- --- assets/box_images/under_construction.png | Bin 0 -> 27647 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/box_images/under_construction.png diff --git a/assets/box_images/under_construction.png b/assets/box_images/under_construction.png new file mode 100644 index 0000000000000000000000000000000000000000..a67bd5c1442387153aec259183a864b00d63b3de GIT binary patch literal 27647 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 Date: Tue, 17 Sep 2024 20:01:31 +0000 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=94=84=20Created=20local=20'resources?= =?UTF-8?q?/exclude=5Ffiles.txt'=20from=20remote=20'resources/exclude=5Ffi?= =?UTF-8?q?les.txt'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release- --- resources/exclude_files.txt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 resources/exclude_files.txt diff --git a/resources/exclude_files.txt b/resources/exclude_files.txt new file mode 100644 index 0000000..5525a40 --- /dev/null +++ b/resources/exclude_files.txt @@ -0,0 +1,8 @@ +About.Rmd +docs/* +style-sets/* +manuscript/* +CONTRIBUTING.md +LICENSE.md +code_of_conduct.md +README.md From abf6583f1ce10185a60cffdcd075d2ac77e615f2 Mon Sep 17 00:00:00 2001 From: cansavvy Date: Tue, 17 Sep 2024 20:01:31 +0000 Subject: [PATCH 6/6] =?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- --- config_automation.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/config_automation.yml b/config_automation.yml index 4fc09ca..460f418 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) @@ -12,16 +12,18 @@ spell-check: yes style-code: 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: 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: FALSE +make-book-txt: yes # What docker image should be used for rendering? # The default is jhudsl/base_ottr:main