diff --git a/.github/workflows/broken-link-checker.yml b/.github/workflows/broken-link-checker.yml new file mode 100644 index 00000000..7f61b54e --- /dev/null +++ b/.github/workflows/broken-link-checker.yml @@ -0,0 +1,82 @@ +name: Check for Broken Links +on: [push, pull_request] +jobs: + build_and_check: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install Node.js + uses: actions/setup-node@v2 + with: + node-version: 14 + + - name: Install dependencies + run: yarn install + + - name: Build website + run: yarn build + + - name: Setup Simple HTTP Server + run: | + nohup yarn start & + + - name: Check HTTP Server status + run: sleep 5 && curl -I http://127.0.0.1:8080 + + - name: Install Broken Link Checker + run: npm install -g broken-link-checker + + - name: Execute Link Checker and Show Broken Links + env: + TEMPORARY_WEBSITE_URL: "http://127.0.0.1:8080" + ACTUAL_WEBSITE_URL: "https://ddmal.music.mcgill.ca/Neon" + run: | + output=$(blc $TEMPORARY_WEBSITE_URL --filter-level=3 | \ + grep -v -E '├───OK───|└───OK───' | \ + awk ' + BEGIN { + p=1; + buf="" + } + + # The logic between the following two statements ensures lines started with "Getting links from:" + # and immediately followed by a line starting with "Finished!" and containing "0 broken" get removed + /^Getting links from:/ { + buf=$0; + next + } + /^Finished!.*0 broken\./ { + if (length(buf)>0) { + buf=""; + next + } + } + + { + if(length(buf)>0) + print buf; + if (NF > 0) # ensures only lines with non-zero fields are printed + print; + buf="" + } + + # Printing an empty line after any single "Finished!" keyword to separate the outputs + /^Finished!/ { + print "" + } + ' | sed "s|$TEMPORARY_WEBSITE_URL|$ACTUAL_WEBSITE_URL|g") + + echo "$output" + + # Fail the github actions only if there's a single HTTP 404 found + echo "$output" | grep -q 'HTTP_404' && flag=1 + + if [ "$flag" -eq "1" ]; then + echo "Broken links were found, exiting with an error." + exit 1 + else + echo "No broken links were found (although there may be other HTTP errors - check above), exiting successfully." + exit 0 + fi \ No newline at end of file diff --git a/assets/img/logos.png b/assets/img/logos.png index b6ba3d82..bf6c5dfd 100644 Binary files a/assets/img/logos.png and b/assets/img/logos.png differ diff --git a/deployment/server/index.html b/deployment/server/index.html index bac068dd..3ed9edf1 100644 --- a/deployment/server/index.html +++ b/deployment/server/index.html @@ -233,7 +233,7 @@ - +