Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions .github/workflows/_build-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,28 +105,24 @@ on:
# ═══════════════════════════════════════════════════════════════════════════════
# Architecture: Split into parallel builds + manifest merge
#
# build-amd64 (self-hosted ax41, native) ──┐
# build-amd64 (GitHub-hosted ubuntu-24.04, native) ──┐
# ├── merge (GitHub-hosted, manifest + sign)
# build-arm64 (GitHub-hosted ARM runner, native) ──┘
#
# AMD64 builds natively on self-hosted Hetzner AX41. ARM64 builds natively on
# AMD64 builds natively on GitHub-hosted ubuntu-24.04. ARM64 builds natively on
# GitHub-hosted ARM runners (ubuntu-24.04-arm). Both push by digest; the merge
# job runs on GitHub-hosted ubuntu-24.04 to avoid token expiry and resource
# contention on the self-hosted runner. For PRs, builds run but skip push;
# merge is skipped.
# job creates a multi-arch manifest, signs, and scans. For PRs, builds run but
# skip push; merge is skipped.
# ═══════════════════════════════════════════════════════════════════════════════

jobs:
# ─────────────────────────────────────────────────────────────────────────────
# AMD64 build (native on self-hosted Hetzner AX41)
# AMD64 build (native on GitHub-hosted runner)
# ─────────────────────────────────────────────────────────────────────────────
build-amd64:
if: contains(inputs.platforms, 'linux/amd64')
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
timeout-minutes: ${{ inputs.timeout }}
concurrency:
group: amd64-build-${{ inputs.php-version }}
cancel-in-progress: false

permissions:
contents: read
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-nginx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ env:

jobs:
build-matrix:
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-php-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ jobs:
trigger-dependent-builds:
needs: [build-slim-matrix, build-slim-rootless-matrix, build-matrix, build-rootless-matrix, build-chromium-matrix, build-chromium-rootless-matrix, build-dev-matrix, build-dev-rootless-matrix]
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-php-fpm-nginx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ jobs:
# =====================================================================
notify-security-updates:
needs: [build-slim-matrix, build-slim-rootless-matrix, build-matrix, build-rootless-matrix, build-chromium-matrix, build-chromium-rootless-matrix, build-dev-matrix, build-dev-rootless-matrix]
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
if: github.event_name == 'schedule'

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-php-fpm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ jobs:
trigger-dependent-builds:
needs: [build-slim-matrix, build-slim-rootless-matrix, build-matrix, build-rootless-matrix, build-chromium-matrix, build-chromium-rootless-matrix, build-dev-matrix, build-dev-rootless-matrix]
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/check-updates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ permissions:

jobs:
check-updates:
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
# Quick smoke test on every push - builds entire chain locally
smoke-test:
if: github.event_name != 'workflow_dispatch'
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
timeout-minutes: 30

steps:
Expand Down Expand Up @@ -133,7 +133,7 @@ jobs:
# Full matrix test (manual trigger)
full-matrix:
if: github.event_name == 'workflow_dispatch'
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
timeout-minutes: 45

steps:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ permissions:
jobs:
framework-detection-tests:
name: Framework Detection Tests
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04

steps:
- name: Checkout code
Expand Down Expand Up @@ -73,7 +73,7 @@ jobs:

performance-benchmarks:
name: Performance Benchmarks
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04
needs: framework-detection-tests

steps:
Expand Down Expand Up @@ -128,7 +128,7 @@ jobs:

security-scan:
name: CVE Security Scan
runs-on: [self-hosted, linux, ax41]
runs-on: ubuntu-24.04

steps:
- name: Checkout code
Expand Down
60 changes: 44 additions & 16 deletions php-fpm-nginx/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
nginx gettext-base \
&& rm -rf /var/lib/apt/lists/*

# Create nginx directories
# Create nginx directories + forward access/error logs to docker log
# collector (stdout/stderr) so kubectl logs / docker logs sees them.
RUN mkdir -p /etc/nginx/conf.d /var/log/nginx /run/nginx && \
chown -R www-data:www-data /var/log/nginx /run/nginx
chown -R www-data:www-data /var/log/nginx /run/nginx && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# Debian nginx uses www-data by default, but let's ensure it
# Also remove the default site that conflicts with our configuration
Expand Down Expand Up @@ -105,10 +108,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
nginx gettext-base \
&& rm -rf /var/lib/apt/lists/*

# Create nginx directories with www-data ownership
# Create nginx directories with www-data ownership + forward access/error
# logs to docker log collector (stdout/stderr) so kubectl logs / docker
# logs sees them.
# Note: Debian nginx uses /var/lib/nginx for tmp dirs (body, proxy, fastcgi, etc.)
RUN mkdir -p /etc/nginx/conf.d /var/log/nginx /run/nginx /var/lib/nginx && \
chown -R www-data:www-data /var/log/nginx /run/nginx /etc/nginx /var/lib/nginx
chown -R www-data:www-data /var/log/nginx /run/nginx /etc/nginx /var/lib/nginx && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# Debian nginx uses www-data by default, but let's ensure it
# Remove default site that conflicts with our configuration
Expand Down Expand Up @@ -169,9 +176,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
nginx gettext-base \
&& rm -rf /var/lib/apt/lists/*

# Create nginx directories
# Create nginx directories + forward access/error logs to docker log
# collector (stdout/stderr) so kubectl logs / docker logs sees them.
RUN mkdir -p /etc/nginx/conf.d /var/log/nginx /run/nginx && \
chown -R www-data:www-data /var/log/nginx /run/nginx
chown -R www-data:www-data /var/log/nginx /run/nginx && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# Debian nginx uses www-data by default, but let's ensure it
# Also remove the default site that conflicts with our configuration
Expand Down Expand Up @@ -229,10 +239,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
nginx gettext-base \
&& rm -rf /var/lib/apt/lists/*

# Create nginx directories with www-data ownership
# Create nginx directories with www-data ownership + forward access/error
# logs to docker log collector (stdout/stderr) so kubectl logs / docker
# logs sees them.
# Note: Debian nginx uses /var/lib/nginx for tmp dirs (body, proxy, fastcgi, etc.)
RUN mkdir -p /etc/nginx/conf.d /var/log/nginx /run/nginx /var/lib/nginx && \
chown -R www-data:www-data /var/log/nginx /run/nginx /etc/nginx /var/lib/nginx
chown -R www-data:www-data /var/log/nginx /run/nginx /etc/nginx /var/lib/nginx && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# Debian nginx uses www-data by default, but let's ensure it
# Remove default site that conflicts with our configuration
Expand Down Expand Up @@ -293,9 +307,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
nginx gettext-base \
&& rm -rf /var/lib/apt/lists/*

# Create nginx directories
# Create nginx directories + forward access/error logs to docker log
# collector (stdout/stderr) so kubectl logs / docker logs sees them.
RUN mkdir -p /etc/nginx/conf.d /var/log/nginx /run/nginx && \
chown -R www-data:www-data /var/log/nginx /run/nginx
chown -R www-data:www-data /var/log/nginx /run/nginx && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# Debian nginx uses www-data by default, but let's ensure it
# Also remove the default site that conflicts with our configuration
Expand Down Expand Up @@ -353,10 +370,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
nginx gettext-base \
&& rm -rf /var/lib/apt/lists/*

# Create nginx directories with www-data ownership
# Create nginx directories with www-data ownership + forward access/error
# logs to docker log collector (stdout/stderr) so kubectl logs / docker
# logs sees them.
# Note: Debian nginx uses /var/lib/nginx for tmp dirs (body, proxy, fastcgi, etc.)
RUN mkdir -p /etc/nginx/conf.d /var/log/nginx /run/nginx /var/lib/nginx && \
chown -R www-data:www-data /var/log/nginx /run/nginx /etc/nginx /var/lib/nginx
chown -R www-data:www-data /var/log/nginx /run/nginx /etc/nginx /var/lib/nginx && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# Debian nginx uses www-data by default, but let's ensure it
# Remove default site that conflicts with our configuration
Expand Down Expand Up @@ -417,9 +438,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
nginx gettext-base \
&& rm -rf /var/lib/apt/lists/*

# Create nginx directories
# Create nginx directories + forward access/error logs to docker log
# collector (stdout/stderr) so kubectl logs / docker logs sees them.
RUN mkdir -p /etc/nginx/conf.d /var/log/nginx /run/nginx && \
chown -R www-data:www-data /var/log/nginx /run/nginx
chown -R www-data:www-data /var/log/nginx /run/nginx && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# Debian nginx uses www-data by default, but let's ensure it
# Also remove the default site that conflicts with our configuration
Expand Down Expand Up @@ -477,10 +501,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
nginx gettext-base \
&& rm -rf /var/lib/apt/lists/*

# Create nginx directories with www-data ownership
# Create nginx directories with www-data ownership + forward access/error
# logs to docker log collector (stdout/stderr) so kubectl logs / docker
# logs sees them.
# Note: Debian nginx uses /var/lib/nginx for tmp dirs (body, proxy, fastcgi, etc.)
RUN mkdir -p /etc/nginx/conf.d /var/log/nginx /run/nginx /var/lib/nginx && \
chown -R www-data:www-data /var/log/nginx /run/nginx /etc/nginx /var/lib/nginx
chown -R www-data:www-data /var/log/nginx /run/nginx /etc/nginx /var/lib/nginx && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# Debian nginx uses www-data by default, but let's ensure it
# Remove default site that conflicts with our configuration
Expand Down
2 changes: 1 addition & 1 deletion versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
},
"tools": {
"composer": "2",
"cbox_init": "2.1.0"
"cbox_init": "2.1.1"
},
"deprecation_policy": {
"php_removal_after_eol_months": 6,
Expand Down
Loading