whisper-money/.github/actions/setup-php-deps/action.yml

58 lines
1.8 KiB
YAML

name: Setup PHP & Composer Deps
description: |
Sets up PHP 8.4 and installs Composer dependencies with two layers of cache:
the global Composer cache directory and the resolved `vendor/` directory
itself. On a `vendor/` cache hit we skip `composer install` entirely.
inputs:
php-version:
description: PHP version to install
required: false
default: '8.4'
tools:
description: Tools to install via shivammathur/setup-php
required: false
default: 'composer:v2'
coverage:
description: Coverage driver (xdebug, pcov, none)
required: false
default: 'none'
composer-args:
description: Extra args for `composer install` when running
required: false
default: '--no-interaction --prefer-dist --optimize-autoloader'
runs:
using: composite
steps:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ inputs.php-version }}
tools: ${{ inputs.tools }}
coverage: ${{ inputs.coverage }}
- name: Get composer cache directory
id: composer-cache
shell: bash
run: echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT"
- name: Cache composer global cache
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ runner.os }}-php${{ inputs.php-version }}-${{ hashFiles('composer.lock') }}
restore-keys: composer-${{ runner.os }}-php${{ inputs.php-version }}-
- name: Cache vendor/
id: vendor-cache
uses: actions/cache@v4
with:
path: vendor
key: vendor-${{ runner.os }}-php${{ inputs.php-version }}-${{ hashFiles('composer.lock') }}
- name: Install PHP Dependencies
if: steps.vendor-cache.outputs.cache-hit != 'true'
shell: bash
run: composer install ${{ inputs.composer-args }}