Docker Images for Nektos/act to run your GH-Workflows locally
10K+
The containers in this repository are made to be used with nektos/actโ , which is a very handy tool to execute, test and debug github workflows locally.
If you don't know it yet, I highly recommend to check it out ๐ค
Since I had trouble with other images when executing azure related tools, I decided to create my own container which is heavily inspired by the images of catthehackerโ and the official runner imagesโ .
These Docker images are intended to be used with nektos/actโ . Setup guides can be found hereโ .
Add these lines in ~/.actrc to use this image with act:
-P ubuntu-latest=mauwii/ubuntu-act:latest
-P ubuntu-22.04=mauwii/ubuntu-act:22.04
-P ubuntu-20.04=mauwii/ubuntu-act:20.04
For further information about nektos/actโ and how to use it, take a ๐ at the nektos documentation๐โ
Install act via brew๐บโ
brew install act
Important
Use `act --version` to make sure you have at least `act version 0.2.51`, which came with support for node20
set an alias to always pass the GITHUB_TOKEN (requires github-cli (brew install gh))
if command -v act >/dev/null 2>&1; then
alias act='act -s GITHUB_TOKEN="$(gh auth token)"'
elif gh extension list | grep -q "nektos/gh-act"; then
alias act='gh act -s GITHUB_TOKEN="$(gh auth token)"'
fi
๐ณ Docker-Desktop settings:
Docker Engine (~/.docker/daemon.json):
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": true,
"features": {
"buildkit": true
}
}
Features in Development:
Advanced:
~/.actrc:
--container-architecture linux/arm64
--rm=true
--reuse=false
-P ubuntu-latest=mauwii/ubuntu-act:latest
-P ubuntu-22.04=mauwii/ubuntu-act:22.04
-P ubuntu-20.04=mauwii/ubuntu-act:20.04
As always, there are different options to build the images locally. I added docker-bake.hcl which
helps with orchestrating builds but needs buildx to be available on the host (it comes out of the
box with docker desktop).
Warning
Bake Files are still considered experimental, and your results may be totally different depending on your local docker configuration.
using the local tag:
docker buildx bake \
--set "*.platform=linux/$(uname -m)"
using the current branch as a tag name and set better labels, without pushing the cache to the registry:
GITHUB_SHA="$(git rev-parse HEAD)" \
REF_NAME="$(git rev-parse --abbrev-ref HEAD)" \
docker buildx bake \
--set="*.cache-to=" \
--set="*.platform=linux/$(uname -m)"
When you do this from the main branch and already use the latest image, it will be replaced with the one you just built.
To execute the mega-linter locally without the needs to install it, there are different options:
you can use act (I assume you run act the way I just explained):
act -W .github/workflows/mega-linter.yml
This has the advantage that megalinter executes with the same settings as the workflow itself, while not providing fixed versions if errors where found.
or you could use npx:
npx mega-linter-runner \
--flavor terraform \
--remove-container
I integrated a pre-commit hook to run mega-linter. There are different ways to install pre-commit on
your system. I used brew since I am working on MacOS (brew install pre-commit). Another easy way
would be via pipx.
After successfully installing pre-commit on your system, you need to run pre-commit install in the
repository root if you want to enable the pre-commit hooks on your system as well.
Content type
Image
Digest
sha256:05bf90d6bโฆ
Size
2.1 GB
Last updated
over 2 years ago
docker pull mauwii/ubuntu-act