* Use the same image tags in CI and CD * Define image tag once per workflow * Fix yq tag * Don't quote yq to avoid literal interpretation * yq version * Fix yq tag * Reduce duplication * Fix workflow env var * Don't remove an already removed container
4.8 KiB
Run Super-Linter locally to test your branch of code
If you want to test locally against the Super-Linter to test your branch of code, you will need to complete the following:
- Clone your testing source code to your local environment
- Install Docker to your local environment
- Pull the container down
- Run the container locally
- Run the test suite locally
- Troubleshoot
Install Docker to your local machine
You can follow the link below on how to install and configure Docker on your local machine
Download the latest Super-Linter Docker container
- Pull the latest Docker container down from DockerHub
docker pull ghcr.io/super-linter/super-linter:latest
Once the container has been downloaded to your local environment, you can then begin the process, or running the container against your codebase.
Run the container Locally
- You can run the container locally with the following Base flags to run your code:
docker run -e RUN_LOCAL=true -e USE_FIND_ALGORITHM=true -v /path/to/local/codebase:/tmp/lint ghcr.io/super-linter/super-linter
- To run against a single file you can use:
docker run -e RUN_LOCAL=true -e USE_FIND_ALGORITHM=true -v /path/to/local/codebase/file:/tmp/lint/file ghcr.io/super-linter/super-linter
- To run against a single file you can use:
- NOTE: You need to pass the
RUN_LOCAL
flag to bypass some of the GitHub Actions checks, as well as the mapping of your local codebase to/tmp/lint
so that the linter can pick up the code - NOTE: If you want to override the
/tmp/lint
folder, you can set theDEFAULT_WORKSPACE
environment variable to point to the folder you'd prefer to scan. - NOTE: The flag:
RUN_LOCAL
will set:VALIDATE_ALL_CODEBASE
to true. This means it will scan all the files in the directory you have mapped. If you want to only validate a subset of your codebase, map a folder with only the files you wish to have linted - NOTE: Add the
--rm
docker flag to automatically remove the container after execution.
Flags for running Locally
You can add as many Additional flags as needed, documented in README.md
Sharing Environment variables between Local and CI
If you run both locally and on CI it's very helpful to only have to define your env variables once. This is one setup using Github's STRTA style to do so.
.github/super-linter.env
This is the shared location for the super-linter variables. Example:
VALIDATE_ALL_CODEBASE=true
VALIDATE_DOCKERFILE_HADOLINT=false
VALIDATE_EDITORCONFIG=false
VALIDATE_GITLEAKS=false
scripts/lint
This always runs the local docker based linting.
docker run --rm \
-e RUN_LOCAL=true \
--env-file ".github/super-linter.env" \
-v "$PWD":/tmp/lint ghcr.io/super-linter/super-linter:v5
scripts/test
This runs the local lint when not on CI.
if [ "$(whoami)" == "runner" ]; then
echo "We are on GitHub, so don't run lint manually"
else
echo "Running locally because we don't think we are on GitHub"
lint_ci
fi
.github/workflows/ci.yml
This loads the environment variables before running the GitHub Actions job.
name: CI
on:
pull_request:
jobs:
lint:
# Run GH Super-Linter against code base
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cat .github/super-linter.env >> "$GITHUB_ENV"
- name: Lint Code Base
uses: super-linter/super-linter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BRANCH: develop
Build the container image and run the test suite locally
You can run the test suite locally with the following command:
make
The test suite will build the container image and run the test suite against a a container that is an instance of that container image.
Run the test suite against an arbitrary super-linter container image
You can run the test suite against an arbitrary super-linter container image.
Here is an example that runs the test suite against the standard
flavor of the
v5.4.3
image.
CONTAINER_IMAGE_ID="ghcr.io/super-linter/super-linter:v5.4.3" \
CONTAINER_IMAGE_TARGET="standard" \
make docker-pull test
Troubleshooting
Run container and gain access to the command-line
If you need to run the container locally and gain access to its command-line, you can run the following command:
docker run -it --entrypoint /bin/bash ghcr.io/super-linter/super-linter
- This will drop you in the command-line of the docker container for any testing or troubleshooting that may be needed.
Found issues
If you find a bug or issue, please open a GitHub issue at: super-linter/super-linter/issues