mirror of
https://github.com/super-linter/super-linter.git
synced 2025-03-12 17:29:38 -04:00
Some checks are pending
Publish Images / Build and Test (push) Waiting to run
Publish Images / Release (push) Blocked by required conditions
Build and Test / Set build metadata (push) Waiting to run
Build and Test / Build and Test (push) Blocked by required conditions
Build and Test / Test the Super-linter GitHub Action (push) Blocked by required conditions
Build and Test / Build test suite matrix (push) Waiting to run
Build and Test / Run test cases (push) Blocked by required conditions
Build and Test / Check if all the tests passed (push) Blocked by required conditions
Build and Test / preview-release-notes (push) Waiting to run
Lint commit / commitlint (push) Waiting to run
Install dependencies with Composer when any PHP linter is enabled and there are files to lint with that linter, not just when Psalm is enabled. Close #6336 Close #6598 Close #6597
166 lines
5.6 KiB
Markdown
166 lines
5.6 KiB
Markdown
# Run super-linter outside GitHub Actions
|
|
|
|
If you want to run super-linter outside GitHub Actions, you need a container
|
|
runtime engine to run the super-linter container image.
|
|
|
|
## Run super-linter Locally
|
|
|
|
You can run the container locally with the following configuration options to
|
|
run your code:
|
|
|
|
```bash
|
|
docker run \
|
|
-e LOG_LEVEL=DEBUG \
|
|
-e RUN_LOCAL=true \
|
|
-v /path/to/local/codebase:/tmp/lint \
|
|
--rm \
|
|
ghcr.io/super-linter/super-linter:latest
|
|
```
|
|
|
|
This example uses the `latest` container image version. If you're trying to
|
|
reproduce an issue, or running super-linter as part of your CI pipeline, we
|
|
recommend that you **refer to a specific version instead**.
|
|
|
|
Notes:
|
|
|
|
- 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`
|
|
- You need to pass the `RUN_LOCAL` option to bypass some of the GitHub Actions
|
|
checks, as well as the mapping of your local codebase to `/tmp/lint`.
|
|
- If you want to override the `/tmp/lint` folder, you can set the
|
|
`DEFAULT_WORKSPACE` environment variable to point to the folder you'd prefer
|
|
to scan.
|
|
- If the default branch for your repository doesn't match the default, you can
|
|
use the `DEFAULT_BRANCH` variable to set the default branch. For more
|
|
information about the default value of the `DEFAULT_BRANCH` variable, see the
|
|
[Readme](../README.md).
|
|
- You can add as many configuration options as needed. Configuration options are
|
|
documented in the [readme](../README.md#configure-super-linter).
|
|
|
|
### GitLab
|
|
|
|
To run Super-linter in your GitLab CI/CD pipeline, You can use the following
|
|
snippet:
|
|
|
|
```yaml
|
|
super-linter:
|
|
# More info at https://github.com/super-linter/super-linter
|
|
stage: Super-linter
|
|
# Use a specific Super-linter version instead of latest for more reproducible builds
|
|
image: super-linter/super-linter:latest
|
|
script: ["true"]
|
|
variables:
|
|
RUN_LOCAL: "true"
|
|
DEFAULT_WORKSPACE: $CI_PROJECT_DIR
|
|
```
|
|
|
|
Note that this is a high-level example that you should customize for your needs.
|
|
|
|
### Run on Codespaces and Visual Studio Code
|
|
|
|
This repository provides a DevContainer for
|
|
[remote development](https://code.visualstudio.com/docs/remote/containers).
|
|
|
|
## Share Environment variables between environments
|
|
|
|
To avoid duplication if you run super-linter both locally and in other
|
|
environements, such as CI, you can define configuration options once, and load
|
|
them accordingly:
|
|
|
|
1. Create a configuration file for super-linter `super-linter.env`. For example:
|
|
|
|
```bash
|
|
VALIDATE_ALL_CODEBASE=true
|
|
```
|
|
|
|
1. Load the super-linter configuration file when running outside GitHub Actions:
|
|
|
|
```bash
|
|
docker run --rm \
|
|
-e RUN_LOCAL=true \
|
|
--env-file ".github/super-linter.env" \
|
|
-v "$(pwd)":/tmp/lint \
|
|
ghcr.io/super-linter/super-linter:latest
|
|
```
|
|
|
|
1. Load the super-linter configuration file when running in GitHub Actions by
|
|
adding the following step to the GitHub Actions workflow that runs
|
|
super-linter, after checking out your repository and before running
|
|
super-linter:
|
|
|
|
```yaml
|
|
- name: Load super-linter configuration
|
|
# Use grep inverse matching to exclude eventual comments in the .env file
|
|
# because the GitHub Actions command to set environment variables doesn't
|
|
# support comments.
|
|
# Ref: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#setting-an-environment-variable
|
|
run: grep -v '^#' .github/super-linter.env >> "$GITHUB_ENV"
|
|
```
|
|
|
|
## Build the container image and run the test suite locally
|
|
|
|
To run the build and test process locally, in the top-level super-linter
|
|
directory, do the following:
|
|
|
|
1. [Create a fine-grained GitHub personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token).
|
|
The token only needs to have public/read-only access.
|
|
|
|
1. Store the generated personal access token in a file in the top-level
|
|
directory (This file is ignored by Git).
|
|
|
|
```bash
|
|
echo "github_pat_XXXXXX_XXXXXX" > .github-personal-access-token
|
|
```
|
|
|
|
1. Run the build process:
|
|
|
|
```bash
|
|
. ./scripts/build-metadata.sh && make
|
|
```
|
|
|
|
To avoid invalidating the build cache because of changing values of build
|
|
arguments, you can set build arguments to arbitrary values before running
|
|
`make`, instead of sourcing `scripts/build-metadata.sh`:
|
|
|
|
```bash
|
|
BUILD_DATE=2023-12-12T09:32:05Z \
|
|
BUILD_REVISION=83c16f63caa9d432df4519efb4c58a56e2190bd6 \
|
|
BUILD_VERSION=83c16f63caa9d432df4519efb4c58a56e2190bd6 \
|
|
make
|
|
```
|
|
|
|
### 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 `v5.4.3` container image
|
|
version.
|
|
|
|
```shell
|
|
CONTAINER_IMAGE_ID="ghcr.io/super-linter/super-linter:v5.4.3" \
|
|
BUILD_DATE="2023-10-17T17:00:53Z" \
|
|
BUILD_REVISION=b0d1acee1f8050d1684a28ddbf8315f81d084fe9 \
|
|
BUILD_VERSION=b0d1acee1f8050d1684a28ddbf8315f81d084fe9 \
|
|
make docker-pull test
|
|
```
|
|
|
|
Initialize the `BUILD_DATE`, `BUILD_REVISION`, and `BUILD_VERSION` variables
|
|
with the values for that specific container image version. You can get these
|
|
values from the build log for that version.
|
|
|
|
### Get the list of available build targets
|
|
|
|
To get the list of the available `Make` targets, run the following command:
|
|
|
|
```shell
|
|
make help
|
|
```
|
|
|
|
### Automatically fix formatting and linting issues
|
|
|
|
To automatically fix linting and formatting issues when supported, run the
|
|
following command:
|
|
|
|
```shell
|
|
make fix-codebase
|
|
```
|