ci: pin actionlint and markdownlint-cli2 versions in Taskfiles - #303
Open
Brian Gordon Davis (bgdnext64) wants to merge 3 commits into
Open
ci: pin actionlint and markdownlint-cli2 versions in Taskfiles#303Brian Gordon Davis (bgdnext64) wants to merge 3 commits into
Brian Gordon Davis (bgdnext64) wants to merge 3 commits into
Conversation
Copilot started reviewing on behalf of
Brian Gordon Davis (bgdnext64)
August 4, 2026 16:41
View session
Contributor
There was a problem hiding this comment.
Pull request overview
Pins remaining latest tool versions in Taskfiles to specific releases to improve supply-chain security and reproducibility, and fixes two installer/version-check edge cases that were previously masked by using latest.
Changes:
- Pin
actionlintto1.7.12andmarkdownlint-cli2to0.23.0in their respective Taskfiles. - Fix
.taskfiles/scripts/install_actionlint.shto strip a leadingvfrom explicit versions (to matchdownload-actionlint.bashexpectations). - Make
internal:command:versionresilient to tools whose--helpexits non-zero, while still requiring the pinned version string to be present (and including stderr in the check).
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.taskfiles/scripts/install_actionlint.sh |
Normalizes version input by stripping leading v so pinned installs work with the upstream download script. |
.taskfiles/runtime.Taskfile.yml |
Documents why pwsh remains intentionally unpinned (latest). |
.taskfiles/markdown.Taskfile.yml |
Pins markdownlint-cli2 to 0.23.0. |
.taskfiles/github.Taskfile.yml |
Pins actionlint to 1.7.12. |
.taskfiles/_internal.Taskfile.yml |
Updates version-check helper to tolerate non-zero --help and to search combined stdout/stderr. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pins the remaining
latesttool versions in the Taskfiles to specific releases, addressing the supply-chain and reproducibility concerns in the issue. TheGO_VERSIONmap ingolang.Taskfile.ymlwas already fully pinned; this change covers the other unpinned entries found during the audit.Changes:
github.Taskfile.yml:actionlintpinned to1.7.12(current latest).markdown.Taskfile.yml:markdownlintCli2pinned to0.23.0(current latest).Pinning surfaced two latent bugs in the install/verify tooling that only manifested once a specific version was actually requested (previously masked by
latest). Both are fixed here:install_actionlint.shprepended avto numeric versions and passedv1.7.12to the pinneddownload-actionlint.bash, which only accepts a bare1.7.12orlatestand rejected it. The installer now strips any leadingvinstead of adding one.command:versioncheck ran<tool> --help | grep ...underbash -o pipefail.markdownlint-cli2 --helpexits non-zero, so the pipeline failed even when the version matched. The check now neutralizes the wrapped command's exit code (and also inspects stderr) while still requiring the version string to be present.Intentionally left unpinned:
runtime.Taskfile.yml:pwshstayslatest. Its installers use the Microsoft package repository (Linux) and Homebrew (macOS), which only provide the latest release;setup_pwsh.shexplicitly errors out for any non-latestvalue. A comment now documents this so the entry isn't mistaken for an oversight.The
latestoccurrences remaining in_internal.Taskfile.ymlare template conditionals (comparisons against the string"latest"), not version pins. The installer scripts under.taskfiles/scripts/default tolatestonly when no version is passed — the Taskfiles always pass an explicit pinned version.Fixes #277