feat: parallelize hadolint execution across Containerfiles
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
Research direction
Start with posit_bakery/plugins/builtin/hadolint/suite.py, then read posit_bakery/plugins/builtin/dgoss/suite.py and the posit_bakery/parallel/ module, especially ParallelShellExecutor and ShellTask. Run the hadolint lint command to inspect current behavior; done means grouped Containerfiles execute with configurable --jobs/-j concurrency while report writing, error aggregation, and dgoss-aligned progress behavior remain unchanged.
Written by the indexing model from the issue text.
Description
Summary
HadolintSuite.run() (posit-bakery/posit_bakery/plugins/builtin/hadolint/suite.py) groups hadolint commands by unique Containerfile, then runs subprocess.run(...) serially in a for loop — one lint invocation per unique Containerfile. This is a straightforward candidate for the tool-agnostic posit_bakery/parallel/ module (ParallelShellExecutor/ShellTask) introduced in #588 for parallel dgoss execution.
Scope
- Port
HadolintSuite.run()to buildShellTasks from the groupedHadolintCommands and dispatch throughParallelShellExecutor, following the pattern inplugins/builtin/dgoss/suite.py. - Add a
--jobs/-jflag to the hadolint lint command, matching thedgoss run --jobsconvention (BAKERY_MAX_CONCURRENCYenv /SETTINGS.max_concurrency, default 4). - Preserve existing per-Containerfile report/result-file writing and error aggregation (
BakeryHadolintError,BakeryToolRuntimeErrorGroup) exactly as-is; only the dispatch mechanism changes. - Update/extend the live progress table behavior to match dgoss (auto-disable on non-TTY/CI/
--quiet/single-task runs).
Out of scope
- Changing hadolint's actual lint rules or output format.
Part of the investigation started in #584. See #588 for the reference implementation pattern (dgoss).
- Dominant language
- Python
- Stars
- 2
- Forks
- 0
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 25
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from posit-dev/images-shared
-
Add max-parallel input to bakery-build-native.yml to cap matrix build concurrencyPossibly taken A pull request linked to this issue is open or already merged. Opencvp:0 docker tdp:1
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
posit-dev/images-shared#757 · 2 comments ·
Maintainers usually reply within 1 day
-
slack-build-notify: no persisted alert state — causes suppressed repeat-failure and recovery alertsOpenbug cicd cvp:0 docker needs discussion observability tdp:2
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
posit-dev/images-shared#677 ·
Maintainers usually reply within 1 day
-
cicd docker enhancement
Difficulty 5/5 Over a week Newbie friendliness 35/100
posit-dev/images-shared#857 · 1 comment ·
Maintainers usually reply within 1 day
-
lualatex fails for non-root users: shared TinyTeX in `/opt/.TinyTeX` has no writable `TEXMFVAR`Opendocker
Difficulty 3/5 1-2 days Newbie friendliness 72/100
posit-dev/images-shared#855 ·
Maintainers usually reply within 1 day
-
Schedule a monthly cache-refresh rebuild so weekly builds pick up OS updatesPossibly taken A pull request linked to this issue is open or already merged. Opencicd docker security
Difficulty 4/5 3-5 days Newbie friendliness 42/100
posit-dev/images-shared#852 ·
Maintainers usually reply within 1 day
All issues in posit-dev/images-shared
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
nansencenter/geodataset#39 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
awslabs/visual-asset-management-system#804 ·
Maintainers usually reply within 1 day
-
follow-up
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
odoo/odoo#297927 · 1 comment ·
Maintainers usually reply within 1 day
-
link-rot
Difficulty 1/5 Under an hour Newbie friendliness 67/100