Act: Run your GitHub Actions locally

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • act

    Run your GitHub Actions locally 🚀

    There’s a nice tool called “act” that helps you test them locally: https://github.com/nektos/act

    It’ll pull & run the necessary containers and emulate your actions as if if they were running on GitHub.

  • dagger

    Application Delivery as Code that Runs Anywhere (by dagger)

    Take a look at https://dagger.io/. Declarative pipelines using Node, Python, or Go. Parallelism built in, and caching built in - things are cached if they're unchanged.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • action-tmate

    Debug your GitHub Actions via SSH by using tmate to get access to the runner system itself.

    Unfortunately act is only capable of running very simple workflows. I've found this action to be more useful against the endless PR stream: https://github.com/mxschmitt/action-tmate

    You drop it in your workflow and get an SSH shell into the worker, figure things out iteratively, then push when it's working.

  • djinn

    Source code for the Djinn CI platform (by djinn-ci)

    I've built a CI platform [1] that does support running your CI builds without the server using an offline runner. I wrote about it here before: https://blog.djinn-ci.com/showcase/2022/08/06/running-your-c...

    [1] - https://about.djinn-ci.com/

  • runner

    The Runner for GitHub Actions :rocket:

    Isn't GitHub Actions now open source? You can self-host runners now https://github.com/actions/runner or am I missing something?

  • cancel-workflow-action

    ⏹️ GitHub Action to cancel previous running workflows on push

    Workflows that interact with the Github API heavily will fail as they're not available in act e.g. actions like https://github.com/styfle/cancel-workflow-action. Dealing with secrets is also a bit cumbersome. You can throw the following on actions that are not compatible with act in order to skip them:

    if: ${{ !env.ACT }}

    That said, despite it's limitations, I've been using both act and tmate in combination for a couple of years. Gets the job done.

  • Phoenix

    Peace of mind from prototype to production

    Yeah, I got so frustrated with the odd workflow (having no sane way to locally test new/more advanced pipelines and having to do lot's of "change .gitlab-ci commits") at work that I started investigating alternatives.

    At home, for some hobby projects, I've been using earthly. It's just amazing. I can fully run the jobs locally and they are _blazing_ fast due to the buildkit caching. The CI now only just executes the earthly stuff and is super trivial (very little vendor lock in, I personally use woodpecker-ci, but it would only take 5 minutes to convert to use GH actions).

    I am not a fan of the syntax. But it's so familiar from Dockerfiles and so easy to get started I can't really complain about it. Easy to make changes, even after months not touching it. Unless I update dependencies or somehow invalidate most of the cache a normal pipeline takes <10s to run (compile, test, create and push image to a registry).

    This workflow is such a game-changer. It also allows, fairly easy, to do very complicated flows [1].

    I've tried to get started with dagger but I don't use the currently supported SDK's and the cue-lang setup was overwhelming. I think I like the idea of a more sane syntax from dagger, but Earthly's approachability just rings true.

    [1]: https://github.com/phoenixframework/phoenix/blob/master/Eart...

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • docker-flask-example

    A production ready example Flask app that's using Docker and Docker Compose.

    This is what I do except I use a shell script instead of a Makefile.

    A working example of this is at: https://github.com/nickjj/docker-flask-example/blob/912388f3...

    Those ./run ci:XXX commands are in: https://github.com/nickjj/docker-flask-example/blob/912388f3...

    I like it because if CI ever happens to be down I can still run that shell script locally.

  • docker_images

    Docker images (by catthehacker)

  • act-environments

    If your Internet is so bad, this might not help you, but it's possible to build them locally: https://github.com/nektos/act-environments#building-images

  • batect

    Discontinued (NOT MAINTAINED) Build And Testing Environments as Code Tool

    https://batect.dev/ this is like Act but agnostic and public

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts