Skip to content

Commit

Permalink
Have URLs periodically checked (#673)
Browse files Browse the repository at this point in the history
* Testing git on terminal

* Revert changes

* Initial pass at URL checker

* Test URL checker by running every 2 mint

* Fix syntax

* Syntax

* chatgpt?

* Fix spacing

* Remove "shell:bash"

* Please work

* Add spacing and indents

* Fix indentation

* Tryna find this indentation

* Add config option

* Add workflow dispatch button too

* temporarily have a pull_request trigger

* Add URL config

* Add a delete step

* Fix spec

* Update for branch problem

* Add issue creating infrastructure

* Add issue template

* Add steps:

* Declare docker

* get rid of dash

* Move if

* Add a needs argument

* Add an option for it branch exists

* missing paranthesis

* Make sure its checked out

* Try mapfile?

* Add a file

* Didn't fix template issue

* Put file link

* Fix link

* Fix less than or greater than

* Add in a spelling error to check if this works

* Add spelling errors to test part 2

* Try to fix

* Reverse order or < and =

* Change branch name

* Make sure branch is checked out

* Look for an issue

* Trying a different issue finder

* Gonna make my own issue finder

* Add find issue bits

* Add CRAN mirror

* Fix syntax

* Delete spelling errors

* Add a missing githubr::

* Install from github

* Fix GH_PAT

* Install from CRAN again

* Install from github but use devtools

* dependencies = TRUE

* Install from CRAN instead

* Test variables

* Retrigger a run for GHA

* Print out session info

* Actually what I did won't work!

* use cat() instead

* unlist

* I need cat() too

* Why is GHA not printing this out? Try message()

* Save session info to a file and archive upload it

* Shut off the other things so this step completes

* Comment out one more step

* Order dictionary.txt

* Add broken URL

* Make it so blank is the logic

* Just retrigger the check

* Try again

* fix true

* drop quotes

* Let's try this

* repo_name -> repo

* change per_page

* mysterious error

* Print out clues

* Update script

* Fix logic

* fix so runs once a month

---------

Co-authored-by: howardbaek <howardbaek.fh@gmail.com>
Co-authored-by: Howard Baek <50791792+howardbaek@users.noreply.github.com>
  • Loading branch information
3 people authored Feb 29, 2024
1 parent cc497be commit 993b6ac
Show file tree
Hide file tree
Showing 9 changed files with 229 additions and 6 deletions.
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/url-error.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Broken URLs found in the course!
labels: url-error
---
URL's in this course were just checked and some broken URLs were found.

**Number of errors:** {{ env.ERROR_NUM }}
**File where errors are:** [url checks file here]({{ env.FILE_URL }})
107 changes: 107 additions & 0 deletions .github/workflows/check-url.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: Periodic URL Check

on:
workflow_dispatch:
schedule:
- cron: '0 0 1 * *'

jobs:
set-up:
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/yaml-env-action@v1.0.0
with:
files: config_automation.yml # Pass a space-separated list of configuration files. Rightmost files take precedence.
outputs:
toggle_url_check_periodically: "${{ env.URL_CHECK_PERIODICALLY }}"

url-check:
name: Check URLs
needs: set-up
if: ${{needs.set-up.outputs.toggle_url_check_periodically == 'yes'}}
runs-on: ubuntu-latest
container:
image: jhudsl/base_ottr:main

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

# Delete the branch if this has been run before
- name: Delete branch locally and remotely
run: git push origin --delete preview-spell-error || 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.email "itcrtrainingnetwork@gmail.com"
git config --global user.name "jhudsl-robot"
echo branch doesnt exist
git checkout -b preview-spell-error || echo branch exists
git push --set-upstream origin preview-spell-error || echo echo branch exists remotely
shell: bash

- name: Run the check
uses: jhudsl/ottr-reports@main
id: check_results
continue-on-error: true
with:
check_type: urls
error_min: 1

- name: Declare file path and time
id: check-report
run: |
error_num=$(cat check_reports/url_checks.tsv | wc -l)
error_num="$((error_num-1))"
echo "error_num=$error_num" >> $GITHUB_OUTPUT
echo "error_url=https://github.com/${GITHUB_REPOSITORY}/blob/preview-spell-error/check_reports/url_checks.tsv" >> $GITHUB_OUTPUT
shell: bash

- name: Stop if failure
if: steps.check_results.outcome == 'failure'
run: exit 1

- name: Print out error variables
run: |
echo ${{ steps.check-report.outputs.error_url }}
echo ${{ steps.check-report.outputs.error_num }}
- name: Find issues
id: find-issue
env:
GH_PAT: ${{ secrets.GH_PAT }}
run: |
echo "$GH_PAT"
echo "$GITHUB_REPOSITORY"
issue_exists=$(Rscript --vanilla scripts/find_issue.R --repo $GITHUB_REPOSITORY --git_pat $GH_PAT)
echo URL issue exists: $issue_exists
echo "issue_existence=$issue_exists" >> $GITHUB_OUTPUT
- name: If too many URL errors, then make an issue
if: ${{ steps.check-report.outputs.error_num >= 1 && steps.find-issue.outputs.issue_existence == 0}}
uses: JasonEtco/create-an-issue@v2
with:
filename: .github/ISSUE_TEMPLATE/url-error.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FILE_URL: ${{ steps.check-report.outputs.error_url }}
ERROR_NUM: ${{ steps.check-report.outputs.error_num }}

- name: If no URL errors than delete the branch we made
if: ${{ steps.check-report.outputs.error_num < 1 }}
run: |
git config --system --add safe.directory "$GITHUB_WORKSPACE"
git push origin --delete preview-spell-error || echo "No branch to delete"
2 changes: 1 addition & 1 deletion .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
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
git push --set-upstream origin $branch_name || echo echo branch exists remotely
shell: bash


Expand Down
1 change: 1 addition & 0 deletions 01-intro.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ ottrpal::set_knitr_image_path()
```

# Introduction
https://ahuidshiushiufhs.com


## Motivation
Expand Down
17 changes: 17 additions & 0 deletions OTTR_template.Rproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Version: 1.0

RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default

EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8

RnwWeave: knitr
LaTeX: pdfLaTeX

AutoAppendNewline: Yes

BuildType: Website
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,3 @@ _This template and guide helps you_:
- Check out our [course on using Leanpub](https://hutchdatascience.org/Using_Leanpub/index.html) for help publishing on this platform.
- Please take a look at the [code of conduct](./code_of_conduct.md).
- If you encounter any problems or have ideas for improvements to this template repository or this getting started guide, please [file an issue here](https://github.com/jhudsl/OTTR_Template/issues/new/choose)! Your feedback is very much appreciated.

2 changes: 2 additions & 0 deletions config_automation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ spell-check: yes
style-code: yes
# 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
Expand Down
42 changes: 38 additions & 4 deletions resources/dictionary.txt
Original file line number Diff line number Diff line change
@@ -1,33 +1,67 @@
AnVIL
Audiographer
Audiography
automagic
BIPOC
Bloomberg
Bookdown
chapt
Coursera
creativecommons
css
Datatrail
DataTrail
DISCOVERABLE
Dockerfile
Dockerhub
dropdown
enforceability
faq
favicon
FirstName
Funder
fyi
GDSCN
GitHub
Github
Generis
GH
Github
GitHub
https
ies
iframe
immunities
impactful
ITCR
itcrtraining
ITN
fyi
LastName
Leanpub
Licensor
LICENSOR
Markua
mentorship
MERCHANTABILITY
Muschelli
NCI
NHGRI
OTTR
ottrpal
ottrproject
Pandoc
png
pre
reproducibility
rmarkdown
RMarkdown
Savonen
sexualized
socio
synched
tada
UE
UE5
reproducibility
underserved
Videographer
Videography
WIPO
www
55 changes: 55 additions & 0 deletions scripts/find_issue.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/usr/bin/env Rscript

# Written by Candace Savonen Sept 2021

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

library(optparse)

option_list <- list(
optparse::make_option(
c("--repo"),
type = "character",
default = NULL,
help = "GitHub repository name, e.g. jhudsl/OTTR_Template",
),
optparse::make_option(
c("--git_pat"),
type = "character",
default = NULL,
help = "GitHub personal access token",
)
)

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

repo <- opt$repo
git_pat <- opt$git_pat

if (!is.character(repo)) {
repo <- as.character(repo)
}

# Github api get
result <- httr::GET(
paste0("https://api.github.com/repos/", repo, "/issues"),
httr::add_headers(Authorization = paste0("Bearer ", git_pat)),
httr::accept_json()
)

if (httr::status_code(result) != 200) {
httr::stop_for_status(result)
}

# Process and return results
result_content <- httr::content(result, "text")
result_list <- jsonlite::fromJSON(result_content)

issue_exists <- length(grep('Broken URLs found in the course!', result_list$title))

# Print out the result
write(issue_exists, stdout())

0 comments on commit 993b6ac

Please sign in to comment.