Redirecting to Glitch Docs #35
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: PHP | |
on: | |
# See: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch | |
workflow_dispatch: | |
# See: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push | |
push: | |
branches: | |
- '*' # matches every branch that doesn't contain a '/' | |
- '*/*' # matches every branch containing a single '/' | |
- '**' # matches every branch | |
tags: | |
- "*" | |
# See: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
env: | |
EXTRA_PHP_EXTENSIONS: intl bcmath zip pcntl exif curl gd pdo_pgsql pdo_mysql pdo_sqlite | |
DOCKER_PHP_EXTENSION_INSTALLER_VERSION: 2.2.2 | |
COMPOSER_VERSION: 2.7.1 | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
# See: https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs | |
matrix: | |
php_version: | |
- 8.2 | |
- 8.3 | |
container: | |
image: php:${{ matrix.php_version }}-cli | |
# See: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-concurrency-and-the-default-behavior | |
concurrency: | |
group: php-test-${{ github.ref }}-${{ matrix.php_version }} | |
cancel-in-progress: false | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
# NOTE: we lint PHP files before composer to avoid wasting time | |
# linting everything in vendor/ | |
- name: Lint PHP files | |
run: find . -name '*.php' -exec php --syntax-check {} \; > /dev/null | |
- name: Download mlocati/docker-php-extension-installer | |
uses: robinraju/[email protected] | |
with: | |
repository: mlocati/docker-php-extension-installer | |
tag: ${{env.DOCKER_PHP_EXTENSION_INSTALLER_VERSION}} | |
fileName: install-php-extensions | |
- name: Download composer | |
uses: robinraju/[email protected] | |
with: | |
repository: composer/composer | |
tag: ${{env.COMPOSER_VERSION}} | |
fileName: composer.phar | |
- name: Install PHP extensions | |
run: | | |
chmod +x install-php-extensions | |
./install-php-extensions ${{env.EXTRA_PHP_EXTENSIONS}} | |
- name: Cache composer dependencies | |
uses: actions/cache@v4 | |
with: | |
path: vendor/ | |
key: composer-${{matrix.php_version}}-${{ hashFiles('composer.lock') }} | |
- name: Install composer dependencies | |
run: php composer.phar install --no-interaction --prefer-dist | |
- name: Setup Environment | |
run: | | |
cp .env.testing .env | |
- run: php artisan config:cache | |
- run: php artisan route:clear | |
- run: php artisan storage:link | |
- run: php artisan key:generate | |
- name: Run tests | |
run: php artisan test | |
code-style: | |
name: Code Style | |
runs-on: ubuntu-latest | |
container: | |
image: php:8.3-cli | |
# See: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-concurrency-and-the-default-behavior | |
concurrency: | |
group: php-code-style-${{ github.ref }}-8.3 | |
cancel-in-progress: false | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download composer | |
uses: robinraju/[email protected] | |
with: | |
repository: composer/composer | |
tag: ${{env.COMPOSER_VERSION}} | |
fileName: composer.phar | |
- name: Download mlocati/docker-php-extension-installer | |
uses: robinraju/[email protected] | |
with: | |
repository: mlocati/docker-php-extension-installer | |
tag: ${{env.DOCKER_PHP_EXTENSION_INSTALLER_VERSION}} | |
fileName: install-php-extensions | |
- name: Install PHP extensions | |
run: | | |
chmod +x install-php-extensions | |
./install-php-extensions ${{env.EXTRA_PHP_EXTENSIONS}} | |
- name: Cache composer dependencies | |
uses: actions/cache@v4 | |
with: | |
path: vendor/ | |
key: composer-8.3-${{ hashFiles('composer.lock') }} | |
- name: Install laravel/pint | |
run: php composer.phar require laravel/pint --dev | |
- name: Install composer dependencies | |
run: php composer.phar install --no-interaction --prefer-dist | |
# - name: Run laravel/pint | |
# run: ./vendor/bin/pint --test |