DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Mike Rogers ✈️
Mike Rogers ✈️

Posted on

Using Docker to Speed-up My GitHub Action

I wrote my GitHub Action using Ruby, however out the box it requires a few libraries to run, which means every time it ran it took a moment to get setup.

At first, it was just a few seconds but as I started adding things on it suddenly was taking almost 60 seconds to get setup! 60 seconds felt like a lifetime when waiting for an Action to finish.

I jumped into investigating ways to make the setup a bit quicker. The trick I discovered was to use a prebuilt docker image for my GitHub Action with everything ready to go.

Making the Switch to a Prebuilt Docker

Connecting to DockerHub

My DockerHub Repo connected to GitHub

The first step I needed to make was to connect my Repository to DockerHub & have it build a new image each time I push to master.

This was actually super straightforward, I connected my GitHub account & pretty quickly I had it configured to perform a build every time master was updated.

Updating my action.yml

The next thing I needed to do was to tell GitHub when someone runs my Action to download the Docker Image, this was a little tricky to debug but I found the following worked:

# action.yml

runs:
  using: 'docker'
  image: 'docker://typoci/spellcheck-action'
  # When I want to check changes to my Dockerfile, I uncomment the following line:
  # image: 'Dockerfile'
Enter fullscreen mode Exit fullscreen mode

The Results

Pulling down the image still took a moment, but the end result was my GitHub Action took ~15 seconds to setup. Awesome! I could probably get it down a bit more by optimising my Dockerfile a bit more, but for now I'm happy with it.

GitHub Container Registry

GitHub did recently announce a the GitHub Container Registry. I had a little experiment with pulling my Docker Image from them, but I didn't notice a big speed difference.

Top comments (0)

Become a Moderator
Fill out this survey and help us moderate our community by becoming a tag moderator here at DEV.