eslint-plugin-github-actions-2 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/LICENSE +21 -0
- package/README.md +164 -0
- package/dist/_internal/case-police-dictionary.d.ts +10 -0
- package/dist/_internal/case-police-dictionary.d.ts.map +1 -0
- package/dist/_internal/case-police-dictionary.js +486 -0
- package/dist/_internal/case-police-dictionary.js.map +1 -0
- package/dist/_internal/casing.d.ts +17 -0
- package/dist/_internal/casing.d.ts.map +1 -0
- package/dist/_internal/casing.js +197 -0
- package/dist/_internal/casing.js.map +1 -0
- package/dist/_internal/github-actions-config-references.d.ts +16 -0
- package/dist/_internal/github-actions-config-references.d.ts.map +1 -0
- package/dist/_internal/github-actions-config-references.js +76 -0
- package/dist/_internal/github-actions-config-references.js.map +1 -0
- package/dist/_internal/github-actions-trigger-events.d.ts +13 -0
- package/dist/_internal/github-actions-trigger-events.d.ts.map +1 -0
- package/dist/_internal/github-actions-trigger-events.js +47 -0
- package/dist/_internal/github-actions-trigger-events.js.map +1 -0
- package/dist/_internal/github-expressions.d.ts +9 -0
- package/dist/_internal/github-expressions.d.ts.map +1 -0
- package/dist/_internal/github-expressions.js +87 -0
- package/dist/_internal/github-expressions.js.map +1 -0
- package/dist/_internal/lint-targets.d.ts +21 -0
- package/dist/_internal/lint-targets.d.ts.map +1 -0
- package/dist/_internal/lint-targets.js +60 -0
- package/dist/_internal/lint-targets.js.map +1 -0
- package/dist/_internal/rule-docs.d.ts +16 -0
- package/dist/_internal/rule-docs.d.ts.map +1 -0
- package/dist/_internal/rule-docs.js +2 -0
- package/dist/_internal/rule-docs.js.map +1 -0
- package/dist/_internal/rules-registry.d.ts +145 -0
- package/dist/_internal/rules-registry.d.ts.map +1 -0
- package/dist/_internal/rules-registry.js +144 -0
- package/dist/_internal/rules-registry.js.map +1 -0
- package/dist/_internal/workflow-template-properties.d.ts +20 -0
- package/dist/_internal/workflow-template-properties.d.ts.map +1 -0
- package/dist/_internal/workflow-template-properties.js +44 -0
- package/dist/_internal/workflow-template-properties.js.map +1 -0
- package/dist/_internal/workflow-yaml.d.ts +47 -0
- package/dist/_internal/workflow-yaml.d.ts.map +1 -0
- package/dist/_internal/workflow-yaml.js +140 -0
- package/dist/_internal/workflow-yaml.js.map +1 -0
- package/dist/_internal/yaml-traversal.d.ts +10 -0
- package/dist/_internal/yaml-traversal.d.ts.map +1 -0
- package/dist/_internal/yaml-traversal.js +38 -0
- package/dist/_internal/yaml-traversal.js.map +1 -0
- package/dist/plugin.cjs +7107 -0
- package/dist/plugin.cjs.map +7 -0
- package/dist/plugin.d.cts +34 -0
- package/dist/plugin.d.ts +34 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +122 -0
- package/dist/plugin.js.map +1 -0
- package/dist/rules/action-name-casing.d.ts +9 -0
- package/dist/rules/action-name-casing.d.ts.map +1 -0
- package/dist/rules/action-name-casing.js +141 -0
- package/dist/rules/action-name-casing.js.map +1 -0
- package/dist/rules/job-id-casing.d.ts +9 -0
- package/dist/rules/job-id-casing.d.ts.map +1 -0
- package/dist/rules/job-id-casing.js +123 -0
- package/dist/rules/job-id-casing.js.map +1 -0
- package/dist/rules/max-jobs-per-action.d.ts +9 -0
- package/dist/rules/max-jobs-per-action.d.ts.map +1 -0
- package/dist/rules/max-jobs-per-action.js +61 -0
- package/dist/rules/max-jobs-per-action.js.map +1 -0
- package/dist/rules/no-case-insensitive-input-id-collision.d.ts +9 -0
- package/dist/rules/no-case-insensitive-input-id-collision.d.ts.map +1 -0
- package/dist/rules/no-case-insensitive-input-id-collision.js +66 -0
- package/dist/rules/no-case-insensitive-input-id-collision.js.map +1 -0
- package/dist/rules/no-composite-input-env-access.d.ts +9 -0
- package/dist/rules/no-composite-input-env-access.d.ts.map +1 -0
- package/dist/rules/no-composite-input-env-access.js +62 -0
- package/dist/rules/no-composite-input-env-access.js.map +1 -0
- package/dist/rules/no-deprecated-node-runtime.d.ts +9 -0
- package/dist/rules/no-deprecated-node-runtime.d.ts.map +1 -0
- package/dist/rules/no-deprecated-node-runtime.js +59 -0
- package/dist/rules/no-deprecated-node-runtime.js.map +1 -0
- package/dist/rules/no-duplicate-composite-step-id.d.ts +9 -0
- package/dist/rules/no-duplicate-composite-step-id.d.ts.map +1 -0
- package/dist/rules/no-duplicate-composite-step-id.js +74 -0
- package/dist/rules/no-duplicate-composite-step-id.js.map +1 -0
- package/dist/rules/no-empty-template-file-pattern.d.ts +9 -0
- package/dist/rules/no-empty-template-file-pattern.d.ts.map +1 -0
- package/dist/rules/no-empty-template-file-pattern.js +49 -0
- package/dist/rules/no-empty-template-file-pattern.js.map +1 -0
- package/dist/rules/no-external-job.d.ts +9 -0
- package/dist/rules/no-external-job.d.ts.map +1 -0
- package/dist/rules/no-external-job.js +49 -0
- package/dist/rules/no-external-job.js.map +1 -0
- package/dist/rules/no-hardcoded-default-branch-in-template.d.ts +9 -0
- package/dist/rules/no-hardcoded-default-branch-in-template.d.ts.map +1 -0
- package/dist/rules/no-hardcoded-default-branch-in-template.js +54 -0
- package/dist/rules/no-hardcoded-default-branch-in-template.js.map +1 -0
- package/dist/rules/no-icon-file-extension-in-template-icon-name.d.ts +9 -0
- package/dist/rules/no-icon-file-extension-in-template-icon-name.d.ts.map +1 -0
- package/dist/rules/no-icon-file-extension-in-template-icon-name.js +54 -0
- package/dist/rules/no-icon-file-extension-in-template-icon-name.js.map +1 -0
- package/dist/rules/no-inherit-secrets.d.ts +9 -0
- package/dist/rules/no-inherit-secrets.d.ts.map +1 -0
- package/dist/rules/no-inherit-secrets.js +57 -0
- package/dist/rules/no-inherit-secrets.js.map +1 -0
- package/dist/rules/no-invalid-concurrency-context.d.ts +9 -0
- package/dist/rules/no-invalid-concurrency-context.d.ts.map +1 -0
- package/dist/rules/no-invalid-concurrency-context.js +141 -0
- package/dist/rules/no-invalid-concurrency-context.js.map +1 -0
- package/dist/rules/no-invalid-key.d.ts +9 -0
- package/dist/rules/no-invalid-key.d.ts.map +1 -0
- package/dist/rules/no-invalid-key.js +152 -0
- package/dist/rules/no-invalid-key.js.map +1 -0
- package/dist/rules/no-invalid-reusable-workflow-job-key.d.ts +9 -0
- package/dist/rules/no-invalid-reusable-workflow-job-key.d.ts.map +1 -0
- package/dist/rules/no-invalid-reusable-workflow-job-key.js +73 -0
- package/dist/rules/no-invalid-reusable-workflow-job-key.js.map +1 -0
- package/dist/rules/no-invalid-template-file-pattern-regex.d.ts +9 -0
- package/dist/rules/no-invalid-template-file-pattern-regex.d.ts.map +1 -0
- package/dist/rules/no-invalid-template-file-pattern-regex.js +58 -0
- package/dist/rules/no-invalid-template-file-pattern-regex.js.map +1 -0
- package/dist/rules/no-invalid-workflow-call-output-value.d.ts +9 -0
- package/dist/rules/no-invalid-workflow-call-output-value.d.ts.map +1 -0
- package/dist/rules/no-invalid-workflow-call-output-value.js +99 -0
- package/dist/rules/no-invalid-workflow-call-output-value.js.map +1 -0
- package/dist/rules/no-path-separators-in-template-icon-name.d.ts +9 -0
- package/dist/rules/no-path-separators-in-template-icon-name.d.ts.map +1 -0
- package/dist/rules/no-path-separators-in-template-icon-name.js +52 -0
- package/dist/rules/no-path-separators-in-template-icon-name.js.map +1 -0
- package/dist/rules/no-post-if-without-post.d.ts +9 -0
- package/dist/rules/no-post-if-without-post.d.ts.map +1 -0
- package/dist/rules/no-post-if-without-post.js +52 -0
- package/dist/rules/no-post-if-without-post.js.map +1 -0
- package/dist/rules/no-pr-head-checkout-in-pull-request-target.d.ts +12 -0
- package/dist/rules/no-pr-head-checkout-in-pull-request-target.d.ts.map +1 -0
- package/dist/rules/no-pr-head-checkout-in-pull-request-target.js +89 -0
- package/dist/rules/no-pr-head-checkout-in-pull-request-target.js.map +1 -0
- package/dist/rules/no-pre-if-without-pre.d.ts +9 -0
- package/dist/rules/no-pre-if-without-pre.d.ts.map +1 -0
- package/dist/rules/no-pre-if-without-pre.js +51 -0
- package/dist/rules/no-pre-if-without-pre.js.map +1 -0
- package/dist/rules/no-required-input-with-default.d.ts +9 -0
- package/dist/rules/no-required-input-with-default.d.ts.map +1 -0
- package/dist/rules/no-required-input-with-default.js +68 -0
- package/dist/rules/no-required-input-with-default.js.map +1 -0
- package/dist/rules/no-secrets-in-if.d.ts +9 -0
- package/dist/rules/no-secrets-in-if.d.ts.map +1 -0
- package/dist/rules/no-secrets-in-if.js +84 -0
- package/dist/rules/no-secrets-in-if.js.map +1 -0
- package/dist/rules/no-self-hosted-runner-on-fork-pr-events.d.ts +9 -0
- package/dist/rules/no-self-hosted-runner-on-fork-pr-events.d.ts.map +1 -0
- package/dist/rules/no-self-hosted-runner-on-fork-pr-events.js +93 -0
- package/dist/rules/no-self-hosted-runner-on-fork-pr-events.js.map +1 -0
- package/dist/rules/no-subdirectory-template-file-pattern.d.ts +9 -0
- package/dist/rules/no-subdirectory-template-file-pattern.d.ts.map +1 -0
- package/dist/rules/no-subdirectory-template-file-pattern.js +52 -0
- package/dist/rules/no-subdirectory-template-file-pattern.js.map +1 -0
- package/dist/rules/no-template-placeholder-in-non-template-workflow.d.ts +9 -0
- package/dist/rules/no-template-placeholder-in-non-template-workflow.d.ts.map +1 -0
- package/dist/rules/no-template-placeholder-in-non-template-workflow.js +55 -0
- package/dist/rules/no-template-placeholder-in-non-template-workflow.js.map +1 -0
- package/dist/rules/no-top-level-env.d.ts +9 -0
- package/dist/rules/no-top-level-env.d.ts.map +1 -0
- package/dist/rules/no-top-level-env.js +42 -0
- package/dist/rules/no-top-level-env.js.map +1 -0
- package/dist/rules/no-top-level-permissions.d.ts +9 -0
- package/dist/rules/no-top-level-permissions.d.ts.map +1 -0
- package/dist/rules/no-top-level-permissions.js +39 -0
- package/dist/rules/no-top-level-permissions.js.map +1 -0
- package/dist/rules/no-universal-template-file-pattern.d.ts +9 -0
- package/dist/rules/no-universal-template-file-pattern.d.ts.map +1 -0
- package/dist/rules/no-universal-template-file-pattern.js +60 -0
- package/dist/rules/no-universal-template-file-pattern.js.map +1 -0
- package/dist/rules/no-unknown-input-reference-in-composite.d.ts +9 -0
- package/dist/rules/no-unknown-input-reference-in-composite.d.ts.map +1 -0
- package/dist/rules/no-unknown-input-reference-in-composite.js +80 -0
- package/dist/rules/no-unknown-input-reference-in-composite.js.map +1 -0
- package/dist/rules/no-unknown-job-output-reference.d.ts +9 -0
- package/dist/rules/no-unknown-job-output-reference.d.ts.map +1 -0
- package/dist/rules/no-unknown-job-output-reference.js +229 -0
- package/dist/rules/no-unknown-job-output-reference.js.map +1 -0
- package/dist/rules/no-unknown-step-reference.d.ts +9 -0
- package/dist/rules/no-unknown-step-reference.d.ts.map +1 -0
- package/dist/rules/no-unknown-step-reference.js +133 -0
- package/dist/rules/no-unknown-step-reference.js.map +1 -0
- package/dist/rules/no-untrusted-input-in-run.d.ts +9 -0
- package/dist/rules/no-untrusted-input-in-run.d.ts.map +1 -0
- package/dist/rules/no-untrusted-input-in-run.js +115 -0
- package/dist/rules/no-untrusted-input-in-run.js.map +1 -0
- package/dist/rules/no-unused-input-in-composite.d.ts +9 -0
- package/dist/rules/no-unused-input-in-composite.d.ts.map +1 -0
- package/dist/rules/no-unused-input-in-composite.js +78 -0
- package/dist/rules/no-unused-input-in-composite.js.map +1 -0
- package/dist/rules/no-write-all-permissions.d.ts +9 -0
- package/dist/rules/no-write-all-permissions.d.ts.map +1 -0
- package/dist/rules/no-write-all-permissions.js +61 -0
- package/dist/rules/no-write-all-permissions.js.map +1 -0
- package/dist/rules/pin-action-shas.d.ts +12 -0
- package/dist/rules/pin-action-shas.d.ts.map +1 -0
- package/dist/rules/pin-action-shas.js +100 -0
- package/dist/rules/pin-action-shas.js.map +1 -0
- package/dist/rules/prefer-action-yml.d.ts +9 -0
- package/dist/rules/prefer-action-yml.d.ts.map +1 -0
- package/dist/rules/prefer-action-yml.js +37 -0
- package/dist/rules/prefer-action-yml.js.map +1 -0
- package/dist/rules/prefer-fail-fast.d.ts +9 -0
- package/dist/rules/prefer-fail-fast.d.ts.map +1 -0
- package/dist/rules/prefer-fail-fast.js +61 -0
- package/dist/rules/prefer-fail-fast.js.map +1 -0
- package/dist/rules/prefer-file-extension.d.ts +9 -0
- package/dist/rules/prefer-file-extension.d.ts.map +1 -0
- package/dist/rules/prefer-file-extension.js +104 -0
- package/dist/rules/prefer-file-extension.js.map +1 -0
- package/dist/rules/prefer-inputs-context.d.ts +9 -0
- package/dist/rules/prefer-inputs-context.d.ts.map +1 -0
- package/dist/rules/prefer-inputs-context.js +91 -0
- package/dist/rules/prefer-inputs-context.js.map +1 -0
- package/dist/rules/prefer-step-uses-style.d.ts +9 -0
- package/dist/rules/prefer-step-uses-style.d.ts.map +1 -0
- package/dist/rules/prefer-step-uses-style.js +209 -0
- package/dist/rules/prefer-step-uses-style.js.map +1 -0
- package/dist/rules/prefer-template-yml-extension.d.ts +9 -0
- package/dist/rules/prefer-template-yml-extension.d.ts.map +1 -0
- package/dist/rules/prefer-template-yml-extension.js +41 -0
- package/dist/rules/prefer-template-yml-extension.js.map +1 -0
- package/dist/rules/require-action-name.d.ts +9 -0
- package/dist/rules/require-action-name.d.ts.map +1 -0
- package/dist/rules/require-action-name.js +57 -0
- package/dist/rules/require-action-name.js.map +1 -0
- package/dist/rules/require-action-run-name.d.ts +9 -0
- package/dist/rules/require-action-run-name.d.ts.map +1 -0
- package/dist/rules/require-action-run-name.js +56 -0
- package/dist/rules/require-action-run-name.js.map +1 -0
- package/dist/rules/require-checkout-before-local-action.d.ts +9 -0
- package/dist/rules/require-checkout-before-local-action.d.ts.map +1 -0
- package/dist/rules/require-checkout-before-local-action.js +74 -0
- package/dist/rules/require-checkout-before-local-action.js.map +1 -0
- package/dist/rules/require-composite-step-name.d.ts +9 -0
- package/dist/rules/require-composite-step-name.d.ts.map +1 -0
- package/dist/rules/require-composite-step-name.js +67 -0
- package/dist/rules/require-composite-step-name.js.map +1 -0
- package/dist/rules/require-job-name.d.ts +9 -0
- package/dist/rules/require-job-name.d.ts.map +1 -0
- package/dist/rules/require-job-name.js +70 -0
- package/dist/rules/require-job-name.js.map +1 -0
- package/dist/rules/require-job-step-name.d.ts +9 -0
- package/dist/rules/require-job-step-name.d.ts.map +1 -0
- package/dist/rules/require-job-step-name.js +71 -0
- package/dist/rules/require-job-step-name.js.map +1 -0
- package/dist/rules/require-job-timeout-minutes.d.ts +9 -0
- package/dist/rules/require-job-timeout-minutes.d.ts.map +1 -0
- package/dist/rules/require-job-timeout-minutes.js +99 -0
- package/dist/rules/require-job-timeout-minutes.js.map +1 -0
- package/dist/rules/require-merge-group-trigger.d.ts +9 -0
- package/dist/rules/require-merge-group-trigger.d.ts.map +1 -0
- package/dist/rules/require-merge-group-trigger.js +65 -0
- package/dist/rules/require-merge-group-trigger.js.map +1 -0
- package/dist/rules/require-pull-request-target-branches.d.ts +9 -0
- package/dist/rules/require-pull-request-target-branches.d.ts.map +1 -0
- package/dist/rules/require-pull-request-target-branches.js +102 -0
- package/dist/rules/require-pull-request-target-branches.js.map +1 -0
- package/dist/rules/require-run-step-shell.d.ts +9 -0
- package/dist/rules/require-run-step-shell.d.ts.map +1 -0
- package/dist/rules/require-run-step-shell.js +114 -0
- package/dist/rules/require-run-step-shell.js.map +1 -0
- package/dist/rules/require-template-categories.d.ts +9 -0
- package/dist/rules/require-template-categories.d.ts.map +1 -0
- package/dist/rules/require-template-categories.js +55 -0
- package/dist/rules/require-template-categories.js.map +1 -0
- package/dist/rules/require-template-file-patterns.d.ts +9 -0
- package/dist/rules/require-template-file-patterns.d.ts.map +1 -0
- package/dist/rules/require-template-file-patterns.js +55 -0
- package/dist/rules/require-template-file-patterns.js.map +1 -0
- package/dist/rules/require-template-icon-file-exists.d.ts +9 -0
- package/dist/rules/require-template-icon-file-exists.d.ts.map +1 -0
- package/dist/rules/require-template-icon-file-exists.js +61 -0
- package/dist/rules/require-template-icon-file-exists.js.map +1 -0
- package/dist/rules/require-template-icon-name.d.ts +9 -0
- package/dist/rules/require-template-icon-name.d.ts.map +1 -0
- package/dist/rules/require-template-icon-name.js +48 -0
- package/dist/rules/require-template-icon-name.js.map +1 -0
- package/dist/rules/require-template-workflow-name.d.ts +9 -0
- package/dist/rules/require-template-workflow-name.d.ts.map +1 -0
- package/dist/rules/require-template-workflow-name.js +48 -0
- package/dist/rules/require-template-workflow-name.js.map +1 -0
- package/dist/rules/require-trigger-types.d.ts +9 -0
- package/dist/rules/require-trigger-types.d.ts.map +1 -0
- package/dist/rules/require-trigger-types.js +126 -0
- package/dist/rules/require-trigger-types.js.map +1 -0
- package/dist/rules/require-workflow-call-input-type.d.ts +9 -0
- package/dist/rules/require-workflow-call-input-type.d.ts.map +1 -0
- package/dist/rules/require-workflow-call-input-type.js +89 -0
- package/dist/rules/require-workflow-call-input-type.js.map +1 -0
- package/dist/rules/require-workflow-call-output-value.d.ts +9 -0
- package/dist/rules/require-workflow-call-output-value.d.ts.map +1 -0
- package/dist/rules/require-workflow-call-output-value.js +79 -0
- package/dist/rules/require-workflow-call-output-value.js.map +1 -0
- package/dist/rules/require-workflow-concurrency.d.ts +9 -0
- package/dist/rules/require-workflow-concurrency.d.ts.map +1 -0
- package/dist/rules/require-workflow-concurrency.js +157 -0
- package/dist/rules/require-workflow-concurrency.js.map +1 -0
- package/dist/rules/require-workflow-dispatch-input-type.d.ts +9 -0
- package/dist/rules/require-workflow-dispatch-input-type.d.ts.map +1 -0
- package/dist/rules/require-workflow-dispatch-input-type.js +80 -0
- package/dist/rules/require-workflow-dispatch-input-type.js.map +1 -0
- package/dist/rules/require-workflow-interface-description.d.ts +9 -0
- package/dist/rules/require-workflow-interface-description.d.ts.map +1 -0
- package/dist/rules/require-workflow-interface-description.js +98 -0
- package/dist/rules/require-workflow-interface-description.js.map +1 -0
- package/dist/rules/require-workflow-permissions.d.ts +9 -0
- package/dist/rules/require-workflow-permissions.d.ts.map +1 -0
- package/dist/rules/require-workflow-permissions.js +83 -0
- package/dist/rules/require-workflow-permissions.js.map +1 -0
- package/dist/rules/require-workflow-run-branches.d.ts +9 -0
- package/dist/rules/require-workflow-run-branches.d.ts.map +1 -0
- package/dist/rules/require-workflow-run-branches.js +84 -0
- package/dist/rules/require-workflow-run-branches.js.map +1 -0
- package/dist/rules/require-workflow-template-pair.d.ts +9 -0
- package/dist/rules/require-workflow-template-pair.d.ts.map +1 -0
- package/dist/rules/require-workflow-template-pair.js +47 -0
- package/dist/rules/require-workflow-template-pair.js.map +1 -0
- package/dist/rules/require-workflow-template-properties-pair.d.ts +9 -0
- package/dist/rules/require-workflow-template-properties-pair.d.ts.map +1 -0
- package/dist/rules/require-workflow-template-properties-pair.js +49 -0
- package/dist/rules/require-workflow-template-properties-pair.js.map +1 -0
- package/dist/rules/valid-timeout-minutes.d.ts +9 -0
- package/dist/rules/valid-timeout-minutes.d.ts.map +1 -0
- package/dist/rules/valid-timeout-minutes.js +255 -0
- package/dist/rules/valid-timeout-minutes.js.map +1 -0
- package/dist/rules/valid-trigger-events.d.ts +9 -0
- package/dist/rules/valid-trigger-events.d.ts.map +1 -0
- package/dist/rules/valid-trigger-events.js +100 -0
- package/dist/rules/valid-trigger-events.js.map +1 -0
- package/docs/rules/action-name-casing.md +64 -0
- package/docs/rules/getting-started.md +46 -0
- package/docs/rules/job-id-casing.md +73 -0
- package/docs/rules/max-jobs-per-action.md +79 -0
- package/docs/rules/no-case-insensitive-input-id-collision.md +63 -0
- package/docs/rules/no-composite-input-env-access.md +66 -0
- package/docs/rules/no-deprecated-node-runtime.md +61 -0
- package/docs/rules/no-duplicate-composite-step-id.md +73 -0
- package/docs/rules/no-empty-template-file-pattern.md +57 -0
- package/docs/rules/no-external-job.md +66 -0
- package/docs/rules/no-hardcoded-default-branch-in-template.md +63 -0
- package/docs/rules/no-icon-file-extension-in-template-icon-name.md +57 -0
- package/docs/rules/no-inherit-secrets.md +65 -0
- package/docs/rules/no-invalid-concurrency-context.md +101 -0
- package/docs/rules/no-invalid-key.md +86 -0
- package/docs/rules/no-invalid-reusable-workflow-job-key.md +74 -0
- package/docs/rules/no-invalid-template-file-pattern-regex.md +57 -0
- package/docs/rules/no-invalid-workflow-call-output-value.md +80 -0
- package/docs/rules/no-path-separators-in-template-icon-name.md +57 -0
- package/docs/rules/no-post-if-without-post.md +64 -0
- package/docs/rules/no-pr-head-checkout-in-pull-request-target.md +83 -0
- package/docs/rules/no-pre-if-without-pre.md +64 -0
- package/docs/rules/no-required-input-with-default.md +64 -0
- package/docs/rules/no-secrets-in-if.md +70 -0
- package/docs/rules/no-self-hosted-runner-on-fork-pr-events.md +75 -0
- package/docs/rules/no-subdirectory-template-file-pattern.md +57 -0
- package/docs/rules/no-template-placeholder-in-non-template-workflow.md +63 -0
- package/docs/rules/no-top-level-env.md +64 -0
- package/docs/rules/no-top-level-permissions.md +64 -0
- package/docs/rules/no-universal-template-file-pattern.md +57 -0
- package/docs/rules/no-unknown-input-reference-in-composite.md +71 -0
- package/docs/rules/no-unknown-job-output-reference.md +88 -0
- package/docs/rules/no-unknown-step-reference.md +73 -0
- package/docs/rules/no-untrusted-input-in-run.md +74 -0
- package/docs/rules/no-unused-input-in-composite.md +71 -0
- package/docs/rules/no-write-all-permissions.md +60 -0
- package/docs/rules/overview.md +91 -0
- package/docs/rules/pin-action-shas.md +65 -0
- package/docs/rules/prefer-action-yml.md +57 -0
- package/docs/rules/prefer-fail-fast.md +72 -0
- package/docs/rules/prefer-file-extension.md +77 -0
- package/docs/rules/prefer-inputs-context.md +84 -0
- package/docs/rules/prefer-step-uses-style.md +70 -0
- package/docs/rules/prefer-template-yml-extension.md +57 -0
- package/docs/rules/presets/action-metadata.md +18 -0
- package/docs/rules/presets/all.md +76 -0
- package/docs/rules/presets/index.md +100 -0
- package/docs/rules/presets/recommended.md +26 -0
- package/docs/rules/presets/security.md +16 -0
- package/docs/rules/presets/strict.md +48 -0
- package/docs/rules/presets/workflow-template-properties.md +18 -0
- package/docs/rules/presets/workflow-templates.md +22 -0
- package/docs/rules/require-action-name.md +61 -0
- package/docs/rules/require-action-run-name.md +63 -0
- package/docs/rules/require-checkout-before-local-action.md +66 -0
- package/docs/rules/require-composite-step-name.md +66 -0
- package/docs/rules/require-job-name.md +63 -0
- package/docs/rules/require-job-step-name.md +69 -0
- package/docs/rules/require-job-timeout-minutes.md +76 -0
- package/docs/rules/require-merge-group-trigger.md +67 -0
- package/docs/rules/require-pull-request-target-branches.md +79 -0
- package/docs/rules/require-run-step-shell.md +85 -0
- package/docs/rules/require-template-categories.md +62 -0
- package/docs/rules/require-template-file-patterns.md +63 -0
- package/docs/rules/require-template-icon-file-exists.md +61 -0
- package/docs/rules/require-template-icon-name.md +57 -0
- package/docs/rules/require-template-workflow-name.md +60 -0
- package/docs/rules/require-trigger-types.md +76 -0
- package/docs/rules/require-workflow-call-input-type.md +70 -0
- package/docs/rules/require-workflow-call-output-value.md +67 -0
- package/docs/rules/require-workflow-concurrency.md +73 -0
- package/docs/rules/require-workflow-dispatch-input-type.md +70 -0
- package/docs/rules/require-workflow-interface-description.md +96 -0
- package/docs/rules/require-workflow-permissions.md +75 -0
- package/docs/rules/require-workflow-run-branches.md +66 -0
- package/docs/rules/require-workflow-template-pair.md +58 -0
- package/docs/rules/require-workflow-template-properties-pair.md +58 -0
- package/docs/rules/valid-timeout-minutes.md +74 -0
- package/docs/rules/valid-trigger-events.md +62 -0
- package/package.json +497 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# prefer-action-yml
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R043
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Action metadata files named `action.yaml`.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
Reports action metadata files that use `action.yaml` instead of `action.yml`.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
GitHub supports both extensions, but the metadata docs call out `action.yml` as the preferred filename.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
action.yaml
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## ✅ Correct
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
action.yml
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## Additional examples
|
|
31
|
+
|
|
32
|
+
For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
|
|
33
|
+
|
|
34
|
+
## ESLint flat config example
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
38
|
+
|
|
39
|
+
export default [
|
|
40
|
+
{
|
|
41
|
+
files: ["**/*.{yml,yaml}"],
|
|
42
|
+
plugins: {
|
|
43
|
+
"github-actions": githubActions,
|
|
44
|
+
},
|
|
45
|
+
rules: {
|
|
46
|
+
"github-actions/prefer-action-yml": "error",
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## When not to use it
|
|
53
|
+
|
|
54
|
+
You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
|
|
55
|
+
## Further reading
|
|
56
|
+
|
|
57
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/metadata-syntax](https://docs.github.com/actions/reference/workflows-and-actions/metadata-syntax)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# prefer-fail-fast
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R015
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files that use matrix strategies.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports jobs that explicitly set `strategy.fail-fast` to `false`.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Leaving fail-fast enabled can save runner time and reduce queue pressure when one matrix job already proves the matrix is failing.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
jobs:
|
|
21
|
+
test:
|
|
22
|
+
name: Test
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
strategy:
|
|
25
|
+
fail-fast: false
|
|
26
|
+
matrix:
|
|
27
|
+
node: [20, 22]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## ✅ Correct
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
jobs:
|
|
34
|
+
test:
|
|
35
|
+
name: Test
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
strategy:
|
|
38
|
+
fail-fast: true
|
|
39
|
+
matrix:
|
|
40
|
+
node: [20, 22]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Additional examples
|
|
45
|
+
|
|
46
|
+
For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
|
|
47
|
+
|
|
48
|
+
## ESLint flat config example
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
52
|
+
|
|
53
|
+
export default [
|
|
54
|
+
{
|
|
55
|
+
files: ["**/*.{yml,yaml}"],
|
|
56
|
+
plugins: {
|
|
57
|
+
"github-actions": githubActions,
|
|
58
|
+
},
|
|
59
|
+
rules: {
|
|
60
|
+
"github-actions/prefer-fail-fast": "error",
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## When not to use it
|
|
67
|
+
|
|
68
|
+
You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
|
|
69
|
+
## Further reading
|
|
70
|
+
|
|
71
|
+
- [https://docs.github.com/actions/using-jobs/using-a-matrix-for-your-jobs](https://docs.github.com/actions/using-jobs/using-a-matrix-for-your-jobs)
|
|
72
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstrategy](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstrategy)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# prefer-file-extension
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R020
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files under `.github/workflows/`.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports workflow files whose extension does not match the configured preference.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Using one workflow file extension consistently keeps repositories easier to scan, search, and script against. It also avoids needless churn from mixed `.yml` and `.yaml` naming styles.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
# .github/workflows/release.yaml
|
|
21
|
+
name: Release
|
|
22
|
+
on:
|
|
23
|
+
workflow_dispatch:
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## ✅ Correct
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
# .github/workflows/release.yml
|
|
30
|
+
name: Release
|
|
31
|
+
on:
|
|
32
|
+
workflow_dispatch:
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Behavior and migration notes
|
|
36
|
+
|
|
37
|
+
### Default behavior
|
|
38
|
+
|
|
39
|
+
With the default configuration, this rule expects workflow files to use the `.yml` extension.
|
|
40
|
+
|
|
41
|
+
### `{ "extension": "yaml" }`
|
|
42
|
+
|
|
43
|
+
Use this option to enforce `.yaml` instead.
|
|
44
|
+
|
|
45
|
+
### `{ "caseSensitive": false }`
|
|
46
|
+
|
|
47
|
+
Use this option when you want extension matching to ignore case differences in repository paths.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## Additional examples
|
|
51
|
+
|
|
52
|
+
For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
|
|
53
|
+
|
|
54
|
+
## ESLint flat config example
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
58
|
+
|
|
59
|
+
export default [
|
|
60
|
+
{
|
|
61
|
+
files: ["**/*.{yml,yaml}"],
|
|
62
|
+
plugins: {
|
|
63
|
+
"github-actions": githubActions,
|
|
64
|
+
},
|
|
65
|
+
rules: {
|
|
66
|
+
"github-actions/prefer-file-extension": "error",
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## When not to use it
|
|
73
|
+
|
|
74
|
+
You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
|
|
75
|
+
## Further reading
|
|
76
|
+
|
|
77
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# prefer-inputs-context
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R033
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files that define `workflow_dispatch` and reference `github.event.inputs` in expressions.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports `github.event.inputs.*` references in `workflow_dispatch` workflows and prefers the shorter `inputs.*` context instead.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
GitHub documents that `inputs` and `github.event.inputs` expose the same manual-dispatch values, but `inputs` preserves Boolean values as Booleans instead of converting them to strings. Using `inputs` also makes workflow expressions shorter and easier to read.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
on:
|
|
21
|
+
workflow_dispatch:
|
|
22
|
+
inputs:
|
|
23
|
+
dry_run:
|
|
24
|
+
description: Run validation only
|
|
25
|
+
required: true
|
|
26
|
+
type: boolean
|
|
27
|
+
|
|
28
|
+
jobs:
|
|
29
|
+
release:
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
if: ${{ github.event.inputs.dry_run }}
|
|
32
|
+
steps:
|
|
33
|
+
- run: echo release
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## ✅ Correct
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
on:
|
|
40
|
+
workflow_dispatch:
|
|
41
|
+
inputs:
|
|
42
|
+
dry_run:
|
|
43
|
+
description: Run validation only
|
|
44
|
+
required: true
|
|
45
|
+
type: boolean
|
|
46
|
+
|
|
47
|
+
jobs:
|
|
48
|
+
release:
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
if: ${{ inputs.dry_run }}
|
|
51
|
+
steps:
|
|
52
|
+
- run: echo release
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## Additional examples
|
|
57
|
+
|
|
58
|
+
For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
|
|
59
|
+
|
|
60
|
+
## ESLint flat config example
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
64
|
+
|
|
65
|
+
export default [
|
|
66
|
+
{
|
|
67
|
+
files: ["**/*.{yml,yaml}"],
|
|
68
|
+
plugins: {
|
|
69
|
+
"github-actions": githubActions,
|
|
70
|
+
},
|
|
71
|
+
rules: {
|
|
72
|
+
"github-actions/prefer-inputs-context": "error",
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## When not to use it
|
|
79
|
+
|
|
80
|
+
You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
|
|
81
|
+
## Further reading
|
|
82
|
+
|
|
83
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows#workflow_dispatch](https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows#workflow_dispatch)
|
|
84
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/contexts#inputs-context](https://docs.github.com/actions/reference/workflows-and-actions/contexts#inputs-context)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# prefer-step-uses-style
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R016
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files that use step-level `uses` references.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports step `uses` references whose style does not match the configured preference, and it can also disallow repository-local or Docker-based `uses` references.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Standardizing how steps reference actions makes workflow reviews easier. Teams that prefer immutable commit SHAs, release tags, or branch names can enforce that choice consistently.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
jobs:
|
|
21
|
+
build:
|
|
22
|
+
name: Build
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout
|
|
26
|
+
uses: actions/checkout@v4
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## ✅ Correct
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
jobs:
|
|
33
|
+
build:
|
|
34
|
+
name: Build
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
steps:
|
|
37
|
+
- name: Checkout
|
|
38
|
+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## Additional examples
|
|
43
|
+
|
|
44
|
+
For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
|
|
45
|
+
|
|
46
|
+
## ESLint flat config example
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
50
|
+
|
|
51
|
+
export default [
|
|
52
|
+
{
|
|
53
|
+
files: ["**/*.{yml,yaml}"],
|
|
54
|
+
plugins: {
|
|
55
|
+
"github-actions": githubActions,
|
|
56
|
+
},
|
|
57
|
+
rules: {
|
|
58
|
+
"github-actions/prefer-step-uses-style": "error",
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## When not to use it
|
|
65
|
+
|
|
66
|
+
You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
|
|
67
|
+
## Further reading
|
|
68
|
+
|
|
69
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsuses](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsuses)
|
|
70
|
+
- [https://docs.github.com/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions](https://docs.github.com/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# prefer-template-yml-extension
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R066
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
Workflow template YAML filenames under `workflow-templates/`.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
Reports template files that use `.yaml` instead of `.yml`.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Consistent file extensions improve discoverability and repository conventions.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
workflow-templates/ci.yaml
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## ✅ Correct
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
workflow-templates/ci.yml
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## Additional examples
|
|
31
|
+
|
|
32
|
+
For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
|
|
33
|
+
|
|
34
|
+
## ESLint flat config example
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
38
|
+
|
|
39
|
+
export default [
|
|
40
|
+
{
|
|
41
|
+
files: ["**/*.{yml,yaml}"],
|
|
42
|
+
plugins: {
|
|
43
|
+
"github-actions": githubActions,
|
|
44
|
+
},
|
|
45
|
+
rules: {
|
|
46
|
+
"github-actions/prefer-template-yml-extension": "error",
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## When not to use it
|
|
53
|
+
|
|
54
|
+
You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
|
|
55
|
+
## Further reading
|
|
56
|
+
|
|
57
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations](https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# `githubActions.configs.actionMetadata`
|
|
2
|
+
|
|
3
|
+
Linting defaults for GitHub Action metadata files (`action.yml` / `action.yaml`).
|
|
4
|
+
|
|
5
|
+
## Included rules
|
|
6
|
+
|
|
7
|
+
- [`no-case-insensitive-input-id-collision`](../no-case-insensitive-input-id-collision.md)
|
|
8
|
+
- [`no-composite-input-env-access`](../no-composite-input-env-access.md)
|
|
9
|
+
- [`no-deprecated-node-runtime`](../no-deprecated-node-runtime.md)
|
|
10
|
+
- [`no-duplicate-composite-step-id`](../no-duplicate-composite-step-id.md)
|
|
11
|
+
- [`no-post-if-without-post`](../no-post-if-without-post.md)
|
|
12
|
+
- [`no-pre-if-without-pre`](../no-pre-if-without-pre.md)
|
|
13
|
+
- [`no-required-input-with-default`](../no-required-input-with-default.md)
|
|
14
|
+
- [`no-unknown-input-reference-in-composite`](../no-unknown-input-reference-in-composite.md)
|
|
15
|
+
- [`no-unused-input-in-composite`](../no-unused-input-in-composite.md)
|
|
16
|
+
- [`prefer-action-yml`](../prefer-action-yml.md)
|
|
17
|
+
- [`require-composite-step-name`](../require-composite-step-name.md)
|
|
18
|
+
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# `githubActions.configs.all`
|
|
2
|
+
|
|
3
|
+
Enables every available rule published by `eslint-plugin-github-actions-2`.
|
|
4
|
+
|
|
5
|
+
## Included rules
|
|
6
|
+
|
|
7
|
+
- [`require-workflow-permissions`](../require-workflow-permissions.md)
|
|
8
|
+
- [`require-job-timeout-minutes`](../require-job-timeout-minutes.md)
|
|
9
|
+
- [`pin-action-shas`](../pin-action-shas.md)
|
|
10
|
+
- [`require-workflow-concurrency`](../require-workflow-concurrency.md)
|
|
11
|
+
- [`action-name-casing`](../action-name-casing.md)
|
|
12
|
+
- [`job-id-casing`](../job-id-casing.md)
|
|
13
|
+
- [`max-jobs-per-action`](../max-jobs-per-action.md)
|
|
14
|
+
- [`no-case-insensitive-input-id-collision`](../no-case-insensitive-input-id-collision.md)
|
|
15
|
+
- [`no-composite-input-env-access`](../no-composite-input-env-access.md)
|
|
16
|
+
- [`no-deprecated-node-runtime`](../no-deprecated-node-runtime.md)
|
|
17
|
+
- [`no-duplicate-composite-step-id`](../no-duplicate-composite-step-id.md)
|
|
18
|
+
- [`no-empty-template-file-pattern`](../no-empty-template-file-pattern.md)
|
|
19
|
+
- [`no-external-job`](../no-external-job.md)
|
|
20
|
+
- [`no-hardcoded-default-branch-in-template`](../no-hardcoded-default-branch-in-template.md)
|
|
21
|
+
- [`no-icon-file-extension-in-template-icon-name`](../no-icon-file-extension-in-template-icon-name.md)
|
|
22
|
+
- [`no-inherit-secrets`](../no-inherit-secrets.md)
|
|
23
|
+
- [`no-invalid-concurrency-context`](../no-invalid-concurrency-context.md)
|
|
24
|
+
- [`no-invalid-key`](../no-invalid-key.md)
|
|
25
|
+
- [`no-invalid-reusable-workflow-job-key`](../no-invalid-reusable-workflow-job-key.md)
|
|
26
|
+
- [`no-invalid-template-file-pattern-regex`](../no-invalid-template-file-pattern-regex.md)
|
|
27
|
+
- [`no-invalid-workflow-call-output-value`](../no-invalid-workflow-call-output-value.md)
|
|
28
|
+
- [`no-path-separators-in-template-icon-name`](../no-path-separators-in-template-icon-name.md)
|
|
29
|
+
- [`no-post-if-without-post`](../no-post-if-without-post.md)
|
|
30
|
+
- [`no-pr-head-checkout-in-pull-request-target`](../no-pr-head-checkout-in-pull-request-target.md)
|
|
31
|
+
- [`no-pre-if-without-pre`](../no-pre-if-without-pre.md)
|
|
32
|
+
- [`no-required-input-with-default`](../no-required-input-with-default.md)
|
|
33
|
+
- [`no-secrets-in-if`](../no-secrets-in-if.md)
|
|
34
|
+
- [`no-self-hosted-runner-on-fork-pr-events`](../no-self-hosted-runner-on-fork-pr-events.md)
|
|
35
|
+
- [`no-subdirectory-template-file-pattern`](../no-subdirectory-template-file-pattern.md)
|
|
36
|
+
- [`no-template-placeholder-in-non-template-workflow`](../no-template-placeholder-in-non-template-workflow.md)
|
|
37
|
+
- [`no-top-level-env`](../no-top-level-env.md)
|
|
38
|
+
- [`no-top-level-permissions`](../no-top-level-permissions.md)
|
|
39
|
+
- [`no-universal-template-file-pattern`](../no-universal-template-file-pattern.md)
|
|
40
|
+
- [`no-unknown-input-reference-in-composite`](../no-unknown-input-reference-in-composite.md)
|
|
41
|
+
- [`no-unknown-job-output-reference`](../no-unknown-job-output-reference.md)
|
|
42
|
+
- [`no-unknown-step-reference`](../no-unknown-step-reference.md)
|
|
43
|
+
- [`no-unused-input-in-composite`](../no-unused-input-in-composite.md)
|
|
44
|
+
- [`no-untrusted-input-in-run`](../no-untrusted-input-in-run.md)
|
|
45
|
+
- [`no-write-all-permissions`](../no-write-all-permissions.md)
|
|
46
|
+
- [`prefer-action-yml`](../prefer-action-yml.md)
|
|
47
|
+
- [`prefer-fail-fast`](../prefer-fail-fast.md)
|
|
48
|
+
- [`prefer-file-extension`](../prefer-file-extension.md)
|
|
49
|
+
- [`prefer-inputs-context`](../prefer-inputs-context.md)
|
|
50
|
+
- [`prefer-step-uses-style`](../prefer-step-uses-style.md)
|
|
51
|
+
- [`prefer-template-yml-extension`](../prefer-template-yml-extension.md)
|
|
52
|
+
- [`require-action-name`](../require-action-name.md)
|
|
53
|
+
- [`require-action-run-name`](../require-action-run-name.md)
|
|
54
|
+
- [`require-checkout-before-local-action`](../require-checkout-before-local-action.md)
|
|
55
|
+
- [`require-composite-step-name`](../require-composite-step-name.md)
|
|
56
|
+
- [`require-job-name`](../require-job-name.md)
|
|
57
|
+
- [`require-job-step-name`](../require-job-step-name.md)
|
|
58
|
+
- [`require-merge-group-trigger`](../require-merge-group-trigger.md)
|
|
59
|
+
- [`require-pull-request-target-branches`](../require-pull-request-target-branches.md)
|
|
60
|
+
- [`require-run-step-shell`](../require-run-step-shell.md)
|
|
61
|
+
- [`require-template-categories`](../require-template-categories.md)
|
|
62
|
+
- [`require-template-file-patterns`](../require-template-file-patterns.md)
|
|
63
|
+
- [`require-template-icon-file-exists`](../require-template-icon-file-exists.md)
|
|
64
|
+
- [`require-template-icon-name`](../require-template-icon-name.md)
|
|
65
|
+
- [`require-template-workflow-name`](../require-template-workflow-name.md)
|
|
66
|
+
- [`require-trigger-types`](../require-trigger-types.md)
|
|
67
|
+
- [`require-workflow-call-input-type`](../require-workflow-call-input-type.md)
|
|
68
|
+
- [`require-workflow-call-output-value`](../require-workflow-call-output-value.md)
|
|
69
|
+
- [`require-workflow-dispatch-input-type`](../require-workflow-dispatch-input-type.md)
|
|
70
|
+
- [`require-workflow-interface-description`](../require-workflow-interface-description.md)
|
|
71
|
+
- [`require-workflow-run-branches`](../require-workflow-run-branches.md)
|
|
72
|
+
- [`require-workflow-template-pair`](../require-workflow-template-pair.md)
|
|
73
|
+
- [`require-workflow-template-properties-pair`](../require-workflow-template-properties-pair.md)
|
|
74
|
+
- [`valid-timeout-minutes`](../valid-timeout-minutes.md)
|
|
75
|
+
- [`valid-trigger-events`](../valid-trigger-events.md)
|
|
76
|
+
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Presets
|
|
2
|
+
|
|
3
|
+
The plugin exports seven flat-config presets:
|
|
4
|
+
|
|
5
|
+
- [`githubActions.configs.actionMetadata`](./action-metadata.md)
|
|
6
|
+
- [`githubActions.configs.workflowTemplateProperties`](./workflow-template-properties.md)
|
|
7
|
+
- [`githubActions.configs.workflowTemplates`](./workflow-templates.md)
|
|
8
|
+
- [`githubActions.configs.recommended`](./recommended.md)
|
|
9
|
+
- [`githubActions.configs.security`](./security.md)
|
|
10
|
+
- [`githubActions.configs.strict`](./strict.md)
|
|
11
|
+
- [`githubActions.configs.all`](./all.md)
|
|
12
|
+
|
|
13
|
+
These presets cover workflow YAML, action metadata (`action.yml` / `action.yaml`),
|
|
14
|
+
and workflow template package files (`workflow-templates/*.yml`, `*.yaml`, and
|
|
15
|
+
`*.properties.json`).
|
|
16
|
+
|
|
17
|
+
## How to choose
|
|
18
|
+
|
|
19
|
+
- Start with **recommended** for broad baseline quality and safety.
|
|
20
|
+
- Layer **security** for stronger supply-chain and permissions-focused checks.
|
|
21
|
+
- Use **strict** when you want high signal on operational consistency.
|
|
22
|
+
- Use **all** for complete rule coverage (best for internal policy repos).
|
|
23
|
+
|
|
24
|
+
Then review [getting started](../getting-started.md) and the full
|
|
25
|
+
[rule reference](../overview.md).
|
|
26
|
+
|
|
27
|
+
## Rule Matrix
|
|
28
|
+
|
|
29
|
+
| Rule | 🧩 actionMetadata | 🗂️ workflowTemplateProperties | 🧱 workflowTemplates | 🟡 recommended | 🛡️ security | 🔴 strict | 🟣 all |
|
|
30
|
+
| --- | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|
|
31
|
+
| [`action-name-casing`](../action-name-casing.md) | — | — | — | — | — | ✅ | ✅ |
|
|
32
|
+
| [`job-id-casing`](../job-id-casing.md) | — | — | — | — | — | ✅ | ✅ |
|
|
33
|
+
| [`max-jobs-per-action`](../max-jobs-per-action.md) | — | — | — | — | — | ✅ | ✅ |
|
|
34
|
+
| [`no-case-insensitive-input-id-collision`](../no-case-insensitive-input-id-collision.md) | ✅ | — | — | — | — | — | ✅ |
|
|
35
|
+
| [`no-composite-input-env-access`](../no-composite-input-env-access.md) | ✅ | — | — | — | — | — | ✅ |
|
|
36
|
+
| [`no-deprecated-node-runtime`](../no-deprecated-node-runtime.md) | ✅ | — | — | — | — | — | ✅ |
|
|
37
|
+
| [`no-duplicate-composite-step-id`](../no-duplicate-composite-step-id.md) | ✅ | — | — | — | — | — | ✅ |
|
|
38
|
+
| [`no-empty-template-file-pattern`](../no-empty-template-file-pattern.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
39
|
+
| [`no-external-job`](../no-external-job.md) | — | — | — | — | — | ✅ | ✅ |
|
|
40
|
+
| [`no-hardcoded-default-branch-in-template`](../no-hardcoded-default-branch-in-template.md) | — | — | ✅ | — | — | — | ✅ |
|
|
41
|
+
| [`no-icon-file-extension-in-template-icon-name`](../no-icon-file-extension-in-template-icon-name.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
42
|
+
| [`no-inherit-secrets`](../no-inherit-secrets.md) | — | — | — | — | ✅ | ✅ | ✅ |
|
|
43
|
+
| [`no-invalid-concurrency-context`](../no-invalid-concurrency-context.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
44
|
+
| [`no-invalid-key`](../no-invalid-key.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
45
|
+
| [`no-invalid-reusable-workflow-job-key`](../no-invalid-reusable-workflow-job-key.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
46
|
+
| [`no-invalid-template-file-pattern-regex`](../no-invalid-template-file-pattern-regex.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
47
|
+
| [`no-invalid-workflow-call-output-value`](../no-invalid-workflow-call-output-value.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
48
|
+
| [`no-path-separators-in-template-icon-name`](../no-path-separators-in-template-icon-name.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
49
|
+
| [`no-post-if-without-post`](../no-post-if-without-post.md) | ✅ | — | — | — | — | — | ✅ |
|
|
50
|
+
| [`no-pr-head-checkout-in-pull-request-target`](../no-pr-head-checkout-in-pull-request-target.md) | — | — | — | — | ✅ | ✅ | ✅ |
|
|
51
|
+
| [`no-pre-if-without-pre`](../no-pre-if-without-pre.md) | ✅ | — | — | — | — | — | ✅ |
|
|
52
|
+
| [`no-required-input-with-default`](../no-required-input-with-default.md) | ✅ | — | — | — | — | — | ✅ |
|
|
53
|
+
| [`no-secrets-in-if`](../no-secrets-in-if.md) | — | — | — | ✅ | ✅ | ✅ | ✅ |
|
|
54
|
+
| [`no-self-hosted-runner-on-fork-pr-events`](../no-self-hosted-runner-on-fork-pr-events.md) | — | — | — | — | ✅ | ✅ | ✅ |
|
|
55
|
+
| [`no-subdirectory-template-file-pattern`](../no-subdirectory-template-file-pattern.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
56
|
+
| [`no-template-placeholder-in-non-template-workflow`](../no-template-placeholder-in-non-template-workflow.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
57
|
+
| [`no-top-level-env`](../no-top-level-env.md) | — | — | — | — | — | ✅ | ✅ |
|
|
58
|
+
| [`no-top-level-permissions`](../no-top-level-permissions.md) | — | — | — | — | — | — | ✅ |
|
|
59
|
+
| [`no-universal-template-file-pattern`](../no-universal-template-file-pattern.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
60
|
+
| [`no-unknown-input-reference-in-composite`](../no-unknown-input-reference-in-composite.md) | ✅ | — | — | — | — | — | ✅ |
|
|
61
|
+
| [`no-unknown-job-output-reference`](../no-unknown-job-output-reference.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
62
|
+
| [`no-unknown-step-reference`](../no-unknown-step-reference.md) | — | — | — | — | — | ✅ | ✅ |
|
|
63
|
+
| [`no-untrusted-input-in-run`](../no-untrusted-input-in-run.md) | — | — | — | — | ✅ | ✅ | ✅ |
|
|
64
|
+
| [`no-unused-input-in-composite`](../no-unused-input-in-composite.md) | ✅ | — | — | — | — | — | ✅ |
|
|
65
|
+
| [`no-write-all-permissions`](../no-write-all-permissions.md) | — | — | — | ✅ | ✅ | ✅ | ✅ |
|
|
66
|
+
| [`pin-action-shas`](../pin-action-shas.md) | — | — | — | — | ✅ | ✅ | ✅ |
|
|
67
|
+
| [`prefer-action-yml`](../prefer-action-yml.md) | ✅ | — | — | — | — | — | ✅ |
|
|
68
|
+
| [`prefer-fail-fast`](../prefer-fail-fast.md) | — | — | — | — | — | ✅ | ✅ |
|
|
69
|
+
| [`prefer-file-extension`](../prefer-file-extension.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
70
|
+
| [`prefer-inputs-context`](../prefer-inputs-context.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
71
|
+
| [`prefer-step-uses-style`](../prefer-step-uses-style.md) | — | — | — | — | — | — | ✅ |
|
|
72
|
+
| [`prefer-template-yml-extension`](../prefer-template-yml-extension.md) | — | — | ✅ | — | — | — | ✅ |
|
|
73
|
+
| [`require-action-name`](../require-action-name.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
74
|
+
| [`require-action-run-name`](../require-action-run-name.md) | — | — | — | — | — | ✅ | ✅ |
|
|
75
|
+
| [`require-checkout-before-local-action`](../require-checkout-before-local-action.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
76
|
+
| [`require-composite-step-name`](../require-composite-step-name.md) | ✅ | — | — | — | — | — | ✅ |
|
|
77
|
+
| [`require-job-name`](../require-job-name.md) | — | — | — | — | — | ✅ | ✅ |
|
|
78
|
+
| [`require-job-step-name`](../require-job-step-name.md) | — | — | — | — | — | ✅ | ✅ |
|
|
79
|
+
| [`require-job-timeout-minutes`](../require-job-timeout-minutes.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
80
|
+
| [`require-merge-group-trigger`](../require-merge-group-trigger.md) | — | — | — | — | — | ✅ | ✅ |
|
|
81
|
+
| [`require-pull-request-target-branches`](../require-pull-request-target-branches.md) | — | — | — | — | ✅ | ✅ | ✅ |
|
|
82
|
+
| [`require-run-step-shell`](../require-run-step-shell.md) | — | — | — | — | — | ✅ | ✅ |
|
|
83
|
+
| [`require-template-categories`](../require-template-categories.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
84
|
+
| [`require-template-file-patterns`](../require-template-file-patterns.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
85
|
+
| [`require-template-icon-file-exists`](../require-template-icon-file-exists.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
86
|
+
| [`require-template-icon-name`](../require-template-icon-name.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
87
|
+
| [`require-template-workflow-name`](../require-template-workflow-name.md) | — | — | ✅ | — | — | — | ✅ |
|
|
88
|
+
| [`require-trigger-types`](../require-trigger-types.md) | — | — | — | — | — | ✅ | ✅ |
|
|
89
|
+
| [`require-workflow-call-input-type`](../require-workflow-call-input-type.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
90
|
+
| [`require-workflow-call-output-value`](../require-workflow-call-output-value.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
91
|
+
| [`require-workflow-concurrency`](../require-workflow-concurrency.md) | — | — | — | — | — | ✅ | ✅ |
|
|
92
|
+
| [`require-workflow-dispatch-input-type`](../require-workflow-dispatch-input-type.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
93
|
+
| [`require-workflow-interface-description`](../require-workflow-interface-description.md) | — | — | — | — | — | ✅ | ✅ |
|
|
94
|
+
| [`require-workflow-permissions`](../require-workflow-permissions.md) | — | — | — | ✅ | ✅ | ✅ | ✅ |
|
|
95
|
+
| [`require-workflow-run-branches`](../require-workflow-run-branches.md) | — | — | — | — | ✅ | ✅ | ✅ |
|
|
96
|
+
| [`require-workflow-template-pair`](../require-workflow-template-pair.md) | — | — | ✅ | — | — | — | ✅ |
|
|
97
|
+
| [`require-workflow-template-properties-pair`](../require-workflow-template-properties-pair.md) | — | ✅ | ✅ | — | — | — | ✅ |
|
|
98
|
+
| [`valid-timeout-minutes`](../valid-timeout-minutes.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
99
|
+
| [`valid-trigger-events`](../valid-trigger-events.md) | — | — | — | ✅ | — | ✅ | ✅ |
|
|
100
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# `githubActions.configs.recommended`
|
|
2
|
+
|
|
3
|
+
Balanced defaults for most repositories.
|
|
4
|
+
|
|
5
|
+
## Included rules
|
|
6
|
+
|
|
7
|
+
- [`no-invalid-concurrency-context`](../no-invalid-concurrency-context.md)
|
|
8
|
+
- [`no-invalid-workflow-call-output-value`](../no-invalid-workflow-call-output-value.md)
|
|
9
|
+
- [`no-write-all-permissions`](../no-write-all-permissions.md)
|
|
10
|
+
- [`no-invalid-key`](../no-invalid-key.md)
|
|
11
|
+
- [`no-invalid-reusable-workflow-job-key`](../no-invalid-reusable-workflow-job-key.md)
|
|
12
|
+
- [`no-secrets-in-if`](../no-secrets-in-if.md)
|
|
13
|
+
- [`no-template-placeholder-in-non-template-workflow`](../no-template-placeholder-in-non-template-workflow.md)
|
|
14
|
+
- [`no-unknown-job-output-reference`](../no-unknown-job-output-reference.md)
|
|
15
|
+
- [`prefer-file-extension`](../prefer-file-extension.md)
|
|
16
|
+
- [`prefer-inputs-context`](../prefer-inputs-context.md)
|
|
17
|
+
- [`require-workflow-permissions`](../require-workflow-permissions.md)
|
|
18
|
+
- [`require-checkout-before-local-action`](../require-checkout-before-local-action.md)
|
|
19
|
+
- [`require-job-timeout-minutes`](../require-job-timeout-minutes.md)
|
|
20
|
+
- [`require-workflow-call-input-type`](../require-workflow-call-input-type.md)
|
|
21
|
+
- [`require-workflow-call-output-value`](../require-workflow-call-output-value.md)
|
|
22
|
+
- [`require-workflow-dispatch-input-type`](../require-workflow-dispatch-input-type.md)
|
|
23
|
+
- [`valid-timeout-minutes`](../valid-timeout-minutes.md)
|
|
24
|
+
- [`valid-trigger-events`](../valid-trigger-events.md)
|
|
25
|
+
- [`require-action-name`](../require-action-name.md)
|
|
26
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# `githubActions.configs.security`
|
|
2
|
+
|
|
3
|
+
Security-focused workflow hardening checks.
|
|
4
|
+
|
|
5
|
+
## Included rules
|
|
6
|
+
|
|
7
|
+
- [`no-inherit-secrets`](../no-inherit-secrets.md)
|
|
8
|
+
- [`no-pr-head-checkout-in-pull-request-target`](../no-pr-head-checkout-in-pull-request-target.md)
|
|
9
|
+
- [`no-secrets-in-if`](../no-secrets-in-if.md)
|
|
10
|
+
- [`no-self-hosted-runner-on-fork-pr-events`](../no-self-hosted-runner-on-fork-pr-events.md)
|
|
11
|
+
- [`no-untrusted-input-in-run`](../no-untrusted-input-in-run.md)
|
|
12
|
+
- [`require-pull-request-target-branches`](../require-pull-request-target-branches.md)
|
|
13
|
+
- [`require-workflow-permissions`](../require-workflow-permissions.md)
|
|
14
|
+
- [`require-workflow-run-branches`](../require-workflow-run-branches.md)
|
|
15
|
+
- [`pin-action-shas`](../pin-action-shas.md)
|
|
16
|
+
|