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,79 @@
|
|
|
1
|
+
# require-pull-request-target-branches
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R032
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files triggered by `pull_request_target`.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports `pull_request_target` triggers that do not scope the target base branches with `branches` or `branches-ignore`.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
`pull_request_target` runs in the base repository context and can access privileges that ordinary forked pull request workflows do not. Adding branch filters narrows where that privileged automation can run and reduces accidental exposure across every protected branch.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
on:
|
|
21
|
+
pull_request_target:
|
|
22
|
+
types:
|
|
23
|
+
- opened
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
comment:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- run: echo privileged automation
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## ✅ Correct
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
on:
|
|
36
|
+
pull_request_target:
|
|
37
|
+
types:
|
|
38
|
+
- opened
|
|
39
|
+
branches:
|
|
40
|
+
- main
|
|
41
|
+
- releases/**
|
|
42
|
+
|
|
43
|
+
jobs:
|
|
44
|
+
comment:
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
steps:
|
|
47
|
+
- run: echo privileged automation
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
## Additional examples
|
|
52
|
+
|
|
53
|
+
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.
|
|
54
|
+
|
|
55
|
+
## ESLint flat config example
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
59
|
+
|
|
60
|
+
export default [
|
|
61
|
+
{
|
|
62
|
+
files: ["**/*.{yml,yaml}"],
|
|
63
|
+
plugins: {
|
|
64
|
+
"github-actions": githubActions,
|
|
65
|
+
},
|
|
66
|
+
rules: {
|
|
67
|
+
"github-actions/require-pull-request-target-branches": "error",
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## When not to use it
|
|
74
|
+
|
|
75
|
+
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.
|
|
76
|
+
## Further reading
|
|
77
|
+
|
|
78
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows#pull_request_target](https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows#pull_request_target)
|
|
79
|
+
- [https://docs.github.com/actions/reference/security/secure-use](https://docs.github.com/actions/reference/security/secure-use)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# require-run-step-shell
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R021
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files with `run` steps.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports `run` steps that do not declare `shell` themselves and do not inherit one from `defaults.run.shell`. It also reports empty or non-string `shell` values when they are declared on a step or in defaults.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
GitHub Actions uses different implicit shells depending on the runner and execution context. Making the shell explicit keeps inline scripts predictable, documents intent for reviewers, and avoids surprises such as `sh` behavior where authors expected `bash` or `pwsh`.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
jobs:
|
|
21
|
+
test:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- name: Install
|
|
25
|
+
run: npm ci
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## ✅ Correct
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
jobs:
|
|
32
|
+
test:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
steps:
|
|
35
|
+
- name: Install
|
|
36
|
+
shell: bash
|
|
37
|
+
run: npm ci
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Additional examples
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
defaults:
|
|
44
|
+
run:
|
|
45
|
+
shell: bash
|
|
46
|
+
|
|
47
|
+
jobs:
|
|
48
|
+
test:
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
steps:
|
|
51
|
+
- name: Install
|
|
52
|
+
run: npm ci
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
For larger repositories, this rule is often enabled together with one of the
|
|
56
|
+
published presets so violations are caught in pull requests before workflow
|
|
57
|
+
changes are merged.
|
|
58
|
+
|
|
59
|
+
## ESLint flat config example
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
63
|
+
|
|
64
|
+
export default [
|
|
65
|
+
{
|
|
66
|
+
files: ["**/*.{yml,yaml}"],
|
|
67
|
+
plugins: {
|
|
68
|
+
"github-actions": githubActions,
|
|
69
|
+
},
|
|
70
|
+
rules: {
|
|
71
|
+
"github-actions/require-run-step-shell": "error",
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## When not to use it
|
|
78
|
+
|
|
79
|
+
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.
|
|
80
|
+
|
|
81
|
+
## Further reading
|
|
82
|
+
|
|
83
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsshell](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsshell)
|
|
84
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#defaultsrunshell](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#defaultsrunshell)
|
|
85
|
+
- [https://github.com/rhysd/actionlint/issues/374](https://github.com/rhysd/actionlint/issues/374)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# require-template-categories
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R057
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
Workflow-template metadata `categories` property.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
Reports missing or empty `categories` arrays.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Categories improve filterability and ranking in the workflow template chooser.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{ "name": "CI", "description": "Template", "iconName": "workflow" }
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## ✅ Correct
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"name": "CI",
|
|
28
|
+
"description": "Template",
|
|
29
|
+
"iconName": "workflow",
|
|
30
|
+
"categories": ["JavaScript"]
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## Additional examples
|
|
36
|
+
|
|
37
|
+
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.
|
|
38
|
+
|
|
39
|
+
## ESLint flat config example
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
43
|
+
|
|
44
|
+
export default [
|
|
45
|
+
{
|
|
46
|
+
files: ["**/*.{yml,yaml}"],
|
|
47
|
+
plugins: {
|
|
48
|
+
"github-actions": githubActions,
|
|
49
|
+
},
|
|
50
|
+
rules: {
|
|
51
|
+
"github-actions/require-template-categories": "error",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## When not to use it
|
|
58
|
+
|
|
59
|
+
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.
|
|
60
|
+
## Further reading
|
|
61
|
+
|
|
62
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations#metadata-file-requirements](https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations#metadata-file-requirements)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# require-template-file-patterns
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R058
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
Workflow-template metadata `filePatterns` property.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
Reports missing or empty `filePatterns` arrays.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
File patterns help GitHub suggest relevant templates for repository contents.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{ "name": "CI", "description": "Template", "iconName": "workflow" }
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## ✅ Correct
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"name": "CI",
|
|
28
|
+
"description": "Template",
|
|
29
|
+
"iconName": "workflow",
|
|
30
|
+
"categories": ["JavaScript"],
|
|
31
|
+
"filePatterns": ["package.json$"]
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## Additional examples
|
|
37
|
+
|
|
38
|
+
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.
|
|
39
|
+
|
|
40
|
+
## ESLint flat config example
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
44
|
+
|
|
45
|
+
export default [
|
|
46
|
+
{
|
|
47
|
+
files: ["**/*.{yml,yaml}"],
|
|
48
|
+
plugins: {
|
|
49
|
+
"github-actions": githubActions,
|
|
50
|
+
},
|
|
51
|
+
rules: {
|
|
52
|
+
"github-actions/require-template-file-patterns": "error",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## When not to use it
|
|
59
|
+
|
|
60
|
+
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.
|
|
61
|
+
## Further reading
|
|
62
|
+
|
|
63
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations#metadata-file-requirements](https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations#metadata-file-requirements)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# require-template-icon-file-exists
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R065
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
Workflow-template properties `iconName` values that refer to local SVG icons.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
Reports local `iconName` values that do not resolve to an existing `*.svg` file.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Broken icon references degrade workflow-template UX.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{ "iconName": "workflow" }
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
If `workflow.svg` does not exist next to the metadata file, this is reported.
|
|
24
|
+
|
|
25
|
+
## ✅ Correct
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{ "iconName": "workflow" }
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
With `workflow.svg` present in the same directory.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## Additional examples
|
|
35
|
+
|
|
36
|
+
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.
|
|
37
|
+
|
|
38
|
+
## ESLint flat config example
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
42
|
+
|
|
43
|
+
export default [
|
|
44
|
+
{
|
|
45
|
+
files: ["**/*.{yml,yaml}"],
|
|
46
|
+
plugins: {
|
|
47
|
+
"github-actions": githubActions,
|
|
48
|
+
},
|
|
49
|
+
rules: {
|
|
50
|
+
"github-actions/require-template-icon-file-exists": "error",
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## When not to use it
|
|
57
|
+
|
|
58
|
+
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.
|
|
59
|
+
## Further reading
|
|
60
|
+
|
|
61
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations#metadata-file-requirements](https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations#metadata-file-requirements)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# require-template-icon-name
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R056
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
Workflow-template metadata `iconName` property.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
Reports metadata files missing `iconName` or setting it to an empty value.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
An icon improves template discoverability and chooser UX.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{ "name": "CI", "description": "Template" }
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## ✅ Correct
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{ "name": "CI", "description": "Template", "iconName": "workflow" }
|
|
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/require-template-icon-name": "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#metadata-file-requirements](https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations#metadata-file-requirements)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# require-template-workflow-name
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R067
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
Workflow template YAML files under `workflow-templates/`.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
Reports missing or empty top-level `name` fields.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Template names are primary labels shown in workflow selection UI.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
on:
|
|
21
|
+
push:
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## ✅ Correct
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
name: Node.js CI
|
|
28
|
+
on:
|
|
29
|
+
push:
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## Additional examples
|
|
34
|
+
|
|
35
|
+
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.
|
|
36
|
+
|
|
37
|
+
## ESLint flat config example
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
41
|
+
|
|
42
|
+
export default [
|
|
43
|
+
{
|
|
44
|
+
files: ["**/*.{yml,yaml}"],
|
|
45
|
+
plugins: {
|
|
46
|
+
"github-actions": githubActions,
|
|
47
|
+
},
|
|
48
|
+
rules: {
|
|
49
|
+
"github-actions/require-template-workflow-name": "error",
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## When not to use it
|
|
56
|
+
|
|
57
|
+
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.
|
|
58
|
+
## Further reading
|
|
59
|
+
|
|
60
|
+
- [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,76 @@
|
|
|
1
|
+
# require-trigger-types
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R031
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files that use configurable multi-activity events without an explicit `types` filter.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports selected workflow events such as `issue_comment`, `pull_request_review`, `repository_dispatch`, `workflow_run`, `merge_group`, and similar multi-activity triggers when they omit `types`.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
GitHub documents that these events support multiple activity types and default to reacting to all supported activities when `types` is omitted. Requiring `types` keeps automation specific, easier to review, and less likely to run on unintended actions.
|
|
16
|
+
|
|
17
|
+
This rule intentionally targets event families where explicit activity scoping is especially useful, rather than requiring `types` for every possible trigger.
|
|
18
|
+
|
|
19
|
+
## ❌ Incorrect
|
|
20
|
+
|
|
21
|
+
```yaml
|
|
22
|
+
on:
|
|
23
|
+
issue_comment:
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
triage:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- run: echo comment received
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## ✅ Correct
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
on:
|
|
36
|
+
issue_comment:
|
|
37
|
+
types:
|
|
38
|
+
- created
|
|
39
|
+
|
|
40
|
+
jobs:
|
|
41
|
+
triage:
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
steps:
|
|
44
|
+
- run: echo comment received
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## Additional examples
|
|
49
|
+
|
|
50
|
+
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.
|
|
51
|
+
|
|
52
|
+
## ESLint flat config example
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
56
|
+
|
|
57
|
+
export default [
|
|
58
|
+
{
|
|
59
|
+
files: ["**/*.{yml,yaml}"],
|
|
60
|
+
plugins: {
|
|
61
|
+
"github-actions": githubActions,
|
|
62
|
+
},
|
|
63
|
+
rules: {
|
|
64
|
+
"github-actions/require-trigger-types": "error",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## When not to use it
|
|
71
|
+
|
|
72
|
+
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.
|
|
73
|
+
## Further reading
|
|
74
|
+
|
|
75
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows](https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows)
|
|
76
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#onevent_nametypes](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#onevent_nametypes)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# require-workflow-call-input-type
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R034
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files that define `on.workflow_call.inputs` for reusable workflows.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports reusable workflow inputs that omit `type` or set `type` to a value outside GitHub's documented `string`, `number`, and `boolean` reusable-workflow input types.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Reusable workflows are interfaces consumed by other workflows. Explicitly typed inputs make those interfaces clearer for callers, help GitHub validate passed values consistently, and reduce ambiguity when workflows evolve.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
on:
|
|
21
|
+
workflow_call:
|
|
22
|
+
inputs:
|
|
23
|
+
dry_run:
|
|
24
|
+
description: Run validation only
|
|
25
|
+
required: false
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## ✅ Correct
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
on:
|
|
32
|
+
workflow_call:
|
|
33
|
+
inputs:
|
|
34
|
+
dry_run:
|
|
35
|
+
description: Run validation only
|
|
36
|
+
required: false
|
|
37
|
+
type: boolean
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## Additional examples
|
|
42
|
+
|
|
43
|
+
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.
|
|
44
|
+
|
|
45
|
+
## ESLint flat config example
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
49
|
+
|
|
50
|
+
export default [
|
|
51
|
+
{
|
|
52
|
+
files: ["**/*.{yml,yaml}"],
|
|
53
|
+
plugins: {
|
|
54
|
+
"github-actions": githubActions,
|
|
55
|
+
},
|
|
56
|
+
rules: {
|
|
57
|
+
"github-actions/require-workflow-call-input-type": "error",
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## When not to use it
|
|
64
|
+
|
|
65
|
+
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.
|
|
66
|
+
## Further reading
|
|
67
|
+
|
|
68
|
+
- [https://docs.github.com/actions/using-workflows/reusing-workflows](https://docs.github.com/actions/using-workflows/reusing-workflows)
|
|
69
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#onworkflow_callinputs](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#onworkflow_callinputs)
|
|
70
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#onworkflow_callinputsinput_idtype](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#onworkflow_callinputsinput_idtype)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# require-workflow-call-output-value
|
|
2
|
+
|
|
3
|
+
> **Rule catalog ID:** R039
|
|
4
|
+
|
|
5
|
+
## Targeted pattern scope
|
|
6
|
+
|
|
7
|
+
GitHub Actions workflow YAML files that define reusable workflow outputs under `on.workflow_call.outputs`.
|
|
8
|
+
|
|
9
|
+
## What this rule reports
|
|
10
|
+
|
|
11
|
+
This rule reports reusable workflow outputs that omit `value` or set it to an empty scalar.
|
|
12
|
+
|
|
13
|
+
## Why this rule exists
|
|
14
|
+
|
|
15
|
+
Reusable workflow outputs are part of the public interface exposed to callers. GitHub documents each `workflow_call` output as having a `value`, and without that mapping the output cannot return anything meaningful to downstream jobs.
|
|
16
|
+
|
|
17
|
+
## ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
on:
|
|
21
|
+
workflow_call:
|
|
22
|
+
outputs:
|
|
23
|
+
deployment-url:
|
|
24
|
+
description: Published deployment URL
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## ✅ Correct
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
on:
|
|
31
|
+
workflow_call:
|
|
32
|
+
outputs:
|
|
33
|
+
deployment-url:
|
|
34
|
+
description: Published deployment URL
|
|
35
|
+
value: ${{ jobs.deploy.outputs.url }}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## Additional examples
|
|
40
|
+
|
|
41
|
+
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.
|
|
42
|
+
|
|
43
|
+
## ESLint flat config example
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
import githubActions from "eslint-plugin-github-actions-2";
|
|
47
|
+
|
|
48
|
+
export default [
|
|
49
|
+
{
|
|
50
|
+
files: ["**/*.{yml,yaml}"],
|
|
51
|
+
plugins: {
|
|
52
|
+
"github-actions": githubActions,
|
|
53
|
+
},
|
|
54
|
+
rules: {
|
|
55
|
+
"github-actions/require-workflow-call-output-value": "error",
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## When not to use it
|
|
62
|
+
|
|
63
|
+
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.
|
|
64
|
+
## Further reading
|
|
65
|
+
|
|
66
|
+
- [https://docs.github.com/actions/using-workflows/reusing-workflows](https://docs.github.com/actions/using-workflows/reusing-workflows)
|
|
67
|
+
- [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#onworkflow_calloutputs](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#onworkflow_calloutputs)
|