Last active
May 13, 2023 18:04
-
-
Save ManiruzzamanAkash/84ada9ecd80cba684d20aff58aadb15c to your computer and use it in GitHub Desktop.
Github Workflow for Laravel Pest and with Pint Complete Example
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
# Doc Link - https://devsenv.com/tutorials/how-to-setup-github-workflow-for-laravel-pint-and-php-pest-testing | |
name: Laravel Tests | |
on: | |
pull_request: | |
branches: | |
- main | |
push: | |
branches: | |
- main | |
jobs: | |
laravel-tests: | |
runs-on: ubuntu-latest | |
# Service container Mysql mysql | |
services: | |
# Label used to access the service container | |
mysql: | |
# Docker Hub image (also with version) | |
image: mysql:5.7 | |
env: | |
MYSQL_ROOT_PASSWORD: secret | |
MYSQL_DATABASE: testing | |
## map the "external" 33306 port with the "internal" 3306 | |
ports: | |
- 33306:3306 | |
# Set health checks to wait until mysql database has started (it takes some seconds to start) | |
options: >- | |
--health-cmd="mysqladmin ping" | |
--health-interval=10s | |
--health-timeout=5s | |
--health-retries=3 | |
strategy: | |
matrix: | |
operating-system: [ubuntu-latest] | |
php-versions: [ '8.1' ] | |
dependency-stability: [ prefer-stable ] | |
name: P${{ matrix.php-versions }} - L${{ matrix.laravel }} - ${{ matrix.dependency-stability }} - ${{ matrix.operating-system}} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install PHP versions | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
- name: Get Composer Cache Directory 2 | |
id: composer-cache | |
run: | | |
echo "::set-output name=dir::$(composer config cache-files-dir)" | |
- uses: actions/cache@v2 | |
id: actions-cache | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | |
restore-keys: | | |
${{ runner.os }}-composer- | |
- name: Cache PHP dependencies | |
uses: actions/cache@v2 | |
id: vendor-cache | |
with: | |
path: vendor | |
key: ${{ runner.OS }}-build-${{ hashFiles('**/composer.lock') }} | |
- name: Copy .env | |
run: php -r "file_exists('.env') || copy('.env.example', '.env');" | |
- name: Install Dependencies | |
run: composer install --no-interaction --prefer-dist --optimize-autoloader | |
- name: Create storage folders | |
run: mkdir -p storage/framework/{sessions,views,cache} | |
- name: Directory Permissions | |
run: chmod -R 777 storage bootstrap/cache | |
- name: Show dir | |
run: pwd | |
- name: PHP Version | |
run: php --version | |
# Code quality | |
- name: Execute tests (Unit and Feature tests) via PestPHP | |
# Set environment | |
env: | |
DB_CONNECTION: mysql | |
DB_DATABASE: testing | |
DB_PORT: 33306 | |
DB_USER: root | |
DB_PASSWORD: secret | |
run: | | |
php artisan key:generate | |
vendor/bin/pest | |
- name: Run Pint | |
run: vendor/bin/pint |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment