Running GitHub Actions Locally
2 minute read
You can locally test the GitHub Actions defined in this your project using nektos act.
Setup
Simply run:
act
Rancher Desktop on Mac
If you are using Rancher Desktop on Mac, you may see errors like this:
% act -j build
INFO[0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'
[Continuous Integration/build] 🚀 Start image=ghcr.io/catthehacker/ubuntu:act-latest
[Continuous Integration/build] 🐳 docker pull image=ghcr.io/catthehacker/ubuntu:act-latest platform= username= forcePull=true
Error: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
You can print out your Docker contexts with the following command:
% docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
rancher-desktop * Rancher Desktop moby context unix:///Users/bhamail/.rd/docker.sock
You can set the DOCKER_HOST environment variable as shown below which will allow act
to use the correct Docker context:
export DOCKER_HOST=$(docker context inspect | jq -r '.[0].Endpoints.docker.Host')
See: slight modification that helps for rancher desktop
Apple Silcon
If running on Apple Silicon (ARM), launch act
with this flag:
act --container-architecture linux/amd64
Without this flag, I saw this warning:
WARN ⚠ You are using Apple M-series chip and you have not specified container architecture, you might encounter issues while running act. If so, try running it with '--container-architecture linux/amd64'. ⚠
and this error:
... 🐳 docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/1] user= workdir=
| docker compose build
[+] Building 0.0s (0/0)
| permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied
...
Usage
To get a list of available jobs, run:
$ act -l
To run a specific job, use the -j
flag:
$ act -j <job-name>
For example, to run the build
job from the ci.yml
file, use this command:
$ act --workflows .github/workflows/ci.yml -j build
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.