Skip to content

Commit

Permalink
Merge pull request #107 from lion-packages/support
Browse files Browse the repository at this point in the history
Support with PHP 8.4
  • Loading branch information
GabrielPalac authored Jan 14, 2025
2 parents 491c0e2 + f8a8d9b commit 75b8c61
Show file tree
Hide file tree
Showing 54 changed files with 457 additions and 6,192 deletions.
63 changes: 63 additions & 0 deletions .env.actions
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
################################################################################
################# SERVER INFORMATION ------------------------- #################
################################################################################
APP_NAME="lion-bundle"
SERVER_DATE_TIMEZONE="America/Bogota"
SERVER_URL="http://127.0.0.1:8000"
SERVER_URL_AUD="http://127.0.0.1:5173"
SERVER_HASH="a50a54cf0454196d493809d282984333a0bcbf0b3703785bd329250485dd8307"
################################################################################
################# DATABASE CONNECTIONS ----------------------- #################
################################################################################
DB_TYPE="mysql"
DB_HOST="127.0.0.1"
DB_PORT=3306
DB_NAME="lion_database"
DB_USER="root"
DB_PASSWORD="lion"
################################################################################
DB_TYPE_TEST="mysql"
DB_HOST_TEST="127.0.0.1"
DB_PORT_TEST=3306
DB_NAME_TEST="lion_database_test"
DB_USER_TEST="root"
DB_PASSWORD_TEST="lion"
################################################################################
DB_TYPE_TEST_POSTGRESQL="postgresql"
DB_HOST_TEST_POSTGRESQL="127.0.0.1"
DB_PORT_TEST_POSTGRESQL=5432
DB_NAME_TEST_POSTGRESQL="lion_database_postgres"
DB_USER_TEST_POSTGRESQL="root"
DB_PASSWORD_TEST_POSTGRESQL="lion"
################################################################################
################# REDIS -------------------------------------- #################
################################################################################
REDIS_SCHEME="tcp"
REDIS_HOST="127.0.0.1"
REDIS_DATABASES=1
REDIS_PASSWORD="lion"
REDIS_PORT=6379
################################################################################
################# JWT DATA SECURITY -------------------------- #################
################################################################################
JWT_DEFAULT_MD="RS256"
JWT_EXP=3600 # number of hours in seconds
################################################################################
################# RSA DATA SECURITY -------------------------- #################
################################################################################
RSA_PATH="/etc/ssl/openssl.cnf" # the "/etc/ssl/openssl.cnf" value for docker
RSA_URL_PATH="keys/"
RSA_PRIVATE_KEY_BITS=2048
RSA_DEFAULT_MD="sha256"
################################################################################
################# AES DATA SECURITY -------------------------- #################
################################################################################
AES_METHOD="aes-256-cbc"
AES_KEY="" # 16 character value
AES_IV="" # 16 character value
################################################################################
################ CRONTAB -------------------------------------- ################
################################################################################
CRONTAB_PATH="/etc/" # the "/etc/" value for docker
CRONTAB_PHP_PATH="/usr/local/bin/php" # the '/usr/local/bin/php' value for docker
CRONTAB_PROJECT_PATH="/var/www/html/" # the "/var/www/html/" value for docker
25 changes: 2 additions & 23 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
DEVELOPMENT_ENVIRONMENT="dev"
################################################################################
################# SERVER INFORMATION ------------------------- #################
################################################################################
APP_NAME="lion-bundle"
SERVER_DATE_TIMEZONE="America/Bogota"
SERVER_URL="http://127.0.0.1:8000"
SERVER_URL_AUD="http://127.0.0.1:5173"
SERVER_URL="http://localhost:8000"
SERVER_URL_AUD="http://localhos:5173"
SERVER_HASH="a50a54cf0454196d493809d282984333a0bcbf0b3703785bd329250485dd8307"
################################################################################
################# DATABASE CONNECTIONS ----------------------- #################
Expand All @@ -31,26 +30,6 @@ DB_NAME_TEST_POSTGRESQL="lion_database_postgres"
DB_USER_TEST_POSTGRESQL="root"
DB_PASSWORD_TEST_POSTGRESQL="lion"
################################################################################
################# EMAIL DETAILS ------------------------------ #################
################################################################################
MAIL_NAME="${APP_NAME}"
MAIL_TYPE="phpmailer"
MAIL_HOST=mailhog # the mailhog value for docker
MAIL_USER_NAME="${APP_NAME}"
MAIL_PASSWORD=""
MAIL_PORT=1025 # the 1025 value for docker
MAIL_ENCRYPTION="tls"
MAIL_DEBUG=0
################################################################################
MAIL_NAME_SUPP="${APP_NAME}"
MAIL_TYPE_SUPP="symfony"
MAIL_HOST_SUPP=mailhog # the mailhog value for docker
MAIL_USER_NAME_SUPP="${APP_NAME}"
MAIL_PASSWORD_SUPP=""
MAIL_PORT_SUPP=1025 # the 1025 value for docker
MAIL_ENCRYPTION_SUPP="tls"
MAIL_DEBUG_SUPP=0
################################################################################
################# REDIS -------------------------------------- #################
################################################################################
REDIS_SCHEME="tcp"
Expand Down
160 changes: 160 additions & 0 deletions .github/workflows/php.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
name: Lion-Bundle (CI Workflow)

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

jobs:
composer-validation:
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 Install
run: composer install

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

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

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

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

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

- name: Set up 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

services:
redis:
image: redis
ports:
- 6379:6379

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

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

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

- name: Install system dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y git curl wget unzip libpq-dev libpng-dev libzip-dev zlib1g-dev libonig-dev libevent-dev libssl-dev
sudo apt-get clean
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
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 NodeJS and NPM
run: |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # Esto carga nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # Esto carga nvm bash_completion
nvm install 20
nvm use 20
npm install -g npm@11
- name: Copy .env.actions to .env
run: |
if [ -f .env.actions ]; then
cp .env.actions .env
else
echo ".env.actions not found! Please make sure the file exists."
exit 1
fi
- name: Install php dependencies
run: composer install

- name: Start PHP built-in server
run: |
nohup php -S 0.0.0.0:8000 -t public &
- name: Generate RSA Key's
run: php lion new:rsa

- name: Run tests
run: php lion test
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
/database/
test.txt
supervisord.pid
composer.lock
21 changes: 16 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM php:8.3-apache
FROM php:8.4-apache

ARG DEBIAN_FRONTEND=noninteractive
# ----------------------------------------------------------------------------------------------------------------------
Expand Down 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 All @@ -60,10 +64,17 @@ USER root
SHELL ["/bin/bash", "--login", "-c"]

# Install logo-ls
RUN wget https://github.com/Yash-Handa/logo-ls/releases/download/v1.3.7/logo-ls_amd64.deb \
&& dpkg -i logo-ls_amd64.deb \
&& rm logo-ls_amd64.deb \
&& curl https://raw.githubusercontent.com/UTFeight/logo-ls-modernized/master/INSTALL | bash
RUN ARCH=$(uname -m) && \
if [ "$ARCH" = "x86_64" ]; then \
wget https://github.com/Yash-Handa/logo-ls/releases/download/v1.3.7/logo-ls_amd64.deb; \
elif [ "$ARCH" = "aarch64" ]; then \
wget https://github.com/Yash-Handa/logo-ls/releases/download/v1.3.7/logo-ls_arm64.deb; \
else \
echo "Unsupported architecture: $ARCH" && exit 1; \
fi && \
dpkg -i logo-ls_*.deb && \
rm logo-ls_*.deb && \
curl https://raw.githubusercontent.com/UTFeight/logo-ls-modernized/master/INSTALL | bash

# Add configuration in .zshrc
RUN echo 'export NVM_DIR="$HOME/.nvm"' >> /home/lion/.zshrc \
Expand Down
40 changes: 21 additions & 19 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 All @@ -40,7 +40,7 @@
]
},
"require": {
"php": ">=8.3",
"php": ">=8.4",
"ext-ctype": "*",
"ext-filter": "*",
"ext-hash": "*",
Expand All @@ -50,34 +50,36 @@
"ext-tokenizer": "*",
"cboden/ratchet": "^0.4.4",
"fakerphp/faker": "^1.23",
"guzzlehttp/guzzle": "^7.8",
"lion/command": "^3.1",
"lion/database": "^10.4",
"lion/dependency-injection": "^3.0",
"guzzlehttp/guzzle": "^7.9",
"lion/command": "^5.0",
"lion/database": "^11.0",
"lion/dependency-injection": "^4.0",
"lion/exceptions": "^1.3",
"lion/files": "^7.1",
"lion/helpers": "^4.0",
"lion/request": "^6.9",
"lion/route": "^11.5",
"lion/security": "^10.0",
"lion/files": "^8.0",
"lion/helpers": "^5.1",
"lion/request": "^7.1",
"lion/route": "^12.1",
"lion/security": "^11.0",
"monolog/monolog": "^3.3",
"nesbot/carbon": "^2.66",
"predis/predis": "^2.2",
"symfony/console": "^6.3",
"symfony/process": "^7.1",
"nesbot/carbon": "^3.8",
"predis/predis": "^2.3",
"symfony/console": "^7.2",
"symfony/process": "^7.2",
"vlucas/phpdotenv": "^5.6"
},
"require-dev": {
"lion/test": "^2.1",
"phpunit/phpunit": "^11.4",
"robiningelbrecht/phpunit-pretty-print": "^1.3"
"lion/test": "^3.1",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^11.5",
"squizlabs/php_codesniffer": "^3.11",
"symfony/mailer": "^7.2"
},
"suggest": {
"ext-gd": "Required to use LionSpreadsheet.",
"ext-pdo": "Required to use all database features.",
"ext-redis": "Required to use the Redis cache.",
"fakerphp/faker": "Required to use the factory builder.",
"guzzlehttp/guzzle": "Requerido para usar el cliente HTTP.",
"guzzlehttp/guzzle": "Required to use the HTTP client.",
"phpunit/phpunit": "Required to use assertions and run tests.",
"predis/predis": "Required to use the predis connector."
},
Expand Down
Loading

0 comments on commit 75b8c61

Please sign in to comment.