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
 
bhupesh profile image
Bhupesh Varshney ๐Ÿ‘พ • Edited

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