← Back to issue list

shellcheck-actions.sh misses .github/workflows and currently exits non-zero

View original Github issue

Metadata

Project
starflow
Number
#200
Type
issue
State
open
Author
lengau
Labels
—
Created
Updated
Closed
—

Current evaluation

shellcheck-actions.sh has a shallow glob pattern missing .github/workflows and fails on setup-python-runner/action.yaml, breaking make lint-code on main.

Suggested action: keep open

Reason: Valid bug with a clear reproducer and an active contributor (ayushpratap27) who has outlined a detailed fix plan and reported progress with 40 findings to address. The issue is scoped, actionable, and maintainer-acknowledged, so it should remain open for the contributor to submit their PR.

Evaluated by: mr-cal-bot

Impact: 40 Quick Win: 17 Complexity: 50 Confidence: 90 Actionability: 85

Issue body

## Problem `.github/shellcheck-actions.sh` lints only two files in this repository, and the script currently fails. **The glob is too shallow.** The script expands `$DIR/../**/*.yaml`. Without `globstar`, `**` behaves like `*`, so the pattern resolves to `.github/*/*.yaml`, which matches only: - `setup-python-runner/action.yaml` - `snap-publish/action.yaml` Every workflow in `.github/workflows/` is skipped, so the shell fragments inside `run:` steps of `lint-python.yaml`, `test-python.yaml`, and the rest are never checked. **The script already fails.** Running it against `main` exits 1 because of warnings in `setup-python-runner/action.yaml`: ``` SC2086 (info): Double quote to prevent globbing and word splitting. SC1083 (warning): This } is literal. Check expression (missing ;/\n?) or quote it. ``` Both come from this line: ```yaml echo "cache-hash=$(echo "${{ toJSON(matrix.platform) }}" | sha1sum | cut -f1 -d' ')" >> "${GITHUB_OUTPUT}" ``` The `$(...)` and `${{ ... }}` substitutions produce unbalanced quoting for shellcheck. Because the script runs under `set -euo pipefail`, the first failure aborts the loop, so the remaining files are never reached either. ## Impact `make lint-code` calls this script, so the shellcheck half of the code linters is red on `main` today and provides no coverage of the workflows. ## Suggested fix 1. Widen the glob so workflow files are included, for example by enabling `globstar` at the top of the script: ```bash shopt -s globstar for f in "$DIR"/../**/*.yaml; do ``` This reaches `.github/workflows/*.yaml` as well as `.github/**/*.yaml`, which makes the coverage of that directory sensible. 2. Decide what to do about the `setup-python-runner/action.yaml` warnings. Options include templating the value into an environment variable so the `run:` block stays valid shell for shellcheck, or excluding known-workflow-template expressions from the check. 3. Confirm the intended failure semantics. A single informational finding aborting the whole loop makes the check hard to reason about. ## Notes Found while splitting `lint-python.yaml` into separate jobs (canonical/starflow#199). That change does not depend on this fix, but it keeps `make lint-code` as the name of the code lint entry point, so this should be addressed before relying on that job as a required check.

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.6-35b-a3b
Impact: 40
Quick Win: 17
Complexity: 50
Confidence: 90
Actionability: 85
keep open shellcheck-actions.sh has a shallow glob pattern missing .github/workflows and fails on setup-python-runner/action.yaml, breaking make lint-code on main.
qwen/qwen3.6-35b-a3b
Impact: 55
Quick Win: 26
Complexity: 45
Confidence: 85
Actionability: 85
keep open shellcheck-actions.sh has a shallow glob missing workflow files and fails on action.yaml warnings. Contributor has a detailed fix plan.
qwen/qwen3.6-35b-a3b
Impact: 45
Quick Win: 27
Complexity: 25
Confidence: 75
Actionability: 80
needs triage shellcheck-actions.sh has a shallow glob missing .github/workflows and fails on action.yaml template expressions, leaving lint-code red on main.

Update history

Date Change
updated
updated
created

Related work

  • Related To: canonical/starflow#199 (confidence 85%)

    Issue #200 was discovered while splitting lint-python.yaml in #199; both are related workflow/tooling improvements but independent.

Related issues

No related issues found above the similarity threshold.