@@ -78,38 +78,135 @@ jobs:
7878 - name : Smoke tests - PHP version
7979 run : |
8080 echo "::group::Testing PHP version"
81- docker run --rm test-${{ steps.vars.outputs.TAG }} php -v | tee php-version.txt
82- grep -q "${{ matrix.php-version }}" php-version.txt || { echo "::error::PHP version mismatch"; exit 1; }
81+ if ! docker run --rm test-${{ steps.vars.outputs.TAG }} php -v | tee php-version.txt; then
82+ echo "::error::Failed to run php -v"
83+ docker logs test-${{ steps.vars.outputs.TAG }} 2>&1 || true
84+ exit 1
85+ fi
86+
87+ if ! grep -q "${{ matrix.php-version }}" php-version.txt; then
88+ echo "::error::PHP version mismatch - expected ${{ matrix.php-version }}"
89+ cat php-version.txt
90+ exit 1
91+ fi
8392 echo "✅ PHP version correct"
8493 echo "::endgroup::"
8594
95+ - name : Smoke tests - Basic PHP CLI run
96+ run : |
97+ echo "::group::Testing basic PHP CLI execution"
98+ SAPI=$(docker run --rm test-${{ steps.vars.outputs.TAG }} php -r "echo PHP_SAPI;" 2>&1)
99+ if [ $? -ne 0 ]; then
100+ echo "::error::Failed to execute PHP CLI test"
101+ echo "$SAPI"
102+ exit 1
103+ fi
104+ echo "✅ PHP CLI runs successfully (SAPI: $SAPI)"
105+ echo "::endgroup::"
106+
86107 - name : Smoke tests - Extensions
87108 run : |
88109 echo "::group::Testing PHP extensions"
89- docker run --rm test-${{ steps.vars.outputs.TAG }} php -m | tee extensions.txt
110+ if ! docker run --rm test-${{ steps.vars.outputs.TAG }} php -m | tee extensions.txt; then
111+ echo "::error::Failed to list PHP extensions"
112+ docker logs test-${{ steps.vars.outputs.TAG }} 2>&1 || true
113+ exit 1
114+ fi
90115
91- for ext in gd json mysqli zip; do
92- grep -qi "$ext" extensions.txt || { echo "::error::Missing extension: $ext"; exit 1; }
93- echo "✅ Extension $ext found"
116+ # Core extensions that should be present
117+ REQUIRED_EXTS="gd json mysqli zip"
118+ MISSING_EXTS=""
119+
120+ for ext in $REQUIRED_EXTS; do
121+ if ! grep -qi "$ext" extensions.txt; then
122+ MISSING_EXTS="$MISSING_EXTS $ext"
123+ echo "::error::Missing extension: $ext"
124+ else
125+ echo "✅ Extension $ext found"
126+ fi
127+ done
128+
129+ if [ -n "$MISSING_EXTS" ]; then
130+ echo "::error::Missing required extensions:$MISSING_EXTS"
131+ echo "Available extensions:"
132+ cat extensions.txt
133+ exit 1
134+ fi
135+ echo "::endgroup::"
136+
137+ - name : Smoke tests - Entrypoint quick-run
138+ run : |
139+ echo "::group::Testing entrypoint/init quick-run"
140+ OUTPUT=$(docker run --rm test-${{ steps.vars.outputs.TAG }} php -r "echo 'entrypoint-ok';" 2>&1)
141+ EXIT_CODE=$?
142+
143+ if [ $EXIT_CODE -ne 0 ]; then
144+ echo "::error::Entrypoint test failed with exit code $EXIT_CODE"
145+ echo "$OUTPUT"
146+ exit 1
147+ fi
148+
149+ if ! echo "$OUTPUT" | grep -q "entrypoint-ok"; then
150+ echo "::error::Entrypoint did not produce expected output"
151+ echo "Output: $OUTPUT"
152+ exit 1
153+ fi
154+ echo "✅ Entrypoint executes successfully"
155+ echo "::endgroup::"
156+
157+ - name : Smoke tests - Directory permissions
158+ run : |
159+ echo "::group::Testing directory permissions"
160+ DIRS_TO_CHECK="/tmp /var/www"
161+
162+ for dir in $DIRS_TO_CHECK; do
163+ if ! docker run --rm test-${{ steps.vars.outputs.TAG }} sh -c "test -d $dir && [ -w $dir ]" 2>&1; then
164+ echo "::warning::Directory $dir either doesn't exist or is not writable"
165+ else
166+ echo "✅ Directory $dir exists and is writable"
167+ fi
94168 done
95169 echo "::endgroup::"
96170
97171 - name : Smoke tests - v2 specific (s6-overlay)
98172 if : matrix.variant == 'v2'
99173 run : |
100- echo "::group::Testing s6-overlay presence"
101- docker run --rm test-${{ steps.vars.outputs.TAG }} sh -c "test -d /etc/s6-overlay || exit 1"
174+ echo "::group::Testing s6-overlay presence and PID1 behavior"
175+
176+ # Check s6-overlay directory
177+ if ! docker run --rm test-${{ steps.vars.outputs.TAG }} sh -c "test -d /etc/s6-overlay" 2>&1; then
178+ echo "::error::s6-overlay directory not found at /etc/s6-overlay"
179+ docker run --rm test-${{ steps.vars.outputs.TAG }} ls -la /etc/ 2>&1 || true
180+ exit 1
181+ fi
102182 echo "✅ s6-overlay directory exists"
103183
104- docker run --rm test-${{ steps.vars.outputs.TAG }} sh -c "test -f /init || exit 1"
184+ # Check init binary
185+ if ! docker run --rm test-${{ steps.vars.outputs.TAG }} sh -c "test -f /init" 2>&1; then
186+ echo "::error::s6 init binary not found at /init"
187+ docker run --rm test-${{ steps.vars.outputs.TAG }} ls -la / 2>&1 || true
188+ exit 1
189+ fi
105190 echo "✅ s6 init binary exists"
191+
192+ # Check for s6-overlay services directory
193+ if ! docker run --rm test-${{ steps.vars.outputs.TAG }} sh -c "test -d /etc/s6-overlay/s6-rc.d || test -d /etc/services.d" 2>&1; then
194+ echo "::warning::s6 services directory not found (expected /etc/s6-overlay/s6-rc.d or /etc/services.d)"
195+ else
196+ echo "✅ s6 services directory found"
197+ fi
198+
106199 echo "::endgroup::"
107200
108201 - name : Smoke tests - FPM specific
109202 if : matrix.php-type == 'fpm'
110203 run : |
111204 echo "::group::Testing PHP-FPM"
112- docker run --rm test-${{ steps.vars.outputs.TAG }} php-fpm --version
205+ if ! docker run --rm test-${{ steps.vars.outputs.TAG }} php-fpm --version 2>&1 | tee fpm-version.txt; then
206+ echo "::error::Failed to run php-fpm --version"
207+ cat fpm-version.txt || true
208+ exit 1
209+ fi
113210 echo "✅ PHP-FPM version check passed"
114211 echo "::endgroup::"
115212
0 commit comments