Skip to content

[plan] Implement parallel multi-file actionlint execution #7649

Description

@github-actions

Objective

Enable actionlint to process multiple workflow files in a single Docker run for 2-3x faster validation.

Context

Currently, actionlint runs sequentially with one Docker container per file. The actionlint CLI supports multiple files as arguments, allowing batch processing.

Current flow: docker run ... file1.ymldocker run ... file2.ymldocker run ... file3.yml

Improved flow: docker run ... file1.yml file2.yml file3.yml

Approach

  1. Modify runActionlintOnFile() in pkg/cli/actionlint.go to accept multiple files
  2. Update the calling code to batch all workflow files into a single execution
  3. Ensure JSON output parsing handles multi-file results correctly
  4. Update error display to show which file each error came from
  5. Maintain timeout protection (may need to adjust based on file count)

Files to Modify

  • Update: pkg/cli/actionlint.go - Modify Docker execution logic
  • Update: pkg/cli/compile_command.go - Batch files before calling actionlint
  • Update: pkg/cli/actionlint_test.go - Add multi-file test cases

Acceptance Criteria

  • Multiple workflow files processed in single Docker run
  • JSON output correctly parsed for all files
  • Error messages clearly indicate source file
  • Performance improvement measurable (test with 3+ workflows)
  • Timeout adjusted appropriately for multiple files
  • Existing single-file functionality preserved

Performance Impact

Expected: 2-3x faster for projects with multiple workflows (eliminates Docker startup overhead per file)
Related to #7648

AI generated by Plan Command for discussion #7472

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions