Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

actions #3

Merged
merged 11 commits into from
Dec 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
27 changes: 27 additions & 0 deletions .github/workflows/delete-preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Candace Savonen Apr 2021

name: Delete Preview

on:
pull_request:
types: [closed]

jobs:
delete-preview:
runs-on: ubuntu-latest
steps:

# This is because if a PR is closed before a render finishes it won't find it.
- name: Sleep for 5 minutes
run: sleep 300s
shell: bash

# Check out current repository
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

# Delete the branch!
- name: Delete branch locally and remotely
run: git push origin --delete preview-${{ github.event.pull_request.number }} || echo "No branch to delete"
179 changes: 179 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@

# Candace Savonen Dec 2021
# Updated Aug 2024

name: Pull Request

on:
pull_request:
branches: [ main, staging ]

jobs:

yaml-check:
name: Load user automation choices
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GH_PAT }}

# 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 --force 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 --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'

branch_name='preview-${{ github.event.pull_request.number }}'
echo branch doesnt exist
git checkout -b $branch_name || echo branch exists
git push --force --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 }}"

########################## 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}}
if: ${{needs.yaml-check.outputs.toggle_render_preview == 'yes'}}

steps:
- name: Checkout files
uses: actions/checkout@v4
with:
fetch-depth: 0

# Set up git checkout
- name: Set up git checkout
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'

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
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
id: site
run: Rscript -e "rmarkdown::render_site()"

# 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

- name: Website preview for download
run: zip website-preview.zip docs/* -r

# Commit the website files
- name: Commit rendered website files
id: commit
run: |
branch_name='preview-${{ github.event.pull_request.number }}'
git diff origin/main -- docs >/dev/null && changes=true || changes=false
echo "changes=$changes" >> $GITHUB_OUTPUT
git add . --force
git commit -m 'Render preview' || echo "No changes to commit"
git pull --rebase --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@v3
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 }}/docs/index.html")
docs_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/website-preview.zip")
echo "zip_link=$docs_link" >> $GITHUB_OUTPUT
echo "website_link=$website_link" >> $GITHUB_OUTPUT
echo "time=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
echo "commit_id=$GITHUB_SHA" >> $GITHUB_OUTPUT
echo ${{steps.commit.outputs.changes}}

- name: Create or update comment
if: steps.commit.outputs.changes == 'true'
uses: peter-evans/create-or-update-comment@v3
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
:eyes: Quick [preview of website here](${{ steps.build-components.outputs.website_link }}) \*
:microscope: Comprehensive [download of the website here](${{ steps.build-components.outputs.zip_link }})

\* 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: No comment if no changes
if: steps.commit.outputs.changes == 'false'
uses: peter-evans/create-or-update-comment@v3
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
21 changes: 21 additions & 0 deletions _site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: OTTR Cheatsheets
output_dir: 'docs'
navbar:
title: cheatsheets
left:
- text: ""
href: index.html
icon: fa-home
- text: Website Setup
href: website_setup.html


output:
html_document:
theme: cosmo
lib_dir: site_libs
self_contained: no
highlight: textmate
css: styles.css
includes:
in_header: resources/header.html
29 changes: 29 additions & 0 deletions config_automation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
##### Checks run at pull request #####
# Check quiz formatting
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)
render-preview: yes
# Spell check Rmds and quizzes
spell-check: yes
# Style any R code
style-code: no
# 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-leanpub: no
render-coursera: no

## Automate the creation of Book.txt file? TRUE/FALSE?
## This is only relevant if render-leanpub is yes, otherwise it will be ignored
make-book-txt: FALSE

# What docker image should be used for rendering?
# The default is jhudsl/base_ottr:main
rendering-docker-image: 'jhudsl/base_ottr:main'
4 changes: 2 additions & 2 deletions template.Rmd → index.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ knitr::opts_chunk$set(echo = TRUE)

## R Markdown

<input type="checkbox"> adfasfd
<input type="checkbox"> step

<input type="checkbox"> afdafsd
<input type="checkbox"> step


[this is a link](https://www.itcrtraining.org/)
Expand Down
28 changes: 28 additions & 0 deletions resources/dictionary.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
github
cheatsheet
css
custimization
cwrigh
Dockerfile
Dockerhub
favicon
GH
Github
GitHub
HTTPS
ITN
ITCR
lightblue
lightgreen
OTTR
Rmd
repo
subdir
th
tibble
www
automations
Bootstap
glyphicons
repo
RStudio
2 changes: 2 additions & 0 deletions resources/header.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<link rel="shortcut icon" href="resources/images/favicon.ico" />
<!--- go to https://favicon.io/favicon-converter/ to upload an image to make a new favicon.io. You will need to replace the current favicon.io image with the one in the downloaded directory from the website. The current image is in the resources/images/ directory --->
1 change: 1 addition & 0 deletions resources/ignore-urls.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://username.github.io/repository_name/
18 changes: 9 additions & 9 deletions website_setup.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ A. [Create a personal access token](https://docs.github.com/en/authentication/ke

<input type="checkbox"> Select **Generate new token (classic)** <img src="resources/icons/personal_access_tokens.png" alt="personal access token icon" class = icon>

<input type="checkbox"> Underneath **Select Scopes**, *check both* **repo** and **workflow**
<input type="checkbox"> Underneath **Select Scopes**, *check both* **repo** and **workflow**

<input type="checkbox"> Click: <div class = "github_button"><a href="https://github.com/settings/tokens/new"> Generate Token</a></div>

Expand All @@ -54,7 +54,7 @@ B. [Save the copied personal access token as a repository secret](https://docs.g

<input type="checkbox"> In your OTTR repository, go to **Settings** in the top navigation tabs <img src="resources/icons/settings_gear.png" alt="settings icon" class = icon>

<input type="checkbox"> Go to **Secrets and variables** in the side navigation <img src="resources/icons/secrets_and_variables.png" alt="secrets icon" class = icon>
<input type="checkbox"> Go to **Secrets and variables** in the side navigation <img src="resources/icons/secrets_and_variables.png" alt="secrets icon" class = icon>

<input type="checkbox"> Click on **Actions**

Expand All @@ -72,14 +72,14 @@ B. [Save the copied personal access token as a repository secret](https://docs.g

<input type="checkbox"> Go to **Pages** in the side navigation <img src="resources/icons/pages.png" alt="pages icon" class = icon>

<input type="checkbox"> In the **Build and deployment section**
<input type="checkbox"> In the **Build and deployment section**

1. <input type="checkbox"> Under **Source**, select **Deploy from a branch**
2. <input type="checkbox"> Under **Branch**, pick **main** and choose **/docs**, and click **Save**

<input type="checkbox"> at the button of the page, check **Enforce HTTPS**


1. <input type="checkbox"> Under **Source**, select **Deply from a branch**
2. <input type="checkbox"> Under **Branch**, pick **main** and choose **/docs**, and click **Save**

<input type="checkbox"> at the botton of the page, check **Enforce HTTPS**


## Enroll your OTTR repository for template updates

<input type="checkbox"> Refer to our Template Updates Cheatsheet
Expand Down
Loading