🔧 Test your GitHub Actions workflow locally.
Go to file
Thomas Schoffelen 69b9e31045
Added NPM badge.
2019-02-22 12:07:19 +00:00
assets Added /github/home and /github/workflow/event.json support 2018-12-31 19:34:13 +01:00
lib Replace call to tar(1) with tar package. 2019-02-22 11:49:09 +00:00
.gitignore Added /github/home and /github/workflow/event.json support 2018-12-31 19:34:13 +01:00
.npmignore Added .npmignore. 2018-12-31 18:17:14 +01:00
index.js Added --verbose flag and support for secrets 2018-12-31 19:45:13 +01:00
package-lock.json 1.1.1 2019-02-22 11:50:36 +00:00
package.json 1.1.1 2019-02-22 11:50:36 +00:00
README.md Added NPM badge. 2019-02-22 12:07:19 +00:00

GitHub Actions Tester

npm

This Node application exposes an executable that allows you to test your GitHub workflow locally using Docker.

Installation

Install using NPM:

npm i -g gha

Other prerequisites:

  • A local installation of Docker
  • A repo with a .github/main.workflow file

Usage

Usage: gha [options]

Options:
  -V, --version      output the version number
  -f <workflowfile>  Set workflow file path, defaults to .github/main.workflow
  -e <event>         Set event, defaults to push
  -h, --help         output usage information

Supplying values for secrets

You can set the value of secrets defined in your workflow by passing them as environment variables, e.g.:

MY_SECRET_TOKEN=yo-mamma gha

Differences with GitHub Actions

Although this way of locally running GitHub Actions is very close to how they will work when actually running them on GitHub, there are a few small differences:

  • In the GitHub environment, the GITHUB_TOKEN is passed to all actions by default. This is not the case in the local environment, but can be achieved by creating a personal token and supplying it as a secret (see above).
  • The /github/home volume in the container is tied to your local directory /tmp/gh-home. In GitHub, this directory is container-specific, whereas this script shares it between all containers.

Development

There are still some things to do to achieve full functional parity.

This app currently only supports GitHub-hosted Dockerfiles (i.e. with the {user}/{repo}@{ref} or {user}/{repo}/{path}@{ref} syntax), so we still need to add: