From 7bd43214828892eb7aa705142065f275504d3867 Mon Sep 17 00:00:00 2001 From: cansavvy Date: Tue, 20 Feb 2024 19:38:59 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=84=20Synced=20local=20'.github/workfl?= =?UTF-8?q?ows/render-site.yml'=20with=20remote=20'.github/workflows/pull?= =?UTF-8?q?=5Frequest.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-null --- .github/workflows/render-site.yml | 158 +++++++++++++++++++++++------- 1 file changed, 120 insertions(+), 38 deletions(-) diff --git a/.github/workflows/render-site.yml b/.github/workflows/render-site.yml index 41dc1ac..e52060a 100644 --- a/.github/workflows/render-site.yml +++ b/.github/workflows/render-site.yml @@ -1,32 +1,21 @@ +# Candace Savonen Dec 2021 +# Updated April 2023 +name: Pull Request -# It was adapted by Candace Savonen for the OTTR_template https://github.com/jhudsl/OTTR_Template. - -# This code was adapted by Carrie Wright to enable automated rendering of the site associated with this repository - -name: Render html - -# Controls when the action will run. Triggers the workflow on push -# events only for the master branch on: - workflow_dispatch: - push: - branches: [ main ] - paths: - - '**.Rmd' - - styles.css - - _site.yml - - subdir_html/*.Rmd - - resources/images/*.png - - resources/images/favicon.ico - - site_libs/* + pull_request: + branches: [ main, staging ] jobs: + yaml-check: 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 @@ -34,25 +23,75 @@ jobs: with: files: config_automation.yml # Pass a space-separated list of configuration files. Rightmost files take precedence. + # Delete the branch if this has been run before + - name: Delete branch locally and remotely + run: git push origin --delete preview-${{ github.event.pull_request.number }} || echo "No branch to delete" + + # Make the branch fresh + - name: Make the branch fresh + run: | + git config --local user.email "itcrtrainingnetwork@gmail.com" + git config --local user.name "jhudsl-robot" + 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 + shell: bash + outputs: + public_repository: "${{ steps.public_repository.outputs.public }}" + toggle_spell_check: "${{ env.SPELL_CHECK }}" + toggle_url_check: "${{ env.URL_CHECKER }}" + toggle_render_preview: "${{ env.RENDER_PREVIEW }}" rendering_docker_image: "${{ env.RENDERING_DOCKER_IMAGE }}" - # This workflow contains a single job called "build-all" - render-main: +########################## Make the error reports ############################## + spell-check: + name: Check spelling + needs: yaml-check + if: ${{needs.yaml-check.outputs.toggle_spell_check == 'yes'}} + uses: jhudsl/ottr-reports/.github/workflows/report-maker.yml@main + with: + check_type: spelling + error_min: 3 + gh_pat: secrets.GH_PAT + + url-check: + name: Check URLs + needs: yaml-check + if: ${{needs.yaml-check.outputs.toggle_url_check == 'yes'}} + uses: jhudsl/ottr-reports/.github/workflows/report-maker.yml@main + with: + check_type: urls + error_min: 0 + gh_pat: secrets.GH_PAT + + render-preview: + name: Render preview needs: yaml-check runs-on: ubuntu-latest container: - image: ${{needs.yaml-check.outputs.rendering_docker_image}} - # Steps represent a sequence of tasks that will be executed as part of the job + image: jhudsl/course_template:main + if: ${{needs.yaml-check.outputs.toggle_render_preview == 'yes'}} + steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: checkout + - name: Checkout files uses: actions/checkout@v3 with: - # get the full repo fetch-depth: 0 - # use github PAT - token: ${{ secrets.GH_PAT }} + + # Set up git checkout + - name: Set up git checkout + run: | + git config --system --add safe.directory $GITHUB_WORKSPACE + git config --local user.email "itcrtrainingnetwork@gmail.com" + git config --local user.name "jhudsl-robot" + + branch_name='preview-${{ github.event.pull_request.number }}' + git fetch --all + git checkout $branch_name + git merge -s recursive --strategy-option=theirs origin/${{ github.head_ref }} --allow-unrelated-histories + shell: bash # We want a fresh run of the renders each time - so first delete old html files - name: Delete old *.html @@ -76,14 +115,57 @@ jobs: echo site status ${{steps.site.outcome}} exit 1 -# Commit the rendered site files - html files and site_libs files - - name: Commit rendered site files + # Commit the rendered website files + - name: Commit rendered website files to preview branch + id: commit run: | - git config --system --add safe.directory $GITHUB_WORKSPACE - git config --local user.email "actions@github.com" - git config --local user.name "GitHub Actions" - git add --force *.html - git add --force subdir_html/*.html - git add --force site_libs/* - git commit -m 'Render site' || echo "No changes to commit" - git push origin main || echo "No changes to push" + branch_name='preview-${{ github.event.pull_request.number }}' + git diff origin/main -- '*.html' >/dev/null && changes=true || changes=false + echo ::set-output name=changes::$changes + 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 push --force || echo "No changes to commit" + shell: bash + + - name: Find Comment + uses: peter-evans/find-comment@v1 + id: fc + with: + issue-number: ${{ github.event.pull_request.number }} + comment-author: 'github-actions[bot]' + body-includes: latest commit + + - name: Build components of the comment + id: build-components + run: | + course_name=$(head -n 1 _website.yml | cut -d'"' -f 2| tr " " "-") + website_link=$(echo "https://htmlpreview.github.io/?https://raw.githubusercontent.com/$GITHUB_REPOSITORY/preview-${{ github.event.pull_request.number }}/index.html") + echo ::set-output name=website_link::$website_link + echo ::set-output name=time::$(date +'%Y-%m-%d') + echo ::set-output name=commit_id::$GITHUB_SHA + echo ${{steps.commit.outputs.changes}} + + - name: Create or update comment + if: steps.commit.outputs.changes == 'true' + uses: peter-evans/create-or-update-comment@v1 + with: + comment-id: ${{ steps.fc.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number }} + body: | + Re-rendered previews from the latest commit: See [preview of website here](${{ steps.build-components.outputs.website_link }}) + + _Updated at ${{ steps.build-components.outputs.time }} with changes from ${{ steps.build-components.outputs.commit_id }}_ + edit-mode: replace + + - name: No comment if no changes + if: steps.commit.outputs.changes == 'false' + uses: peter-evans/create-or-update-comment@v1 + with: + comment-id: ${{ steps.fc.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number }} + body: | + The latest commit did not produce rendering changes. + + _Updated at ${{ steps.build-components.outputs.time }} with changes from ${{ steps.build-components.outputs.commit_id }}_ + edit-mode: replace