Skip to content

GitHub Actions – deterministic re-runs for workflows

GitHub Actions is built on top of webhooks and checks and uses the CheckSuiteEvent for re-running workflows.  Using the CheckSuiteEvent for re-run can lead to non-deterministic results due to the difference in event payload.  In order to make re-runs deterministic we now persist the original event payload and use it when re-running workflows.

We’ve updated the event filtering syntax for paths, branches and tags to better support common scenarios and address some customer feedback.

In the initial syntax it was not possible to match all files recursively as we did not support the ** glob.

Now you can simply specify a pattern like **/*.js to match all js files in all paths.

on:
  push:
    paths:
    - "**/*.js"

There was also confusion about how to always run except for changes under a certain folder.

Previously you had to first include all files and then negate some paths.

on:
  push:
    paths:
    - "*"
    - "!docs"

Now you can specify `paths-ignore`.

on:
  push:
    paths-ignore:
    - "docs/**"

Learn more about event filtering in GitHub Actions here.

See more