You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
From this version, actionlint starts to check action metadata file action.yml (or action.yaml). At this point, only very basic checks are implemented and contents of steps: are not checked yet.
It checks properties under runs: section (e.g. main: can be specified when it is a JavaScript action), branding: properties, and so on.
name: 'My action'author: '...'# ERROR: 'description' section is missingbranding:
# ERROR: Invalid icon nameicon: dogruns:
# ERROR: Node.js runtime version is too oldusing: 'node12'# ERROR: The source file being run by this action does not existmain: 'this-file-does-not-exist.js'# ERROR: 'env' configuration is only allowed for Docker actionsenv:
SOME_VAR: SOME_VALUE
actionlint still focuses on checking workflow files. So there is no way to directly specify action.yml as an argument of actionlint command. actionlint checks all local actions which are used by given workflows. If you want to use actionlint for your action development, prepare a test/example workflow which uses your action, and check it with actionlint instead.
Checks for steps: contents are planned to be implemented. Since several differences are expected between steps: in workflow file and steps: in action metadata file (e.g. available contexts), the implementation is delayed to later version. And the current implementation of action metadata parser is ad hoc. I'm planning a large refactorying and breaking changes Go API around it are expected.
Check comparison expressions more strictly. Arbitrary types of operands can be compared as the official document explains. However, comparisons between some types are actually meaningless because the values are converted to numbers implicitly. actionlint catches such meaningless comparisons as errors. Please see the check document for more details.
on:
workflow_call:
inputs:
timeout:
type: booleanjobs:
test:
runs-on: ubuntu-lateststeps:
- run: echo 'called!'# ERROR: Comparing string to object is always evaluated to falseif: ${{ github.event == 'workflow_call' }}
- run: echo 'timeout is too long'# ERROR: Comparing boolean value with `>` doesn't make senseif: ${{ inputs.timeout > 60 }}
Follow the update that macos-latest is now an alias to macos-14 runner.
Support a custom python shell by pyflakes rule.
Add workaround actionlint reports that dorny/paths-filter's predicate-quantifier input is not defined. (#416)
Fix the type of a conditional expression by comparison operators is wider than expected by implementing type narrowing. (#384)
For example, the type of following expression should be number but it was actually string | number and actionlint complained that timeout-minutes must take a number value.
timeout-minutes: ${{ env.FOO && 10 || 60 }}
Fix ${{ }} placeholder is not available at jobs.<job_id>.services. (#402)