Dude Scale My Runners

Dude Scale My Runners

In our GitHub Enterprise Instance, we use the super-linter to keep all our users honest and lint everything.

While some find it tedious, linting is a valuable tool for improving the quality and reliability of your code and can save time and effort in the long run.

Actions Lint to the rescue

With our use of the super-linter, we were notified when performing a regular pull request of the following issue.

This is picked up by actionlint under the depreciated command rule as follows:-

on: push

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      # ERROR: 'set-output' workflow command was deprecated
      - run: echo '::set-output name=foo::bar'
      # OK: Use this instead
      - run: echo "foo=bar" >> "$GITHUB_OUTPUT"
      # OK: 'debug' command is not deprecated
      - run: echo "::debug::Set the Octocat variable"
test.yaml:8:14: workflow command "set-output" was deprecated. use `echo "{name}={value}" >> $GITHUB_OUTPUT` instead: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions [deprecated-commands]
  |
8 |       - run: echo '::set-output name=foo::bar'
  |              ^~~~

This depreciation was released in November, but we picked it up thanks to our linting over the Christmas break.

Rolling the fix

Now what I wanted to share with the background above - Scaling Self-Hosted runners when we pushed out a fix for this across all our Terraform module repositories 100+.

As described here, we run our Self-Hosted runners in AWS using the fabulous Philips labs solution built with Terraform.

We have a CloudWatch dashboard to give us an overview of what jobs are ticking over and the number of SPOT instances created.

Here it is on a typical week of usage. We hit about 1200 SPOT instances.

Graph

The following shows the usage in the afternoon when we kicked off the mass pull request update to fix the workflow jobs.

Graph

Note:- The gap in the graph is due to a scheduled maintenance event that evening.

And the best part is no issues with the piggy bank!

Cost Report

Summary

The combination of GitHub Actions and AWS SPOT instances enables us to deliver workflow jobs quickly to our users and scale with the demand.

I hope this helps someone else.

Cheers

For more articles on AWS click here!

Did you find this article valuable?

Support Stephen Jones by becoming a sponsor. Any amount is appreciated!