generated from jhudsl/OTTR_Template_Website
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
🔄 Synced local '.github/workflows/render-site.yml' with remote '.gith…
…ub/workflows/pull_request.yml' release-null
- Loading branch information
Showing
1 changed file
with
120 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,58 +1,97 @@ | ||
# 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 | ||
uses: doughepi/[email protected] | ||
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 "[email protected]" | ||
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 "[email protected]" | ||
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 "[email protected]" | ||
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 |