Skip to content

fix: optimize user metrics calculations #79

fix: optimize user metrics calculations

fix: optimize user metrics calculations #79

name: Continuous Integration
on:
push:
branches: [1.x]
pull_request:
branches: [1.x]
types: [opened, reopened, synchronize, ready_for_review]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
setup:
name: Setup PHP
runs-on: ubuntu-latest
if: ${{ !github.event.pull_request.draft }}
timeout-minutes: 5
outputs:
CACHE_KEY: ${{ steps.cache.outputs.key }}
PHP_VERSION: ${{ steps.setup.outputs.PHP_VERSION }}
PHP_EXTENSIONS: ${{ steps.setup.outputs.PHP_EXTENSIONS }}
PHP_INI_PROPERTIES: ${{ steps.setup.outputs.PHP_INI_PROPERTIES }}
COMPOSER_FLAGS: ${{ steps.setup.outputs.COMPOSER_FLAGS }}
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Setup job outputs
id: setup
run: |
echo "PHP_VERSION=8.4" >> "$GITHUB_OUTPUT"
echo "PHP_EXTENSIONS=mbstring,pdo,xml,ctype,fileinfo,json,curl,openssl,dom,zip" >> "$GITHUB_OUTPUT"
echo "PHP_INI_PROPERTIES=post_max_size=256M,upload_max_filesize=256M" >> "$GITHUB_OUTPUT"
echo "COMPOSER_FLAGS=--prefer-dist --optimize-autoloader" >> "$GITHUB_OUTPUT"
- name: Create cache key
id: cache
run: |
composer_hash=${{ hashFiles('composer.lock') }}
os_lower=$(echo ${{ runner.os }} | tr '[:upper:]' '[:lower:]')
arch_lower=$(echo ${{ runner.arch }} | tr '[:upper:]' '[:lower:]')
combined_key="${os_lower}-${arch_lower}-composer-${composer_hash}"
echo "key=${combined_key}" >> "$GITHUB_OUTPUT"
- name: Setup PHP
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
with:
php-version: ${{ steps.setup.outputs.PHP_VERSION }}
extensions: ${{ steps.setup.outputs.PHP_EXTENSIONS }}
ini-values: ${{ steps.setup.outputs.PHP_INI_PROPERTIES }}
coverage: xdebug
tools: composer:v2
- name: Install composer dependencies
uses: ramsey/composer-install@3cf229dc2919194e9e36783941438d17239e8520 # v3.1.1
with:
composer-options: ${{ steps.setup.outputs.COMPOSER_FLAGS }}
custom-cache-key: ${{ steps.cache.outputs.key }}
pint:
name: Perform Pint format
needs:
- setup
uses: ./.github/workflows/_pint.yml
with:
CACHE_KEY: ${{ needs.setup.outputs.CACHE_KEY }}
COMPOSER_FLAGS: ${{ needs.setup.outputs.COMPOSER_FLAGS }}
PHP_EXTENSIONS: ${{ needs.setup.outputs.PHP_EXTENSIONS }}
PHP_INI_PROPERTIES: ${{ needs.setup.outputs.PHP_INI_PROPERTIES }}
PHP_VERSION: ${{ needs.setup.outputs.PHP_VERSION }}
rector:
name: Perform Rector Check
needs:
- setup
uses: ./.github/workflows/_rector.yml
with:
CACHE_KEY: ${{ needs.setup.outputs.CACHE_KEY }}
COMPOSER_FLAGS: ${{ needs.setup.outputs.COMPOSER_FLAGS }}
PHP_EXTENSIONS: ${{ needs.setup.outputs.PHP_EXTENSIONS }}
PHP_INI_PROPERTIES: ${{ needs.setup.outputs.PHP_INI_PROPERTIES }}
PHP_VERSION: ${{ needs.setup.outputs.PHP_VERSION }}
phpstan:
name: Perform Phpstan Check
needs:
- setup
uses: ./.github/workflows/_phpstan.yml
with:
CACHE_KEY: ${{ needs.setup.outputs.CACHE_KEY }}
COMPOSER_FLAGS: ${{ needs.setup.outputs.COMPOSER_FLAGS }}
PHP_EXTENSIONS: ${{ needs.setup.outputs.PHP_EXTENSIONS }}
PHP_INI_PROPERTIES: ${{ needs.setup.outputs.PHP_INI_PROPERTIES }}
PHP_VERSION: ${{ needs.setup.outputs.PHP_VERSION }}
pest:
name: Perform Pest Tests
needs:
- setup
uses: ./.github/workflows/_pest.yml
with:
CACHE_KEY: ${{ needs.setup.outputs.CACHE_KEY }}
COMPOSER_FLAGS: ${{ needs.setup.outputs.COMPOSER_FLAGS }}
PHP_EXTENSIONS: ${{ needs.setup.outputs.PHP_EXTENSIONS }}
PHP_INI_PROPERTIES: ${{ needs.setup.outputs.PHP_INI_PROPERTIES }}
PHP_VERSION: ${{ needs.setup.outputs.PHP_VERSION }}