Release v1.4.0 #146
2 changed files with 0 additions and 283 deletions
241
Jenkinsfile
vendored
241
Jenkinsfile
vendored
|
|
@ -1,241 +0,0 @@
|
|||
pipeline {
|
||||
agent any
|
||||
|
||||
environment {
|
||||
APP_ENV = 'testing'
|
||||
DB_CONNECTION = 'mysql'
|
||||
DB_HOST = 'mysql'
|
||||
DB_PORT = '3306'
|
||||
DB_DATABASE = 'ffr_testing'
|
||||
DB_USERNAME = 'ffr_user'
|
||||
DB_PASSWORD = 'ffr_password'
|
||||
CACHE_STORE = 'array'
|
||||
SESSION_DRIVER = 'array'
|
||||
QUEUE_CONNECTION = 'sync'
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
checkout scm
|
||||
}
|
||||
}
|
||||
|
||||
stage('Setup Environment') {
|
||||
steps {
|
||||
script {
|
||||
sh '''
|
||||
echo "Setting up environment for testing..."
|
||||
cp .env.example .env.testing
|
||||
echo "APP_ENV=testing" >> .env.testing
|
||||
echo "DB_CONNECTION=${DB_CONNECTION}" >> .env.testing
|
||||
echo "DB_HOST=${DB_HOST}" >> .env.testing
|
||||
echo "DB_PORT=${DB_PORT}" >> .env.testing
|
||||
echo "DB_DATABASE=${DB_DATABASE}" >> .env.testing
|
||||
echo "DB_USERNAME=${DB_USERNAME}" >> .env.testing
|
||||
echo "DB_PASSWORD=${DB_PASSWORD}" >> .env.testing
|
||||
echo "CACHE_STORE=${CACHE_STORE}" >> .env.testing
|
||||
echo "SESSION_DRIVER=${SESSION_DRIVER}" >> .env.testing
|
||||
echo "QUEUE_CONNECTION=${QUEUE_CONNECTION}" >> .env.testing
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install Dependencies') {
|
||||
parallel {
|
||||
stage('PHP Dependencies') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "Installing PHP dependencies..."
|
||||
composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Node Dependencies') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "Installing Node.js dependencies..."
|
||||
npm ci
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Generate Application Key') {
|
||||
steps {
|
||||
sh '''
|
||||
php artisan key:generate --env=testing --force
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Database Setup') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "Setting up test database..."
|
||||
php artisan migrate:fresh --env=testing --force
|
||||
php artisan config:clear --env=testing
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Code Quality Checks') {
|
||||
parallel {
|
||||
stage('PHP Syntax Check') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "Checking PHP syntax..."
|
||||
find . -name "*.php" -not -path "./vendor/*" -not -path "./node_modules/*" -exec php -l {} \\;
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('PHPStan Analysis') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
sh '''
|
||||
if [ -f "phpstan.neon" ]; then
|
||||
echo "Running PHPStan static analysis..."
|
||||
./vendor/bin/phpstan analyse --no-progress --error-format=table
|
||||
else
|
||||
echo "PHPStan configuration not found, skipping static analysis"
|
||||
fi
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
unstable(message: "PHPStan found issues")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Security Audit') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
sh '''
|
||||
echo "Running security audit..."
|
||||
composer audit
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
unstable(message: "Security vulnerabilities found")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Unit Tests') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "Running Unit Tests..."
|
||||
php artisan test tests/Unit/ --env=testing --stop-on-failure
|
||||
'''
|
||||
}
|
||||
post {
|
||||
always {
|
||||
publishTestResults testResultsPattern: 'tests/Unit/results/*.xml'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Feature Tests') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "Running Feature Tests..."
|
||||
php artisan test tests/Feature/ --env=testing --stop-on-failure
|
||||
'''
|
||||
}
|
||||
post {
|
||||
always {
|
||||
publishTestResults testResultsPattern: 'tests/Feature/results/*.xml'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Full Regression Test Suite') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "Running comprehensive regression test suite..."
|
||||
chmod +x ./run-regression-tests.sh
|
||||
./run-regression-tests.sh
|
||||
'''
|
||||
}
|
||||
post {
|
||||
always {
|
||||
// Archive test results
|
||||
archiveArtifacts artifacts: 'tests/reports/**/*', allowEmptyArchive: true
|
||||
|
||||
// Publish coverage reports if available
|
||||
publishHTML([
|
||||
allowMissing: false,
|
||||
alwaysLinkToLastBuild: true,
|
||||
keepAll: true,
|
||||
reportDir: 'coverage',
|
||||
reportFiles: 'index.html',
|
||||
reportName: 'Coverage Report'
|
||||
])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Performance Tests') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
sh '''
|
||||
echo "Running performance tests..."
|
||||
|
||||
# Test memory usage
|
||||
php -d memory_limit=256M artisan test tests/Feature/DatabaseIntegrationTest.php --env=testing
|
||||
|
||||
# Test response times for API endpoints
|
||||
time php artisan test tests/Feature/ApiEndpointRegressionTest.php --env=testing
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
unstable(message: "Performance tests indicated potential issues")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build Assets') {
|
||||
when {
|
||||
anyOf {
|
||||
branch 'main'
|
||||
branch 'develop'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh '''
|
||||
echo "Building production assets..."
|
||||
npm run build
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
// Clean up
|
||||
sh '''
|
||||
echo "Cleaning up..."
|
||||
rm -f .env.testing
|
||||
'''
|
||||
}
|
||||
success {
|
||||
echo '✅ All regression tests passed successfully!'
|
||||
// Notify success (customize as needed)
|
||||
// slackSend channel: '#dev-team', color: 'good', message: "Regression tests passed for ${env.JOB_NAME} - ${env.BUILD_NUMBER}"
|
||||
}
|
||||
failure {
|
||||
echo '❌ Regression tests failed!'
|
||||
// Notify failure (customize as needed)
|
||||
// slackSend channel: '#dev-team', color: 'danger', message: "Regression tests failed for ${env.JOB_NAME} - ${env.BUILD_NUMBER}"
|
||||
}
|
||||
unstable {
|
||||
echo '⚠️ Tests completed with warnings'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Inertia\Middleware;
|
||||
|
||||
class HandleInertiaRequests extends Middleware
|
||||
{
|
||||
/**
|
||||
* The root template that's loaded on the first page visit.
|
||||
*
|
||||
* @see https://inertiajs.com/server-side-setup#root-template
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $rootView = 'app';
|
||||
|
||||
/**
|
||||
* Determines the current asset version.
|
||||
*
|
||||
* @see https://inertiajs.com/asset-versioning
|
||||
*/
|
||||
public function version(Request $request): ?string
|
||||
{
|
||||
return parent::version($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the props that are shared by default.
|
||||
*
|
||||
* @see https://inertiajs.com/shared-data
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function share(Request $request): array
|
||||
{
|
||||
return array_merge(parent::share($request), [
|
||||
//
|
||||
]);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue