Install GNU tar in the CI image so actions/cache works
CI Images / Build CI image (PHP 8.1) (pull_request) Successful in 48s
CI / Tests (PHP 8.1) (pull_request) Successful in 55s
CI Images / Build CI image (PHP 8.2) (pull_request) Successful in 1m46s
CI Images / Build CI image (PHP 8.3) (pull_request) Successful in 1m48s
CI Images / Build CI image (PHP 8.5) (pull_request) Successful in 2m26s
CI / No Debug Code (pull_request) Successful in 3s
CI / Tests (PHP 8.2) (pull_request) Successful in 53s
CI / Tests (PHP 8.3) (pull_request) Successful in 2m50s
CI / Tests (PHP 8.5) (pull_request) Successful in 2m58s
CI / Coding Standards & Static Analysis (pull_request) Failing after 17m18s
CI / Build Plugin Zip (pull_request) Skipped
CI Images / Build CI image (PHP 8.1) (pull_request) Successful in 48s
CI / Tests (PHP 8.1) (pull_request) Successful in 55s
CI Images / Build CI image (PHP 8.2) (pull_request) Successful in 1m46s
CI Images / Build CI image (PHP 8.3) (pull_request) Successful in 1m48s
CI Images / Build CI image (PHP 8.5) (pull_request) Successful in 2m26s
CI / No Debug Code (pull_request) Successful in 3s
CI / Tests (PHP 8.2) (pull_request) Successful in 53s
CI / Tests (PHP 8.3) (pull_request) Successful in 2m50s
CI / Tests (PHP 8.5) (pull_request) Successful in 2m58s
CI / Coding Standards & Static Analysis (pull_request) Failing after 17m18s
CI / Build Plugin Zip (pull_request) Skipped
actions/cache shells out to `tar --posix -P`. Alpine's busybox tar rejects both flags, so the cache step would fail in every job that runs inside these images — which is all of them once ci.yml switches over. coreutils does not cover this: tar is its own Alpine package. Add it, add zstd (which actions/cache prefers over gzip when present), and assert GNU tar in the image's smoke test so a future base-image change cannot quietly drop it again. Part of #187 Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01D9acV1mHktGAb1uyvNmrR2
This commit is contained in:
@@ -16,8 +16,11 @@ FROM php:${PHP_VERSION}-cli-alpine
|
||||
# (actions/checkout, actions/cache, actions/upload-artifact) *inside* the job
|
||||
# container, and shells `run:` steps through bash.
|
||||
#
|
||||
# coreutils, gawk, grep and sed replace the busybox applets with the GNU ones
|
||||
# the workflow scripts are written against (`tac`, `grep --include`).
|
||||
# coreutils, gawk, grep, sed and tar replace the busybox applets with the GNU
|
||||
# ones the workflow scripts are written against (`tac`, `grep --include`).
|
||||
# tar is not optional: actions/cache shells out to `tar --posix -P`, which
|
||||
# busybox rejects outright, so every cache step fails without it. zstd is what
|
||||
# actions/cache prefers over gzip when it is present.
|
||||
#
|
||||
# jq, curl, git and zip/unzip are used by release.yml and bin/build-zip.sh.
|
||||
RUN apk add --no-cache \
|
||||
@@ -30,8 +33,10 @@ RUN apk add --no-cache \
|
||||
jq \
|
||||
nodejs \
|
||||
sed \
|
||||
tar \
|
||||
unzip \
|
||||
zip \
|
||||
zstd \
|
||||
icu-libs \
|
||||
libzip \
|
||||
&& apk add --no-cache --virtual .build-deps \
|
||||
@@ -52,6 +57,7 @@ ENV COMPOSER_ALLOW_SUPERUSER=1 \
|
||||
COMPOSER_HOME=/composer
|
||||
|
||||
RUN mkdir -p "$COMPOSER_HOME" \
|
||||
&& tar --version | head -1 | grep -q 'GNU tar' \
|
||||
&& php -v \
|
||||
&& php -m | grep -qx intl \
|
||||
&& php -m | grep -qx mbstring \
|
||||
|
||||
+6
-2
@@ -30,8 +30,12 @@ inside the cluster replaces the whole thing (#187).
|
||||
(`actions/checkout`, `actions/cache`, `actions/upload-artifact`) *inside*
|
||||
the job container and shells `run:` steps through bash. Without these, the
|
||||
first step of every job fails.
|
||||
- **`coreutils`, `gawk`, `grep`, `sed`** — GNU versions, because the workflow
|
||||
scripts use `tac` and `grep --include`, which busybox does not provide.
|
||||
- **`coreutils`, `gawk`, `grep`, `sed`, `tar`** — GNU versions, because the
|
||||
workflow scripts use `tac` and `grep --include`, which busybox does not
|
||||
provide. GNU `tar` matters most: `actions/cache` shells out to
|
||||
`tar --posix -P`, and busybox rejects those flags, so every cache step fails
|
||||
without it. `zstd` is what `actions/cache` reaches for over gzip when it is
|
||||
installed.
|
||||
- **`curl`, `jq`, `git`, `zip`, `unzip`** — used by `release.yml` and
|
||||
`bin/build-zip.sh`.
|
||||
- **`intl` and `zip` PHP extensions**, plus Composer 2. `mbstring` is already
|
||||
|
||||
Reference in New Issue
Block a user