Commit a5a060e
authored
CI and runtime performance optimizations (#8624)
* CI and runtime performance optimizations
- Skip file CLI lint mode tests when list_of_files is also supported (ports #8410)
- Hand off the DEV Docker image to consumer jobs via ghcr.io for same-repo branches (artifact kept for forked PRs), with daily pruning of megalinter-dev images
- Build only per-linter images impacted by a PR's changed files, full matrix on any doubt
- Restrict MegaLinter self-lint and runner test workflows push trigger to main-line branches to remove duplicate push+PR runs
- Schedule fixer linters of a descriptor first, then run its check-only linters in parallel instead of serializing the whole descriptor group
- Report linter versions from a manifest baked at Docker build time; new VERSION_GET_AT_RUNTIME variable to force runtime collection (tests and auto-update job always do)
- Move TAP reporter golden tests from all generated linter test classes to a dedicated curated class, remove stale Super-Linter-era expected files
* Fix secretlint report-folder race and declare supported_cli_lint_modes on zizmor, shfmt, revive
- secretlint project-mode glob could pick transient report files written by
linters running in parallel (jscpd-report.html), crashing with ENOENT:
megalinter-reports/ is now in .secretlintignore
- zizmor, shfmt and revive were falling back to the file-only default of
supported_cli_lint_modes, so their file lint mode tests ran while their
real list_of_files runtime mode was never tested
* Fix brace-expansion CVE-2026-69152 in gherkin images, add ENOENT to cspell words
Top-level brace-expansion@1.1.18 install makes npm hoist and dedupe the
vulnerable 1.1.14 nested in gherkin-lint's glob/minimatch chain (verified
locally with npm ls). Manual pin on the 1.x line on purpose: 5.x would not
satisfy the nested ^1.1.x range and the dedupe would silently stop.
* Ignore CVE-2026-69152 in trivy instead of overriding brace-expansion
Follow-up of the already-ignored CVE-2026-14257: same expand() DoS class,
same non-exploitability reasoning (glob patterns only come from the repo's
own configuration, one-shot CI process). Reverts the top-level npm override.
* [MegaLinter] Apply linters fixes :)
* Use docker/login-action for ghcr pulls in DEV consumer jobs
Replaces the raw docker login (which warns about unencrypted credential
storage in the runner's config.json) and adds automatic logout in the
action's post step.
* CHANGELOG: measured before/after numbers for CI and runtime optimizations
---------
Co-authored-by: nvuillam <17500430+nvuillam@users.noreply.github.com>1 parent 2ce776a commit a5a060e
190 files changed
Lines changed: 975 additions & 180 deletions
File tree
- .automation/test
- coffeescript/reports
- c/report
- dart/reports
- docker/reports
- javascript_standard/reports
- javascript/reports
- perl/reports
- php/reports
- raku/reports
- ruby/reports
- xml/reports
- .claude
- agents
- rules
- skills
- add-linter
- fix-linter-test
- pr-watch-fix
- review-descriptor
- test
- .github/workflows
- docs
- flavors
- c_cpp
- ci_light
- cupcake
- documentation
- dotnetweb
- dotnet
- formatters
- go
- javascript
- java
- php
- python
- ruby
- rust
- salesforce
- security
- swift
- terraform
- linters
- action_actionlint
- action_zizmor
- ansible_ansible_lint
- arm_arm_ttk
- bash_exec
- bash_shellcheck
- bash_shfmt
- bicep_bicep_linter
- c_clang_format
- c_cppcheck
- c_cpplint
- clojure_clj_kondo
- clojure_cljstyle
- cloudformation_cfn_lint
- coffee_coffeelint
- copypaste_jscpd
- cpp_clang_format
- cpp_cppcheck
- cpp_cpplint
- csharp_csharpier
- csharp_dotnet_format
- csharp_roslynator
- css_stylelint
- dart_dartanalyzer
- dockerfile_hadolint
- editorconfig_editorconfig_checker
- env_dotenv_linter
- gherkin_gherkin_lint
- go_golangci_lint
- go_revive
- graphql_graphql_schema_linter
- groovy_npm_groovy_lint
- html_djlint
- html_htmlhint
- java_checkstyle
- java_pmd
- javascript_es
- javascript_prettier
- javascript_standard
- json_jsonlint
- json_npm_package_json_lint
- json_prettier
- json_v8r
- jsx_eslint
- kotlin_detekt
- kotlin_ktlint
- kubernetes_helm
- kubernetes_kubeconform
- kubernetes_kubescape
- latex_chktex
- lua_luacheck
- lua_stylua
- markdown_markdown_table_formatter
- markdown_markdownlint
- markdown_rumdl
- perl_perlcritic
- php_phpcsfixer
- php_phpcs
- php_phplint
- php_phpstan
- php_psalm
- powershell_powershell_formatter
- powershell_powershell
- protobuf_protolint
- python_bandit
- python_black
- python_flake8
- python_isort
- python_mypy
- python_nbqa_mypy
- python_pylint
- python_pyright
- python_ruff_format
- python_ruff
- r_lintr
- raku_raku
- repository_betterleaks
- repository_checkov
- repository_devskim
- repository_dustilock
- repository_git_diff
- repository_grype
- repository_kingfisher
- repository_ls_lint
- repository_osv_scanner
- repository_secretlint
- repository_semgrep
- repository_syft
- repository_trivy_sbom
- repository_trivy
- repository_trufflehog
- robotframework_robocop
- rst_rst_lint
- rst_rstcheck
- rst_rstfmt
- ruby_rubocop
- rust_clippy
- salesforce_code_analyzer_apex
- salesforce_code_analyzer_aura
- salesforce_code_analyzer_flow
- salesforce_code_analyzer_lwc
- scala_scalafix
- snakemake_lint
- snakemake_snakefmt
- spell_codespell
- spell_cspell
- spell_lychee
- spell_proselint
- spell_vale
- sql_sqlfluff
- swift_swiftlint
- tekton_tekton_lint
- terraform_terraform_fmt
- terraform_terragrunt
- terraform_tflint
- tsx_eslint
- typescript_es
- typescript_prettier
- typescript_standard
- vbdotnet_dotnet_format
- xml_xmllint
- yaml_prettier
- yaml_v8r
- yaml_yamllint
- mega-linter-runner/lib
- megalinter
- descriptors
- schemas
- tests/test_megalinter
- linters
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
This file was deleted.
Lines changed: 0 additions & 7 deletions
This file was deleted.
This file was deleted.
This file was deleted.
Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 0 additions & 7 deletions
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
0 commit comments