Skip to content

40ants/github-actions

Repository files navigation

Github Matrix

WARNING!

Because of Visa and Mastercard sanctions against Russua, I'm unable to pay for Heroku hosting anymore and soon server will stop working on the domain github-actions.40ants.com

Goals

This project's aim is to give all repositories tested by Github Actions a way to show the full build status.

Especially it is useful when tests are running under a "matrix" combinations.

Try it!

Go to the https://github-actions.40ants.com/, enter your library's URL and see get your image!

A Few Previews

Here is an example of the render, when matrix has only two variables: os and lisp implementation:

matrix:
  lisp:
    - sbcl-bin
    - ccl-bin
  os:
    - ubuntu-latest
    - macos-latest

docs/images/minimal.png

And this is how more complex matrix is rendered:

matrix:
  os:
    - ubuntu-latest
    - macos-latest
  quicklisp-dist:
    - quicklisp
    - ultralisp
  lisp:
    - sbcl-bin
    - ccl-bin
    - ecl
    - abcl
    - allegro
    - clisp
    - cmucl

docs/images/complex.png

How to test locally

(ql:quickload :app)

(app/server:start 8081 :debug t)

TODO

  • Support more grid layout for workflows with multiple combinations.
  • Add a special webhook which will be able to add an image into the pull-requests. This image should be rendered in a special mode and compare pull's results with results of the main branch. Diffrencies should be highlighted. This will make visible for which matrix combinations a pull request makes fixes/breaks tests.

Known Issues

  • Badge generator does not work for jobs with custom names like:

    test:
      name: ${{ matrix.lisp }} on ${{ matrix.os }}
      runs-on: ${{ matrix.os }}
      strategy:
        matrix:
          lisp: [sbcl-bin, ccl-bin]
          os: [ubuntu-latest]

    This is because github's API does not returns a matrix state for a run and we have to parse run's name to extract matrix values. Name should have this form instead: test (sbcl-bin, ubuntu-latest).