From fdebfcb9869e9009ff5c787d57b69f4250e8764e Mon Sep 17 00:00:00 2001 From: marcusquinn <6428977+marcusquinn@users.noreply.github.com> Date: Tue, 17 Mar 2026 09:34:31 +0000 Subject: [PATCH] fix: add retry logic to composer install steps to resolve DNS timeout failures Replace bare 'composer install' with ramsey/composer-install action (which provides built-in retry, caching, and --prefer-dist) in code-quality.yml and tests.yml. Add a 3-attempt shell retry loop in release.yml where --no-dev --optimize-autoloader flags are required. phpunit.yml already used ramsey/composer-install and is unaffected. Closes #57 --- .github/workflows/code-quality.yml | 12 +++++++++--- .github/workflows/release.yml | 7 ++++++- .github/workflows/tests.yml | 14 ++++++-------- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index ca07297..2f8d9d9 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -27,7 +27,9 @@ jobs: tools: composer:v2 - name: Install dependencies - run: composer install --prefer-dist --no-progress + uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0 + with: + composer-options: "--prefer-dist --no-progress" - name: Run PHPCS run: composer phpcs @@ -54,7 +56,9 @@ jobs: tools: composer:v2, phpstan - name: Install dependencies - run: composer install --prefer-dist --no-progress + uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0 + with: + composer-options: "--prefer-dist --no-progress" - name: Run PHPStan run: composer phpstan @@ -75,7 +79,9 @@ jobs: tools: composer:v2, phpmd - name: Install dependencies - run: composer install --prefer-dist --no-progress + uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0 + with: + composer-options: "--prefer-dist --no-progress" - name: Run PHPMD run: composer phpmd diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b0d84e0..a8c5988 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,7 +34,12 @@ jobs: echo "VERSION=$VERSION" >> $GITHUB_ENV - name: Install dependencies - run: composer install --no-dev --optimize-autoloader + run: | + for i in 1 2 3; do + composer install --no-dev --optimize-autoloader --prefer-dist && break + echo "Composer install attempt $i failed, retrying in 15s..." + sleep 15 + done - name: Create build directory run: | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 33eec54..dcd6c3e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -28,11 +28,10 @@ jobs: extensions: mbstring, intl, zip tools: composer:v2 - - name: Clear Composer Cache - run: composer clear-cache - - name: Install dependencies - run: composer install --prefer-dist --no-progress + uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0 + with: + composer-options: "--prefer-dist --no-progress" - name: Run tests run: ./vendor/bin/phpunit @@ -54,11 +53,10 @@ jobs: extensions: mbstring, intl, zip tools: composer:v2, phpcs - - name: Clear Composer Cache - run: composer clear-cache - - name: Install dependencies - run: composer install --prefer-dist --no-progress + uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0 + with: + composer-options: "--prefer-dist --no-progress" - name: Run PHPCS run: composer run phpcs