Skip to content

Commit 4b1af7d

Browse files
committed
Build development env with multiple PHP versions
1 parent f74f208 commit 4b1af7d

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

.github/workflows/glpi-development-env.yml

+9-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ on:
1919
jobs:
2020
build:
2121
runs-on: "ubuntu-latest"
22+
strategy:
23+
fail-fast: false
24+
matrix:
25+
php-version: ["7.4", "8.0", "8.1", "8.3"]
26+
latest: ["false"]
27+
include:
28+
- {php-version: "8.4", latest: "true"}
2229
steps:
2330
- name: "Set variables"
2431
run: |
@@ -46,10 +53,10 @@ jobs:
4653
uses: "docker/build-push-action@v6"
4754
with:
4855
build-args: |
49-
BASE_IMAGE=php:8.3-apache-bullseye
56+
BASE_IMAGE=php:${{ matrix.php-version }}-apache-bullseye
5057
cache-from: "type=gha"
5158
cache-to: "type=gha,mode=max"
5259
context: "glpi-development-env"
5360
outputs: "${{ env.OUTPUTS }}"
5461
pull: true
55-
tags: "ghcr.io/glpi-project/glpi-development-env:latest"
62+
tags: "ghcr.io/glpi-project/glpi-development-env:${{ matrix.php-version }}${{ matrix.latest == 'true' && ',ghcr.io/glpi-project/glpi-development-env:latest' || '' }}"

glpi-development-env/Dockerfile

+17-8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ LABEL \
1818
org.opencontainers.image.source="[email protected]:glpi-project/docker-images"
1919

2020
RUN apt update \
21+
&& PHP_MAJOR_VERSION="$(echo $PHP_VERSION | cut -d '.' -f 1)" \
2122
\
2223
# Install bz2 extension (for marketplace).
2324
&& apt install --assume-yes --no-install-recommends --quiet libbz2-dev \
@@ -66,17 +67,25 @@ RUN apt update \
6667
&& docker-php-ext-install zip \
6768
\
6869
# Install xdebug PHP extension.
69-
&& pecl install xdebug \
70+
&& if [ $PHP_MAJOR_VERSION -lt "8" ]; then \
71+
pecl install xdebug-3.1.6 \
72+
; else \
73+
pecl install xdebug \
74+
; fi \
7075
&& docker-php-ext-enable xdebug \
7176
\
7277
# Install XMLRPC PHP extension.
73-
# Install from Github (extension should be available on PECL but is not)
74-
&& apt install --assume-yes --no-install-recommends --quiet libxml2-dev \
75-
&& mkdir -p /tmp/xmlrpc \
76-
&& (curl -LsfS https://github.com/php/pecl-networking-xmlrpc/archive/0f782ffe52cebd0a65356427b7ab72d48b72d20c/xmlrpc-0f782ff.tar.gz | tar xvz -C "/tmp/xmlrpc" --strip 1) \
77-
&& docker-php-ext-configure /tmp/xmlrpc --with-xmlrpc \
78-
&& docker-php-ext-install /tmp/xmlrpc \
79-
&& rm -rf /tmp/xmlrpc \
78+
&& if [ $PHP_MAJOR_VERSION -lt "8" ]; then \
79+
# For PHP < 8.x, install bundled extension
80+
docker-php-ext-install xmlrpc \
81+
; else \
82+
# For PHP 8+, install from Github (extension should be available on PECL but is not)
83+
mkdir -p /tmp/xmlrpc \
84+
&& curl -LsfS https://github.com/php/pecl-networking-xmlrpc/archive/0f782ffe52cebd0a65356427b7ab72d48b72d20c/xmlrpc-0f782ff.tar.gz | tar xvz -C "/tmp/xmlrpc" --strip 1 \
85+
&& docker-php-ext-configure /tmp/xmlrpc --with-xmlrpc \
86+
&& docker-php-ext-install /tmp/xmlrpc \
87+
&& rm -rf /tmp/xmlrpc \
88+
; fi \
8089
\
8190
# Enable apache mods.
8291
&& a2enmod rewrite \

0 commit comments

Comments
 (0)