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
63 changes: 30 additions & 33 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,49 +7,46 @@
.PHONY: build

build:
@if [ -z "$(extension)" ]; then echo "Error: extension is not set. Use: make build extension=<extension> version=<version>"; exit 1; fi
@if [ -z "$(php_version)" ]; then echo "Error: version is not set. Use: make build extension=<extension> version=<version>"; exit 1; fi
@if [ -z "$(extension)" ]; then echo "Error: extension is not set. Use: make build extension=<extension> php_version=<version>"; exit 1; fi
@if [ -z "$(php_version)" ]; then echo "Error: php_version is not set. Use: make build extension=<extension> php_version=<version>"; exit 1; fi
@if [ ! -f extensions/$(extension)/$(php_version)/Dockerfile.alpine ]; then echo "Error: Dockerfile extensions/$(extension)/$(php_version)/Dockerfile.alpine not found."; exit 1; fi
@BUILDER_IMAGE=dockerphpext-local/builder-$(extension)-$(php_version); \
TEST_IMAGE=test-dockerphpext-local/$(extension)-$(php_version); \
FINAL_IMAGE=dockerphpext-local/$(extension)-$(php_version); \
docker build \
-t dockerphpext/$(extension)-$(php_version) \
-t $$BUILDER_IMAGE \
-f extensions/$(extension)/$(php_version)/Dockerfile.alpine \
. && \
docker build \
-t $$TEST_IMAGE \
--target test \
--build-arg PHP_VERSION=$(php_version) \
--build-arg DISTRO=alpine \
--build-arg BUILDER_IMAGE=$$BUILDER_IMAGE \
-f extensions/Dockerfile \
. && \
docker build \
-t $$FINAL_IMAGE \
--build-arg PHP_VERSION=$(php_version) \
--build-arg DISTRO=alpine \
--build-arg BUILDER_IMAGE=$$BUILDER_IMAGE \
-f extensions/Dockerfile \
.
@EXT_VERSION=$$(docker run --rm dockerphpext/$(extension)-$(php_version) php --ri $(extension) | grep '$(extension) version =>' | awk '{print $$NF}'); \
if [ -n "$$EXT_VERSION" ]; then \
echo "Detected $(extension) version: $$EXT_VERSION"; \
docker tag dockerphpext/$(extension)-$(php_version) dockerphpext/$(extension):$$EXT_VERSION-php$(php_version)-alpine; \
echo "Tagged: dockerphpext/$(extension):php$(php_version)-alpine-$$EXT_VERSION"; \
fi

act-build:
act -P ubuntu-latest=catthehacker/ubuntu:act-22.04 --workflows .github/workflows/build.yml --container-daemon-socket /var/run/docker.sock --matrix version:$(version) --matrix extension:$(extension); \

run-single-test:
set -e; \
echo "PHP_VERSION=$$php_version"; \
echo "###############################################"; \
run-single-test: build
@set -e; \
TEST_IMAGE=test-dockerphpext-local/$(extension)-$(php_version); \
echo "###############################################"; \
echo "### Testing $(extension) PHP $$php_version"; \
echo "### Testing $(extension) PHP $(php_version)"; \
echo "###"; \
docker run --rm \
-v $$(pwd)/test.php /opt/php/tests/test.php \
test-$(extension)-$$php_version \
-v $$(pwd)/tests/test.php:/opt/php/tests/test.php \
$$TEST_IMAGE \
php /opt/php/tests/test.php $(extension); \
if docker run --rm test-$(extension)-$$php_version php -v 2>&1 | grep -Eqi 'Unable|Warning'; then \
if docker run --rm $$TEST_IMAGE php -m 2>&1 | grep -Eqi 'Unable|Warning'; then \
echo "❌ PHP extension load failed"; \
exit 1; \
fi; \
echo ""; \
echo "✅ Test passed"; \
echo ""; \

run-test:
@if [ "$(extension)" != "*" ]; then \
[ -d "extensions/$(extension)" ] || { echo "Extension not found"; exit 1; }; \
fi; \
set -euo pipefail; \
for path in extensions/$(extension)/*/; do \
[ -d "$$path" ] || continue; \
php_version=$$(basename "$$path"); \
$(MAKE) run-single-test extension=$(extension) php_version=$$php_version; \
done
echo "✅ Test passed for $(extension) PHP $(php_version)"; \
echo ""
22 changes: 22 additions & 0 deletions extensions/datadog/8.0/Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM php:8.0-alpine

RUN apk add --no-cache $PHPIZE_DEPS patchelf

COPY scripts/docker-php-ext-active /usr/local/bin/docker-php-ext-active
RUN chmod +x /usr/local/bin/docker-php-ext-active

ENV DDTRACE_VERSION=1.16.0
ENV DDTRACE_BUILD_DIR=/opt/ddtrace

RUN set -xe \
&& mkdir -p ${DDTRACE_BUILD_DIR} \
&& curl -Ls -o ${DDTRACE_BUILD_DIR}/datadog-setup.php \
https://github.com/DataDog/dd-trace-php/releases/download/${DDTRACE_VERSION}/datadog-setup.php \
&& php ${DDTRACE_BUILD_DIR}/datadog-setup.php --php-bin=all --enable-profiling \
&& docker-php-ext-active ddtrace \
&& docker-php-ext-active datadog-profiling \
&& docker-php-ext-active ddappsec \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddtrace.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/datadog-profiling.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddappsec.so \
&& rm -rf ${DDTRACE_BUILD_DIR}
23 changes: 23 additions & 0 deletions extensions/datadog/8.1/Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM php:8.1-alpine

RUN apk add $PHPIZE_DEPS patchelf
COPY scripts/docker-php-ext-active /usr/local/bin/docker-php-ext-active
RUN chmod +x /usr/local/bin/docker-php-ext-active

ENV DDTRACE_BUILD_DIR=/opt/ddtrace

RUN set -xe; \
mkdir -p ${DDTRACE_BUILD_DIR}; \
curl -Ls -o ${DDTRACE_BUILD_DIR}/datadog-setup.php \
https://github.com/DataDog/dd-trace-php/releases/download/1.16.0/datadog-setup.php

WORKDIR ${DDTRACE_BUILD_DIR}

RUN php datadog-setup.php --php-bin=all --enable-profiling

RUN docker-php-ext-active ddtrace \
&& docker-php-ext-active datadog-profiling \
&& docker-php-ext-active ddappsec \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddtrace.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/datadog-profiling.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddappsec.so
23 changes: 23 additions & 0 deletions extensions/datadog/8.2/Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM php:8.2-alpine

RUN apk add $PHPIZE_DEPS patchelf
COPY scripts/docker-php-ext-active /usr/local/bin/docker-php-ext-active
RUN chmod +x /usr/local/bin/docker-php-ext-active

ENV DDTRACE_BUILD_DIR=/opt/ddtrace

RUN set -xe; \
mkdir -p ${DDTRACE_BUILD_DIR}; \
curl -Ls -o ${DDTRACE_BUILD_DIR}/datadog-setup.php \
https://github.com/DataDog/dd-trace-php/releases/download/1.16.0/datadog-setup.php

WORKDIR ${DDTRACE_BUILD_DIR}

RUN php datadog-setup.php --php-bin=all --enable-profiling

RUN docker-php-ext-active ddtrace \
&& docker-php-ext-active datadog-profiling \
&& docker-php-ext-active ddappsec \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddtrace.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/datadog-profiling.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddappsec.so
23 changes: 23 additions & 0 deletions extensions/datadog/8.3/Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM php:8.3-alpine

RUN apk add $PHPIZE_DEPS patchelf
COPY scripts/docker-php-ext-active /usr/local/bin/docker-php-ext-active
RUN chmod +x /usr/local/bin/docker-php-ext-active

ENV DDTRACE_BUILD_DIR=/opt/ddtrace

RUN set -xe; \
mkdir -p ${DDTRACE_BUILD_DIR}; \
curl -Ls -o ${DDTRACE_BUILD_DIR}/datadog-setup.php \
https://github.com/DataDog/dd-trace-php/releases/download/1.16.0/datadog-setup.php

WORKDIR ${DDTRACE_BUILD_DIR}

RUN php datadog-setup.php --php-bin=all --enable-profiling

RUN docker-php-ext-active ddtrace \
&& docker-php-ext-active datadog-profiling \
&& docker-php-ext-active ddappsec \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddtrace.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/datadog-profiling.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddappsec.so
23 changes: 23 additions & 0 deletions extensions/datadog/8.4/Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM php:8.4-alpine

RUN apk add $PHPIZE_DEPS patchelf
COPY scripts/docker-php-ext-active /usr/local/bin/docker-php-ext-active
RUN chmod +x /usr/local/bin/docker-php-ext-active

ENV DDTRACE_BUILD_DIR=/opt/ddtrace

RUN set -xe; \
mkdir -p ${DDTRACE_BUILD_DIR}; \
curl -Ls -o ${DDTRACE_BUILD_DIR}/datadog-setup.php \
https://github.com/DataDog/dd-trace-php/releases/download/1.16.0/datadog-setup.php

WORKDIR ${DDTRACE_BUILD_DIR}

RUN php datadog-setup.php --php-bin=all --enable-profiling

RUN docker-php-ext-active ddtrace \
&& docker-php-ext-active datadog-profiling \
&& docker-php-ext-active ddappsec \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddtrace.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/datadog-profiling.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddappsec.so
23 changes: 23 additions & 0 deletions extensions/datadog/8.5/Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM php:8.5-alpine

RUN apk add $PHPIZE_DEPS patchelf
COPY scripts/docker-php-ext-active /usr/local/bin/docker-php-ext-active
RUN chmod +x /usr/local/bin/docker-php-ext-active

ENV DDTRACE_BUILD_DIR=/opt/ddtrace

RUN set -xe; \
mkdir -p ${DDTRACE_BUILD_DIR}; \
curl -Ls -o ${DDTRACE_BUILD_DIR}/datadog-setup.php \
https://github.com/DataDog/dd-trace-php/releases/download/1.16.0/datadog-setup.php

WORKDIR ${DDTRACE_BUILD_DIR}

RUN php datadog-setup.php --php-bin=all --enable-profiling

RUN docker-php-ext-active ddtrace \
&& docker-php-ext-active datadog-profiling \
&& docker-php-ext-active ddappsec \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddtrace.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/datadog-profiling.so \
&& patchelf --set-rpath '/opt/php/lib' /opt/php/extensions/ddappsec.so
Loading