feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
208
.github/workflows/test.yml
vendored
Normal file
208
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,208 @@
|
||||
name: EasyStream Test Suite
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
pull_request:
|
||||
branches: [ main, develop ]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:10.6
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: test
|
||||
MYSQL_DATABASE: easystream_test
|
||||
MYSQL_USER: test
|
||||
MYSQL_PASSWORD: test
|
||||
ports:
|
||||
- 3306:3306
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
redis:
|
||||
image: redis:6
|
||||
ports:
|
||||
- 6379:6379
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, redis, imagick, gd
|
||||
coverage: xdebug
|
||||
|
||||
- name: Validate composer.json and composer.lock
|
||||
run: composer validate --strict
|
||||
|
||||
- name: Cache Composer packages
|
||||
id: composer-cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: vendor
|
||||
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-php-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --prefer-dist --no-progress --no-suggest
|
||||
|
||||
- name: Create test directories
|
||||
run: |
|
||||
mkdir -p tests/temp
|
||||
mkdir -p tests/fixtures
|
||||
mkdir -p tests/coverage
|
||||
mkdir -p tests/results
|
||||
mkdir -p f_data/logs/test
|
||||
mkdir -p f_data/uploads/test
|
||||
mkdir -p f_data/cache/test
|
||||
chmod -R 777 f_data
|
||||
|
||||
- name: Wait for MariaDB
|
||||
run: |
|
||||
while ! mysqladmin ping -h"127.0.0.1" -P3306 -utest -ptest --silent; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
- name: Setup test database
|
||||
run: |
|
||||
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < __install/easystream.sql
|
||||
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < tests/fixtures/test_data.sql
|
||||
|
||||
- name: Run PHPUnit tests
|
||||
env:
|
||||
DB_HOST: 127.0.0.1
|
||||
DB_NAME: easystream_test
|
||||
DB_USER: test
|
||||
DB_PASS: test
|
||||
REDIS_HOST: 127.0.0.1
|
||||
REDIS_PORT: 6379
|
||||
TESTING: true
|
||||
run: composer run-script test-ci
|
||||
|
||||
- name: Upload coverage reports to Codecov
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
file: ./tests/coverage/clover.xml
|
||||
flags: unittests
|
||||
name: codecov-umbrella
|
||||
fail_ci_if_error: false
|
||||
|
||||
- name: Archive test results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: always()
|
||||
with:
|
||||
name: test-results
|
||||
path: |
|
||||
tests/results/
|
||||
tests/coverage/
|
||||
|
||||
- name: Run security tests
|
||||
env:
|
||||
DB_HOST: 127.0.0.1
|
||||
DB_NAME: easystream_test
|
||||
DB_USER: test
|
||||
DB_PASS: test
|
||||
REDIS_HOST: 127.0.0.1
|
||||
TESTING: true
|
||||
run: composer run-script test-security
|
||||
|
||||
- name: Run performance tests
|
||||
env:
|
||||
DB_HOST: 127.0.0.1
|
||||
DB_NAME: easystream_test
|
||||
DB_USER: test
|
||||
DB_PASS: test
|
||||
REDIS_HOST: 127.0.0.1
|
||||
TESTING: true
|
||||
run: composer run-script test-performance
|
||||
|
||||
code-quality:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: mbstring, xml, ctype, iconv, intl
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --prefer-dist --no-progress --no-suggest
|
||||
|
||||
- name: Check PHP syntax
|
||||
run: find . -name "*.php" -not -path "./vendor/*" -not -path "./f_core/f_classes/class_adodb/*" -not -path "./f_core/f_classes/class_smarty/*" | xargs -I {} php -l {}
|
||||
|
||||
- name: Run code style checks (if configured)
|
||||
run: |
|
||||
if [ -f "phpcs.xml" ]; then
|
||||
./vendor/bin/phpcs
|
||||
else
|
||||
echo "No code style configuration found, skipping..."
|
||||
fi
|
||||
continue-on-error: true
|
||||
|
||||
integration-test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:10.6
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: test
|
||||
MYSQL_DATABASE: easystream_test
|
||||
MYSQL_USER: test
|
||||
MYSQL_PASSWORD: test
|
||||
ports:
|
||||
- 3306:3306
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
redis:
|
||||
image: redis:6
|
||||
ports:
|
||||
- 6379:6379
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, redis, imagick, gd
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --prefer-dist --no-progress --no-suggest
|
||||
|
||||
- name: Setup test environment
|
||||
run: |
|
||||
mkdir -p tests/temp tests/fixtures tests/coverage tests/results
|
||||
mkdir -p f_data/logs/test f_data/uploads/test f_data/cache/test
|
||||
chmod -R 777 f_data
|
||||
|
||||
- name: Setup test database
|
||||
run: |
|
||||
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < __install/easystream.sql
|
||||
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < tests/fixtures/test_data.sql
|
||||
|
||||
- name: Run integration tests
|
||||
env:
|
||||
DB_HOST: 127.0.0.1
|
||||
DB_NAME: easystream_test
|
||||
DB_USER: test
|
||||
DB_PASS: test
|
||||
REDIS_HOST: 127.0.0.1
|
||||
TESTING: true
|
||||
run: composer run-script test-integration
|
||||
Reference in New Issue
Block a user