Skip to content

Render html

Render html #392

Workflow file for this run

# 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, staging ]
paths:
- '**.Rmd'
- '**.md'
jobs:
render-main:
name: Render Main Site and Materials
runs-on: ubuntu-latest
container:
image: jhudsl/intro_to_r:1.1
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Give permission to access the repo
- name: safelist repository
run: |
repo_name='${{ github.event.repository.name }}'
git config --global --add safe.directory /__w/$repo_name/$repo_name
# # Checks-out your repository with the token so your job can access it
- name: checkout
uses: actions/checkout@v3
with:
# get the full repo
fetch-depth: 0
# use github PAT
token: ${{ secrets.GH_PAT }}
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v37
# NOTE: `since_last_remote_commit: true` is implied by default and falls back to the previous local commit.
- name: List all changed files
run: |
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
echo "$file was changed"
done
# We want a fresh run of the renders each time - so first delete old html files
- name: Delete old *.html
run: Rscript -e "rmarkdown::clean_site(preview = FALSE)"
# Now we want to render all the html files from the Rmd files
- name: Run render html for the main site
id: site
run: Rscript -e "rmarkdown::render_site()"
# Render module details for syllabus
- name: Render module details for syllabus
run: Rscript "scripts/render_module_details_for_syllabus.R"
# Render all module files
- name: Render html of modules
run: |
Rscript --vanilla "scripts/render_modules.R" --files "${{ steps.changed-files.outputs.all_changed_files }}"
# Render the cheatsheets
- name: Render Cheatsheet pdfs
run: |
Rscript --vanilla "scripts/render_cheatsheets.R" --files "${{ steps.changed-files.outputs.all_changed_files }}"
# Render resource pdfs
- name: Render Resource pdfs
run: |
Rscript --vanilla "scripts/render_resources.R" --files "${{ steps.changed-files.outputs.all_changed_files }}"
# Generate list of files that need pdfs
- name: Get list of html to pdfs
run: |
Rscript --vanilla "scripts/render_html_list.R"
echo "$(cat files.txt)"
- name: Read html and pdf files
id: getfiles
run: |
echo "files=$(cat files.txt)" >> $GITHUB_OUTPUT
rm files.txt
rm cheatsheet_files.csv
rm lab_files.csv
rm lecture_files.csv
# 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.site.outcome != 'success'
run: |
echo site status ${{steps.site.outcome}}
exit 1
# Commit the rendered site files - html files and site_libs files
- name: Commit rendered site files
run: |
git config --local user.email "itcrtrainingnetwork@gmail.com"
git config --local user.name "jhudsl-robot"
git add . --force
git commit -m 'Render site' || echo "No changes to commit"
git pull --rebase --set-upstream origin main --allow-unrelated-histories --strategy-option=ours
git push origin main || echo "No changes to push"
# Save files for conversion to pdf
outputs:
pdffiles: "${{ steps.getfiles.outputs.files }}"
render-pdf-lectures:
name: Render pdf lecture slides
needs: render-main
runs-on: ubuntu-latest
container:
image: jhudsl/intro_to_r:1.1
strategy:
matrix:
modulenames: ${{fromJson(needs.render-main.outputs.pdffiles)}}
steps:
# Give permission to access the repo
- name: safelist repository
run: |
repo_name='${{ github.event.repository.name }}'
git config --global --add safe.directory /__w/$repo_name/$repo_name
- name: Checkout files
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.GH_PAT }}
# Render pdfs of slides
- name: Convert HTML to PDF
uses: LukaszLapaj/html-to-pdf-action@master
with:
htmlFile: ./modules/${{ matrix.modulenames }}/${{ matrix.modulenames }}.html
outputFile: ./modules/${{ matrix.modulenames }}/${{ matrix.modulenames }}.pdf
# Commit the rendered site files - html files and site_libs files
- name: Commit pdfs
run: |
git config --local user.email "itcrtrainingnetwork@gmail.com"
git config --local user.name "jhudsl-robot"
git add . --force
git commit -m 'Render pdfs' || echo "No changes to commit"
git pull --rebase --set-upstream origin main --allow-unrelated-histories --strategy-option=ours
git push --force || echo "No changes to commit"