DEV Community

Cover image for Keep your URLs healthy using Github Actions and Go
Bhupesh Varshney ๐Ÿ‘พ
Bhupesh Varshney ๐Ÿ‘พ

Posted on • Originally published at bhupesh.me on

Keep your URLs healthy using Github Actions and Go

Dead links, huh!. Too many dead links? How do I test a bunch of URLs? Donโ€™t worry I got you, I recently release areyouok a nice, portable and easy to use URL Auditor. Its built using Go and leverages go routines (literally the best form of concurrency).

One handy thing with AreYouOk is that its a standalone binary, so you donโ€™t need any package managers like npm or pip to install it.

  • Linux (amd64)
curl -LJO https://github.com/Bhupesh-V/areyouok/releases/latest/download/areyouok-linux-amd64

Enter fullscreen mode Exit fullscreen mode
  • MacOS (amd64)
curl -LJO https://github.com/Bhupesh-V/areyouok/releases/latest/download/areyouok-darwin-amd64

Enter fullscreen mode Exit fullscreen mode
  • Windows
curl -LJO https://github.com/Bhupesh-V/areyouok/releases/latest/download/areyouok-windows-amd64.exe

Enter fullscreen mode Exit fullscreen mode

Or you can just directly download them from releases

Once thatโ€™s done, check if you have the latest version installed

$ ./areyouok-linux-amd64 --version
AreYouOk v1.1.0 built on (26 Jan 2021)

Enter fullscreen mode Exit fullscreen mode

Using it is pretty straight-forward, AreYouOk accepts 3 optional arguments followed by a directory path

  1. -t type of files to scan for links

    The default value has been set to Markdown since a lot of OSS documentation & personal blogs are written in markdown these days. You can also scan HTML, or literally any valid text file!!

  2. -i list of files or directories to ignore for links (node_modules, .git)

    This is handy if you are sure that certain files or directories wonโ€™t contain any URLs, plus this makes areyouok work quickly too!

  3. -r type of report to generate (available formats include json, html, txt & github)

    The most superior format is HTML which gives a visual perspective on all the URLs scanned (you can see this in the blog header as well)

    aro-html-demo

OK! Enough talking, let's see it in action on my til repository

$ areyouok-linux-amd64 -i=_layouts,.git,_site,README.md,build.py,USAGE.md -r=txt ~/Documents/til/

Enter fullscreen mode Exit fullscreen mode

We are ignoring folders: _layouts, .git, _site & files README.md, USAGE.md & build.py using the i flag.

The r flag is used to specify the type of report to generate.

Here is a demo

aro-demo-1.1.0

This is good but a more precise to use AreYouOk is by adding it to your CI/CD workflow.

Create a Github Action workflow in your repository with the following contents

name: Audit Links using AreYouOk
on:
  workflow_dispatch:
  schedule:
    # At 06:00 AM, every 30 days
    - cron: '0 6 */30 * *'

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Download & Run AreYouOk
        run: |
          wget -q https://github.com/Bhupesh-V/areyouok/releases/latest/download/areyouok-linux-amd64
          chmod +x areyouok-linux-amd64
          ./areyouok-linux-amd64 -i=_layouts,.git,_site,README.md,build.py,USAGE.md -r=github
      - name: Create Issue
        uses: peter-evans/create-issue-from-file@v2
        with:
          title: AreYouOk URL Health Report
          content-filepath: ./report.github
      - name: Cleanup
        run: rm report.github

Enter fullscreen mode Exit fullscreen mode

Our workflow will execute every 30 days then downloads a fresh copy of areyouok using curl & executes it inside the repo. Note the report format is github here. It's largely HTML but is compatible with GitHubโ€™s commonmark markdown renderer.

Make sure you set the executable permissions on areyouok once downloaded

Our action uses the peter-evans/create-issue-from-file action which is used to report back the results to user via github issues. This is how it looks like

demo-action

You can see the generated issue here. Also the Action Summary

And there you have it, no more dead ๐Ÿ’€๏ธ links!

Top comments (2)

Collapse
 
drallas profile image
Drallas • Edited

How about this action ("Quickly check links in Markdown, HTML, and text files.") isn't it doing the same? AreYouOk reporting seems more comprehensive though.

Great link checking exist and can be used with actions to make projects have less broken links, means less 404's

Collapse
 
bhupesh profile image
Bhupesh Varshney ๐Ÿ‘พ • Edited

Well alternatives exists everywhere ๐Ÿ™ƒ
I discovered lychee only when i released AreYouOk initially would eventually add more features