Skip to content

Commit

Permalink
feat: PSR12 standardization changes added with PHPStan
Browse files Browse the repository at this point in the history
  • Loading branch information
Sleon4 committed Jan 14, 2025
1 parent b462680 commit 8cc5d94
Show file tree
Hide file tree
Showing 31 changed files with 209 additions and 262 deletions.
1 change: 0 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
DEVELOPMENT_ENVIRONMENT="dev"
################################################################################
################# SERVER INFORMATION ------------------------- #################
################################################################################
Expand Down
174 changes: 70 additions & 104 deletions .github/workflows/php.yml
Original file line number Diff line number Diff line change
@@ -1,127 +1,93 @@
name: Lion-Test (CI Workflow)
name: Lion-Bundle (CI Workflow)

on:
push:
branches:
- actions-sleon
- actions-saco
- main
pull_request:
branches:
- main
schedule:
- cron: "15 0 * * *"

jobs:
composer-validation:
build:
runs-on: ubuntu-latest
name: Composer Validation

steps:
- name: Check out the repository
uses: actions/checkout@v4

- name: Cache Composer dependencies
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
extensions: mbstring, gd, zip

- name: Composer Validate
run: composer validate --strict

- name: Composer Check for vulnerabilities
run: composer audit --locked

- name: Composer Install
run: composer install

- name: Composer Dump-Autoload
run: composer dump-autoload --optimize --strict-psr

docker-validation:
runs-on: ubuntu-latest
name: Docker Validation
services:
mysql:
image: mysql
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
ports:
- 3306:3306
env:
MYSQL_DATABASE: lion_database
MYSQL_ROOT_PASSWORD: lion
MYSQL_PASSWORD: lion

redis:
image: redis
ports:
- 6379:6379

postgres:
image: postgres
ports:
- 5432:5432
env:
POSTGRES_DB: lion_database
POSTGRES_USER: root
POSTGRES_PASSWORD: lion

steps:
- name: Check out the repository
- name: Checkout repository
uses: actions/checkout@v4

- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Validate Docker Compose configuration
run: docker compose config

code-analyze:
runs-on: ubuntu-latest
name: PHP Code Analyze
needs:
- composer-validation
- docker-validation

steps:
- name: Check out the repository
uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y sudo nano zsh curl wget unzip
sudo apt-get install -y libpq-dev libpng-dev libzip-dev zlib1g-dev libonig-dev libevent-dev libssl-dev
sudo apt-get clean
- name: Set up PHP
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
extensions: mbstring, gd, zip

- name: Composer Install
run: composer install

- name: PHP CodeSnifer (Src)
run: php -d memory_limit=-1 vendor/bin/phpcs --standard=PSR12 src/

# - name: PHPStan (Src)
# run: php -d memory_limit=-1 vendor/bin/phpstan analyse --level max src

tests:
runs-on: ubuntu-latest
name: PHP Tests
needs: code-analyze

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Tear down containers
run: docker compose down --volumes --remove-orphans

- name: Stop running Docker containers (if any)
php-version: 8.4
extensions: mbstring, gd, zip, pdo, pdo_mysql, pdo_pgsql, redis, xdebug
coverage: xdebug
ini-values: |
xdebug.mode=develop,coverage,debug
xdebug.start_with_request=yes
xdebug.log_level=0
tools: composer

- name: Setup NPM
run: |
docker ps -q | xargs -r docker stop
docker ps -aq | xargs -r docker rm
- name: Build the Docker image
run: docker build -t bundle-app .

- name: Start services using Docker Compose
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source /home/runner/.bashrc
nvm install 20
npm install -g npm@11
echo 'export NVM_DIR="$HOME/.nvm"' >> /home/runner/.bashrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /home/runner/.bashrc
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> /home/runner/.bashrc
source /home/runner/.bashrc
- name: Copy .env.example to .env
run: |
docker compose -f docker-compose.yml up -d
env:
COMPOSE_PROJECT_NAME: test

- name: Install Composer dependencies
run: docker exec bundle-app composer install
if [ -f .env.example ]; then
cp .env.example .env
else
echo ".env.example not found! Please make sure the file exists."
exit 1
fi
- name: Install php dependencies
run: composer install

- name: Run PHP Tests
run: docker exec bundle-app php vendor/bin/phpunit
- name: Run tests
run: php lion test
4 changes: 4 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ USER lion
SHELL ["/bin/bash", "--login", "-i", "-c"]

# Install nvm, Node.js and npm
ENV NVM_DIR="/home/lion/.nvm"

ENV PATH="$NVM_DIR/versions/node/v20/bin:$PATH"

RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash \
&& source /home/lion/.bashrc \
&& nvm install 20 \
Expand Down
7 changes: 4 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"routes/middleware.php",
"src/LionBundle/Helpers/Bundle/constants.php",
"src/LionBundle/Helpers/Bundle/helpers.php",
"tests/Providers/NameRuleProvider.php"
"tests/Providers/NameProviderRule.php"
]
},
"autoload-dev": {
Expand Down Expand Up @@ -58,7 +58,7 @@
"lion/files": "^8.0",
"lion/helpers": "^5.1",
"lion/request": "^7.1",
"lion/route": "^12.0",
"lion/route": "^12.1",
"lion/security": "^11.0",
"monolog/monolog": "^3.3",
"nesbot/carbon": "^3.8",
Expand All @@ -71,7 +71,8 @@
"lion/test": "^3.1",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^11.5",
"squizlabs/php_codesniffer": "^3.11"
"squizlabs/php_codesniffer": "^3.11",
"symfony/mailer": "^7.2"
},
"suggest": {
"ext-gd": "Required to use LionSpreadsheet.",
Expand Down
2 changes: 0 additions & 2 deletions lion
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ use Lion\Files\Store;

define('IS_INDEX', false);

define('DEVELOPMENT_ENVIRONMENT', 'dev' === env('DEVELOPMENT_ENVIRONMENT'));

/**
* -----------------------------------------------------------------------------
* Register environment variable loader automatically
Expand Down
2 changes: 0 additions & 2 deletions npm
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ use Lion\Files\Store;

define('IS_INDEX', false);

define('DEVELOPMENT_ENVIRONMENT', 'dev' === env('DEVELOPMENT_ENVIRONMENT'));

/**
* -----------------------------------------------------------------------------
* Register environment variable loader automatically
Expand Down
11 changes: 4 additions & 7 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@

define('IS_INDEX', true);

define('DEVELOPMENT_ENVIRONMENT', 'dev' === env('DEVELOPMENT_ENVIRONMENT'));

/**
* -----------------------------------------------------------------------------
* Register The Auto Loader
Expand All @@ -27,7 +25,6 @@
use Lion\Bundle\Helpers\Http\Routes;
use Lion\Database\Driver;
use Lion\Files\Store;
use Lion\Mailer\Mailer;
use Tests\Providers\ExampleProvider;

/**
Expand Down Expand Up @@ -57,17 +54,17 @@
'port' => env('DB_PORT'),
'dbname' => env('DB_NAME'),
'user' => env('DB_USER'),
'password' => env('DB_PASSWORD')
'password' => env('DB_PASSWORD'),
],
env('DB_NAME_TEST') => [
'type' => env('DB_TYPE_TEST'),
'host' => env('DB_HOST_TEST'),
'port' => env('DB_PORT_TEST'),
'dbname' => env('DB_NAME'),
'user' => env('DB_USER_TEST'),
'password' => env('DB_PASSWORD_TEST')
]
]
'password' => env('DB_PASSWORD_TEST'),
],
],
]);

/**
Expand Down
Loading

0 comments on commit 8cc5d94

Please sign in to comment.