Giter VIP home page Giter VIP logo

github-actions's Introduction

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).

github-actions's People

Contributors

svetlyak40wt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

github-actions's Issues

how to filter github action matrices (matrix fails to render as well)

Badge NO FILTER

[![](http://github-actions.40ants.com/mgood7123/prebuilder/matrix.svg)](https://github.com/mgood7123/prebuilder/actions)

Badge FILTERED

[![](http://github-actions.40ants.com/mgood7123/prebuilder/matrix.svg?only=CMake.run-build.ubuntu-latest,CMake.run-build.macOS-latest,CMake.run-build.windows-latest)](https://github.com/mgood7123/prebuilder/actions)

why does this have Waiting For A Run even though the workflow has succeeded?

also why does the matrix fail to render?

cmake.yaml:

name: CMake

on:
  push:
    branches: [ main ]

concurrency:
  group: build
  cancel-in-progress: true

env:
  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
  BUILD_TYPE: Debug

jobs:
  build:
    runs-on: ${{ matrix.os }}
    permissions:
      contents: write
    strategy:
      fail-fast: false
      max-parallel: 1
      matrix:
        include:
        
        - os: ubuntu-latest
          extension: so

        - os: macOS-latest
          extension: dylib

        - os: windows-latest
          extension: dll

    defaults:
      run:
        shell: bash

    steps:
    - uses: actions/checkout@v2
    
# ommited

Strategy / matrix / include should be processed

The following 2 strategy matrix are identical:

      matrix:
        scalaVersion: ["2.13.6", "2.13.7"]

equals

      matrix:
        include:
          - scalaVersion: "2.13.6"
          - scalaVersion: "2.13.7"

But only the first one can be parse successfully and generate the proper badge

The second produces multiple jobs in github actions, but as a badge they cannot be identified:

badge-errors

Is this a known limitation?

Combine matrix runs to make compact badge

In the following case I want to just show the result of runs just one matrix variable (or maybe combinations?)
The fix in #2 seems to hint this is possible but I suspect this is really a different request that what the ?only= was supposed to achieve

The following doesn't work

https://github-actions.40ants.com/collective/collective.collectionfilter/matrix.svg?only=ci.build.PLONE-VERSION

Breaks when ordering of inclusions is different

e.g.

        python-version: ['2.7']
        plone-version: 
          - '4.1'
          - '4.3'
          - '5.0'
          - '5.1'
          - '5.2'
        include:
          - plone-version: 5.2
            python-version: 3.7
          - plone-version: 5.2
            python-version: 3.8

ends up looking like

Screen Shot 2021-02-02 at 4 40 13 pm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.