add retry logic for dealing with pecl transient errors

This commit is contained in:
Paolo Cuffiani
2026-10-21 17:58:33 +02:00
parent 412d973557
commit 30a29c1a7a
9 changed files with 36 additions and 18 deletions
+6 -4
View File
@@ -21,7 +21,9 @@ RUN chmod +x /usr/local/bin/install-php-extensions
# PEAR < 1.10.18 can't read pecl.php.net responses anymore.
RUN pear upgrade --force https://pear.php.net/get/PEAR-1.10.18.tgz
RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y \
curl \
git \
@@ -60,10 +62,10 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
# other extensions. Installing amqp on its own so that install-php-extensions
# purges libssl1.0-dev before libssl-dev is installed for the rest.
&& if [ "${PHP_VERSION%%.*}" = "7" ]; then \
install-php-extensions amqp \
&& install-php-extensions $(echo "$PHP_EXTENSIONS" | sed 's/amqp//'); \
retry install-php-extensions amqp \
&& retry install-php-extensions $(echo "$PHP_EXTENSIONS" | sed 's/amqp//'); \
else \
install-php-extensions $PHP_EXTENSIONS; \
retry install-php-extensions $PHP_EXTENSIONS; \
fi \
&& if command -v a2enmod; then a2enmod rewrite; fi
+4 -2
View File
@@ -9,7 +9,9 @@ RUN chmod +x /usr/local/bin/install-php-extensions
# PEAR < 1.10.18 can't read pecl.php.net responses anymore.
RUN pear upgrade --force https://pear.php.net/get/PEAR-1.10.18.tgz
RUN apk add --no-cache \
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
apk add --no-cache \
coreutils \
curl \
git \
@@ -43,7 +45,7 @@ RUN apk add --no-cache \
5.6.*) PHP_EXTENSIONS="$PHP_EXTENSIONS mcrypt mysql";; \
7.0.*|7.1.*) PHP_EXTENSIONS="$PHP_EXTENSIONS mcrypt";; \
esac \
&& install-php-extensions $PHP_EXTENSIONS \
&& retry install-php-extensions $PHP_EXTENSIONS \
&& if command -v a2enmod; then a2enmod rewrite; fi
# Install Composer.
+4 -2
View File
@@ -214,7 +214,9 @@ RUN chmod +x /usr/local/bin/install-php-extensions
# PEAR < 1.10.18 can't read pecl.php.net responses anymore.
RUN pear upgrade --force https://pear.php.net/get/PEAR-1.10.18.tgz
RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y \
curl \
git \
@@ -246,7 +248,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
xsl \
zip \
" \
&& install-php-extensions $PHP_EXTENSIONS
&& retry install-php-extensions $PHP_EXTENSIONS
# Install Composer.
ENV PATH=$PATH:/root/composer/vendor/bin \
+4 -2
View File
@@ -278,7 +278,9 @@ RUN chmod +x /usr/local/bin/install-php-extensions
# PEAR < 1.10.18 can't read pecl.php.net responses anymore.
RUN pear upgrade --force https://pear.php.net/get/PEAR-1.10.18.tgz
RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y \
curl \
git \
@@ -310,7 +312,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
xsl \
zip \
" \
&& install-php-extensions $PHP_EXTENSIONS \
&& retry install-php-extensions $PHP_EXTENSIONS \
&& if command -v a2enmod; then a2enmod rewrite; fi
# Install Composer.
+4 -2
View File
@@ -254,7 +254,9 @@ RUN chmod +x /usr/local/bin/install-php-extensions
# PEAR < 1.10.18 can't read pecl.php.net responses anymore.
RUN pear upgrade --force https://pear.php.net/get/PEAR-1.10.18.tgz
RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y \
curl \
git \
@@ -286,7 +288,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
xsl \
zip \
" \
&& install-php-extensions $PHP_EXTENSIONS
&& retry install-php-extensions $PHP_EXTENSIONS
# Install Composer.
ENV PATH=$PATH:/root/composer/vendor/bin \
+3 -1
View File
@@ -3,4 +3,6 @@ FROM ${BASE_IMAGE}
LABEL maintainer="dev@chialab.io"
# Install XDebug.
RUN install-php-extensions xdebug
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
retry install-php-extensions xdebug
+5 -3
View File
@@ -2,8 +2,10 @@ ARG BASE_IMAGE=chialab/php:latest
FROM ${BASE_IMAGE}
LABEL maintainer="dev@chialab.io"
RUN if [ "$(echo "$PHP_VERSION" | cut -d. -f1,2)" = "8.0" ]; then \
install-php-extensions protobuf opentelemetry-php/ext-opentelemetry@1.1.3; \
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
if [ "$(echo "$PHP_VERSION" | cut -d. -f1,2)" = "8.0" ]; then \
retry install-php-extensions protobuf opentelemetry-php/ext-opentelemetry@1.1.3; \
else \
install-php-extensions protobuf opentelemetry-php/ext-opentelemetry@1.3.1; \
retry install-php-extensions protobuf opentelemetry-php/ext-opentelemetry@1.3.1; \
fi
+3 -1
View File
@@ -3,4 +3,6 @@ FROM ${BASE_IMAGE}
LABEL maintainer="dev@chialab.io"
# Install PCOV.
RUN install-php-extensions pcov
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
retry install-php-extensions pcov
+3 -1
View File
@@ -3,4 +3,6 @@ FROM ${BASE_IMAGE}
LABEL maintainer="dev@chialab.io"
# Install XHProf.
RUN install-php-extensions xhprof
# retry: PECL sometimes replies "No releases available" on CI runners.
RUN retry() { for i in 1 2 3; do "$@" && return; sleep 10; done; return 1; }; \
retry install-php-extensions xhprof