ci: lint inside built image at /scripts/ instead of bind-mounting host $PWD
All checks were successful
cpanel-importer Build and Push / Build-and-Push (push) Successful in 1m0s

Two failed attempts before this:
- Run 3703 (orig): docker run -v "$PWD:/src" --entrypoint php ...
  Failed because Gitea's act-based runner is itself containerized;
  $PWD inside the runner is not a path the host docker daemon can
  bind mount. "Could not open input file: /src/scripts/scan-dbs.php".
- Run 3704 (first attempt): php -l "$f" directly on the runner.
  Failed because the runner image (catthehacker/ubuntu act) doesn't
  ship php-cli by default. "php: command not found" exit 127.

The right fix: the Dockerfile already does
  COPY --chown=whp-import:whp-import scripts/ /scripts/
so the scripts exist inside the just-built smoke image at /scripts/.
Linting via `docker run --entrypoint php cpanel-importer:smoke
-l /scripts/foo.php` reads from the image's own rootfs — no bind
mount, no runner-side php dependency.

The for-loop var $f is still scripts/foo.php (matches host glob),
and the path inside the container becomes /scripts/foo.php after
the `-l "/$f"` prefix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude (bootstrap)
2026-05-31 08:44:55 -07:00
parent cff68569cb
commit 5e206edc50

View File

@@ -73,25 +73,26 @@ jobs:
fi
echo "smoke test passed"
# Lints run directly on the runner instead of via `docker run -v "$PWD:/src"`
# against the built image. Gitea runners are themselves containerized,
# so $PWD inside the runner is NOT a path the host docker daemon can bind
# mount; the previous approach surfaced as "Could not open input file"
# for every script. Running php/bash directly on the runner works because
# the runner image (ubuntu-latest) ships php-cli + bash, and the files
# exist in $PWD because the checkout step already populated them.
# Lints run inside the just-built image rather than on the runner side.
# The Dockerfile already COPYs scripts/ to /scripts/ inside the image,
# so we don't need a host bind mount (the original `docker run -v
# "$PWD:/src"` shape failed under Gitea's dockerized runner, where
# $PWD on the runner is not a path the host docker daemon can mount).
# Switching the path from /src/$f to /$f reads from the image's own
# /scripts/ rootfs entries directly. Runner-side `php -l` won't work
# because the act-based ubuntu-latest image doesn't ship php-cli.
- name: PHP syntax check
run: |
set -euo pipefail
for f in scripts/*.php scripts/lib/*.php; do
php -l "$f"
docker run --rm --entrypoint php cpanel-importer:smoke -l "/$f"
done
- name: Bash syntax check
run: |
set -euo pipefail
for f in scripts/*.sh; do
bash -n "$f"
docker run --rm --entrypoint bash cpanel-importer:smoke -n "/$f"
done
- name: Build and Push Image