Skip to content

actionlint

GitHub stars GitHub release (latest SemVer) GitHub last commit GitHub commit activity GitHub contributors

Static checker for GitHub Actions workflow files

actionlint documentation

actionlint - GitHub

Configuration in MegaLinter

Variable Description Default value
ACTION_ACTIONLINT_ARGUMENTS User custom arguments to add in linter CLI call
Ex: -s --foo "bar"
ACTION_ACTIONLINT_FILTER_REGEX_INCLUDE Custom regex including filter
Ex: (src\|lib)
Include every file
ACTION_ACTIONLINT_FILTER_REGEX_EXCLUDE Custom regex excluding filter
Ex: (test\|examples)
Exclude no file
ACTION_ACTIONLINT_CLI_LINT_MODE Override default CLI lint mode
- file: Calls the linter for each file
- list_of_files: Call the linter with the list of files as argument
- project: Call the linter from the root of the project
list_of_files
ACTION_ACTIONLINT_FILE_EXTENSIONS Allowed file extensions. "*" matches any extension, "" matches empty extension. Empty list excludes all files
Ex: [".py", ""]
[".yml", ".yaml"]
ACTION_ACTIONLINT_FILE_NAMES_REGEX File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: ["Dockerfile(-.+)?", "Jenkinsfile"]
Include every file
ACTION_ACTIONLINT_PRE_COMMANDS List of bash commands to run before the linter None
ACTION_ACTIONLINT_POST_COMMANDS List of bash commands to run after the linter None
ACTION_ACTIONLINT_UNSECURED_ENV_VARIABLES List of env variables explicitly not filtered before calling ACTION_ACTIONLINT and its pre/post commands None
ACTION_ACTIONLINT_CONFIG_FILE actionlint configuration file nameUse LINTER_DEFAULT to let the linter find it actionlint.yml
ACTION_ACTIONLINT_RULES_PATH Path where to find linter configuration file Workspace folder, then MegaLinter default rules
ACTION_ACTIONLINT_DISABLE_ERRORS Run linter but consider errors as warnings false
ACTION_ACTIONLINT_DISABLE_ERRORS_IF_LESS_THAN Maximum number of errors allowed 0
ACTION_ACTIONLINT_CLI_EXECUTABLE Override CLI executable ['actionlint']
ACTION_DIRECTORY Directory containing ACTION files .github/workflows

MegaLinter Flavours

This linter is available in the following flavours

Flavor Description Embedded linters Info
all Default MegaLinter Flavor 113 Docker Image Size (tag) Docker Pulls
cupcake MegaLinter for the most commonly used languages 81 Docker Image Size (tag) Docker Pulls
documentation MegaLinter for documentation projects 47 Docker Image Size (tag) Docker Pulls
dotnet Optimized for C, C++, C# or VB based projects 59 Docker Image Size (tag) Docker Pulls
go Optimized for GO based projects 49 Docker Image Size (tag) Docker Pulls
java Optimized for JAVA based projects 51 Docker Image Size (tag) Docker Pulls
javascript Optimized for JAVASCRIPT or TYPESCRIPT based projects 56 Docker Image Size (tag) Docker Pulls
php Optimized for PHP based projects 50 Docker Image Size (tag) Docker Pulls
python Optimized for PYTHON based projects 58 Docker Image Size (tag) Docker Pulls
ruby Optimized for RUBY based projects 47 Docker Image Size (tag) Docker Pulls
rust Optimized for RUST based projects 47 Docker Image Size (tag) Docker Pulls
salesforce Optimized for Salesforce based projects 50 Docker Image Size (tag) Docker Pulls
swift Optimized for SWIFT based projects 47 Docker Image Size (tag) Docker Pulls
terraform Optimized for TERRAFORM based projects 51 Docker Image Size (tag) Docker Pulls

Behind the scenes

How are identified applicable files

  • Activated only if sub-directory .github/workflows is found. (directory name can be overridden with ACTION_DIRECTORY)
  • File extensions: .yml, .yaml

How the linting is performed

  • actionlint is called once with the list of files as arguments (list_of_files CLI lint mode)

Example calls

actionlint /path/to/workflow1.yml /path/to/workflow2.yaml

Help content

Usage: actionlint [FLAGS] [FILES...] [-]

  actionlint is a linter for GitHub Actions workflow files.

  To check all YAML files in current repository, just run actionlint without
  arguments. It automatically finds the nearest '.github/workflows' directory:

    $ actionlint

  To check specific files, pass the file paths as arguments:

    $ actionlint file1.yaml file2.yaml

  To check content which is not saved in file yet (e.g. output from some
  command), pass - argument. It reads stdin and checks it as workflow file:

    $ actionlint -

  To serialize errors into JSON, use -format option. It allows to format error
  messages flexibly with Go template syntax.

    $ actionlint -format '{{json .}}'

Documents:

  https://github.com/rhysd/actionlint/tree/main/docs

Flags:
  -color
      Always enable colorful output. This is useful to force colorful outputs
  -config-file string
      File path to config file
  -debug
      Enable debug output (for development)
  -format string
      Custom template to format error messages in Go template syntax. See https://github.com/rhysd/actionlint/tree/main/docs/usage.md#format
  -ignore value
      Regular expression matching to error messages you want to ignore. This flag is repeatable
  -init-config
      Generate default config file at .github/actionlint.yaml in current project
  -no-color
      Disable colorful output
  -oneline
      Use one line per one error. Useful for reading error messages from programs
  -pyflakes string
      Command name or file path of "pyflakes" external command. If empty, pyflakes integration will be disabled (default "pyflakes")
  -shellcheck string
      Command name or file path of "shellcheck" external command. If empty, shellcheck integration will be disabled (default "shellcheck")
  -stdin-filename string
      File name when reading input from stdin
  -verbose
      Enable verbose output
  -version
      Show version and how this binary was installed

Installation on mega-linter Docker image

  • Dockerfile commands :
FROM rhysd/actionlint:latest as actionlint
# shellcheck is a dependency for actionlint

FROM koalaman/shellcheck:stable as shellcheck
COPY --link --from=actionlint /usr/local/bin/actionlint /usr/bin/actionlint
# shellcheck is a dependency for actionlint

COPY --link --from=shellcheck /bin/shellcheck /usr/bin/shellcheck