CI: smoke test every image before the push - #19
Merged
Merged
Conversation
PHP 8.5 leaves Alpine edge for the stable 3.24 branch. Node 24 uses the LTS nodejs package from Alpine 3.24 main. Node 26 is new and uses nodejs-current from Alpine 3.24. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82
Debian 11 bullseye is EOL. Its security packages are gone from deb.debian.org, so apt install fails with 404. Bookworm still ships vagrant. Docker repo uses a signed-by keyring, Ansible comes from Debian instead of the old trusty PPA, and pip3 uses --break-system-packages (PEP 668). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82
On Alpine 3.24 php85 is the default PHP and ships /usr/bin/php, so "ln -s" fails in php85. php83 had no symlink and composer failed with "php: not found". Use "ln -sf" in php83, php84 and php85. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82
.scripts/test.sh checks one image: - PHP: version, clean startup (no extension warnings), main extensions, phpxd with Xdebug, composer. - Node.js: major version, npm, pnpm (node18+). - ansitest: ansible, ansible-lint, yamllint, molecule, docker and the community.docker collection. - All: bash, git, curl, make. The build matrix runs the script through the new "test" input of the shared Docker workflow, so every image and not only three is tested. The Makefile "test" target uses the same script. The tests found defects in the published images, fixed here: - node8 had Node 9 and no npm. Use nodejs-npm (Node 8) from Alpine 3.8. - node12 had Node 14. On Alpine 3.12 "nodejs" is Node 12. - node18 to node21: "pnpm@latest" (pnpm 11) crashes on these Node versions. Pin pnpm 8.15.9 for node18 (Node 18.9) and pnpm 10.34.6 for node19 to node21. The shared workflow ref points to the dockette/.github branch with the "test" input. Change it back to @master when that PR is merged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82
# Conflicts: # README.md
The "test" input of the shared dockette/.github workflow is not planned (dockette/.github#5 is closed). Run the tests in this repo: the Test job builds each image for linux/amd64, loads it and runs .scripts/test.sh. The Build job uses the shared workflow from @master again and pushes only after all tests pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82
f3l1x
commented
Oct 1, 2026
f3l1x
commented
Oct 1, 2026
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.
Summary
Before this PR, CI ran only a version check on 3 of the 33 images (
php84,node24,ansitest). The other 30 images were built but never started.This PR adds
.scripts/test.sh <item> [image], a smoke test for one image. TheTestjob is now a matrix over every image. Each item builds the image forlinux/amd64, loads it and runs the script. TheBuildjob (the shareddockette/.githubworkflow at@master) builds and pushes only after all tests pass.phpXXphpxdloads Xdebug,composernodeXXnpm,pnpm(node18+)ansitestansible,ansible-lint,yamllint,molecule,docker,community.dockercollectionbash,git,curl,makemake testuses the same script for local runs.Defects found and fixed
I ran the script against the published
dockette/ciimages. All PHP images pass. These images fail:npm. Fix: usenodejs-npm@mainfrom Alpine 3.8 (Node 8.14), the same method as node6.nodejs-currentis Node 14. Fix: usenodejs(Node 12).pnpmcrashes (ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING). Corepack installspnpm@latest, which is pnpm 11, and pnpm 11 does not run on these Node versions. Fix: pin pnpm 8.15.9 on node18 (Node 18.9.1 is too old for pnpm 9 and 10), and pin pnpm 10.34.6 on node19 to node21. The README table is updated.An earlier CI run on this PR showed the fixed versions: node8 = v8.14.0 with npm 6.4.1, node12 = v12.22.12, node21 = pnpm 10.34.6.
Checks
actionlintpasses.bash -npasses.shellcheckshows only 2 style notes (SC2001).🤖 Generated with Claude Code
https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82