Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
tmooney authored Jul 13, 2023
0 parents commit 981b01e
Show file tree
Hide file tree
Showing 171 changed files with 36,132 additions and 0 deletions.
Binary file added .DS_Store
Binary file not shown.
Binary file added .github/.DS_Store
Binary file not shown.
39 changes: 39 additions & 0 deletions .github/switch_sync_repo.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env Rscript

# This script switches the repo entry for the yaml file to whatever is specified
# Written by Candace Savonen Jan 2022

if (!("optparse" %in% installed.packages())){
install.packages("optparse")
}

library(optparse)

option_list <- list(
optparse::make_option(
c("--repo"),
type = "character",
default = "jhudsl/OTTR_Template_Test",
help = "GitHub repository name, e.g. jhudsl/OTTR_Template_Test",
)
)

# Read the arguments passed
opt_parser <- optparse::OptionParser(option_list = option_list)
opt <- optparse::parse_args(opt_parser)

# Find .git root directory
root_dir <- rprojroot::find_root(rprojroot::has_dir(".git"))

# Get test sync yaml path
sync_file_path <- file.path(root_dir, ".github", "test-sync.yml")

yaml_contents <- yaml::yaml.load_file(sync_file_path)

# Only keep first grouping
yaml_contents$group <- yaml_contents$group[[1]]

# Switch out repo
yaml_contents$group$repos <- opt$repo

yaml::write_yaml(yaml_contents, sync_file_path)
42 changes: 42 additions & 0 deletions .github/sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Candace Savonen Aug 2021
# For info on how to update this file see: https://github.com/marketplace/actions/repo-file-sync-action#%EF%B8%8F-sync-configuration

group:
- files:
- source: .github/workflows/
dest: .github/workflows/
deleteOrphaned: true
exclude: |
send-updates.yml
test-send-updates.yml
starting-course.yml
release-notes.yml
- source: .github/workflows/delete-preview.yml
dest: .github/workflows/docker-test.yml
- source: .github/workflows/pull_request.yml
dest: .github/workflows/render-site.yml
- source: config_automation.yml
dest: config_automation.yml
# Repositories to receive changes
repos: |
jhudsl/ottr-website
jhudsl/Baltimore_Community_Course
maculatus/test-ottr-website
dr-sayyadhury/OTTR_Template_Website_repo
whalera1901/Current-projects
GenetcXBiotech1/Dr.Fierst_lab
buriedsand/glbio-personal-website
PurplFeesh/test-ottr-site
jcha40/ottr_test_site
###ADD NEW REPO HERE following the format above#

### These are custom groups for syncing -- not all files needs to be synced # will update later
# - files:
# - source: config_automation.yml
# dest: config_automation.yml
# - source: .github/workflows/pull-request.yml
# dest: .github/workflows/pull-request.yml
# - source: scripts/spell-check.R
# dest: scripts/spell-check.R
# repos: |
# jhudsl/Baltimore_Community_Course
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@v3
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"
90 changes: 90 additions & 0 deletions .github/workflows/docker-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@

# Candace Savonen Apr 2022

name: Build Docker Image

on:
workflow_dispatch:
inputs:
directory:
required: true
type: string
tag:
required: true
type: string
dockerhubpush:
description: 'Push to Dockerhub?'
required: false
default: 'false'
type: string
secrets:
GH_PAT:
required: true
DOCKERHUB_USERNAME:
required: false
DOCKERHUB_TOKEN:
required: false

jobs:

build-docker:
name: Build Docker image
runs-on: ubuntu-latest

steps:
- name: checkout repo
uses: actions/checkout@v3

- name: Verify Dockerfiles changed?
uses: tj-actions/[email protected]
id: verify-changed-files
with:
files: |
${{ inputs.directory }}/Dockerfile
${{ inputs.directory }}/github_package_list.tsv
- name: Login as jhudsl-robot
run: |
git config --local user.email "[email protected]"
git config --local user.name "jhudsl-robot"
# Set up Docker build
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

# Setup layer cache
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Set up Docker Build
uses: docker/setup-buildx-action@v1

- name: Get token
run: echo ${{ secrets.GH_PAT }} > ${{ inputs.directory }}/git_token.txt

- name: Build Docker image
uses: docker/build-push-action@v2
with:
push: false
load: true
context: ${{ inputs.directory }}
file: ${{ inputs.directory }}/Dockerfile
tags: ${{ inputs.tag }}

# Login to Dockerhub
- name: Login to DockerHub
if: ${{ inputs.dockerhubpush != 'false' }}
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

# Push the Docker image if set to true from a manual trigger
- name: Push Docker image if manual trigger set to true
if: ${{ inputs.dockerhubpush != 'false' }}
run: docker push ${{ inputs.tag }}
171 changes: 171 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
# Candace Savonen Dec 2021
# Updated April 2023
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@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 }}"

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

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

# 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
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()"

# We may have html files that we want to render to add as links on the pages -these will be stored in a dir called subdir_html
- name: Render subdir_html
id: subdir_html
run: Rscript -e "for (i in list.files(path = './subdir_html', pattern = 'Rmd$', recursive = TRUE, full.names = TRUE)){rmarkdown::render(i)}"

# 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 website files
- name: Commit rendered website files to preview branch
id: commit
run: |
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
Loading

0 comments on commit 981b01e

Please sign in to comment.