Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 8 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ on:
branches: [ master ]

jobs:
build:
ci:

runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [ '8.1', '8.2', '8.3' ]
php-versions: [ '8.3', '8.4', '8.5' ]

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0 # To avoid "Shallow clone detected" error in SonarCloud report
fetch-depth: 0

#~ PHP Setup
- name: Setup PHP ${{ matrix.php-versions }}
Expand Down Expand Up @@ -48,30 +48,18 @@ jobs:

#~ CI part
- name: Dependencies
run: make deps
run: make php/deps

- name: Check Code Style
run: make phpcs
run: make php/check

- name: Units Tests
run: make tests
run: make php/tests

- name: Fix unit tests report path
run: |
sed -i 's+'$GITHUB_WORKSPACE'+/github/workspace+g' build/reports/phpunit/clover.xml
sed -i 's+'$GITHUB_WORKSPACE'+/github/workspace+g' build/reports/phpunit/unit.xml

- name: PHP 8.1 Compatibility
run: make php81compatibility

- name: PHP 8.3 Compatibility
run: make php83compatibility

- name: PHP Static Analyze
run: make analyze

- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@v2.1.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: make php/analyze
46 changes: 46 additions & 0 deletions .github/workflows/sonarcloud.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: SonarQube

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
sonarcloud:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # To avoid "Shallow clone detected" error in SonarCloud report

#~ PHP Setup
- name: Setup PHP 8.3 # Minimum version
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'

#~ Composer Cache
- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-

- name: Install dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: make install

- name: Units Tests
run: make php/tests # To generate the coverage report

- name: SonarQube Scan
uses: SonarSource/sonarqube-scan-action@v7
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
4 changes: 2 additions & 2 deletions .php-cs-fixer.dist.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
//~ Rules
->setRules(
[
'@PER-CS2.0' => true,
]
'@PER-CS3x0' => true,
],
)

//~ Format
Expand Down
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,27 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [7.0.0] - 2026-01-06
[7.0.0]: https://github.com/eureka-framework/kernel-http/compare/6.0.0...7.0.0
### Added
- Add PHP 8.3+ support
- Add readonly + use promoted properties on lot of classes
- Now defaults & requirements on route are passed to the controller action as arguments
### Changed
- Remove lot useless phpdoc
- Update Makefile
- Update CI configs
- Fix some phpstan errors
- Update README to add examples configs and more info
- Some phpdoc improvements
- Improve Response Time middleware
- Improve some tests
### Removed
- Remove some utilities methods
- Remove DataCollection class

---

## [6.0.0] - 2024-02-22
[6.0.0]: https://github.com/eureka-framework/kernel-http/compare/5.3.0...6.0.0
### Added
Expand Down
71 changes: 34 additions & 37 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,83 +1,80 @@
.PHONY: validate install update deps phpcs phpcsf php81compatibility php83compatibility phpstan analyze tests testdox ci clean build/reports/phpunit build/reports/phpcs build/reports/phpstan
.PHONY: validate install update php/deps php/check php/fix php/min-compatibility php/max-compatibility php/phpstan php/analyze php/tests php/test php/testdox ci clean

PHP_MIN_VERSION := "8.3"
PHP_MAX_VERSION := "8.5"
COMPOSER_BIN := composer
define header =
@if [ -t 1 ]; then printf "\n\e[37m\e[100m \e[104m $(1) \e[0m\n"; else printf "\n### $(1)\n"; fi
endef

#~ Composer dependency
validate:
$(call header,Composer Validation)
@composer validate
@${COMPOSER_BIN} validate

install:
$(call header,Composer Install)
@composer install
@${COMPOSER_BIN} install

update:
$(call header,Composer Update)
@composer update
@composer bump --dev-only
@${COMPOSER_BIN} update
@${COMPOSER_BIN} bump --dev-only

composer.lock: install

#~ Vendor binaries dependencies
vendor/bin/php-cs-fixer:
vendor/bin/phpstan:
vendor/bin/phpunit:
vendor/bin/php-cs-fixer: composer.lock
vendor/bin/phpstan: composer.lock
vendor/bin/phpunit: composer.lock

#~ Report directories dependencies
build/reports/phpunit:
@mkdir -p build/reports/phpunit

build/reports/phpcs:
@mkdir -p build/reports/cs

build/reports/phpstan:
@mkdir -p build/reports/phpstan

#~ main commands
deps: composer.json
php/deps: composer.json
$(call header,Checking Dependencies)
@XDEBUG_MODE=off ./vendor/bin/composer-require-checker check --config-file="./ci/composer-require-checker.json"
@XDEBUG_MODE=off ./vendor/bin/composer-dependency-analyser --config ./ci/composer-dependency-analyser.php # for shadow, unused required dependencies and ext-* missing dependencies

phpcs: vendor/bin/php-cs-fixer build/reports/phpcs
php/check: vendor/bin/php-cs-fixer
$(call header,Checking Code Style)
@./vendor/bin/php-cs-fixer check

phpcsf: vendor/bin/php-cs-fixer
@XDEBUG_MODE=off ./vendor/bin/php-cs-fixer check
php/fix: vendor/bin/php-cs-fixer
$(call header,Fixing Code Style)
@./vendor/bin/php-cs-fixer fix -v
@XDEBUG_MODE=off ./vendor/bin/php-cs-fixer fix -v

php81compatibility: vendor/bin/phpstan build/reports/phpstan
$(call header,Checking PHP 8.1 compatibility)
@XDEBUG_MODE=off ./vendor/bin/phpstan analyse --configuration=./ci/php81-compatibility.neon --error-format=table
php/min-compatibility: vendor/bin/phpstan build/reports/phpstan
$(call header,Checking PHP ${PHP_MIN_VERSION} compatibility)
@XDEBUG_MODE=off ./vendor/bin/phpstan analyse --configuration=./ci/phpmin-compatibility.neon --error-format=table

php83compatibility: vendor/bin/phpstan build/reports/phpstan
$(call header,Checking PHP 8.3 compatibility)
@XDEBUG_MODE=off ./vendor/bin/phpstan analyse --configuration=./ci/php83-compatibility.neon --error-format=table
php/max-compatibility: vendor/bin/phpstan build/reports/phpstan #ci
$(call header,Checking PHP ${PHP_MAX_VERSION} compatibility)
@XDEBUG_MODE=off ./vendor/bin/phpstan analyse --configuration=./ci/phpmax-compatibility.neon --error-format=table

phpstan: vendor/bin/phpstan build/reports/phpstan
$(call header,Running Static Analyze)
@XDEBUG_MODE=off ./vendor/bin/phpstan analyse --error-format=checkstyle > ./build/reports/phpstan/phpstan.xml

analyze: vendor/bin/phpstan build/reports/phpstan
php/analyze: vendor/bin/phpstan build/reports/phpstan #manual & ci
$(call header,Running Static Analyze - Pretty tty format)
@XDEBUG_MODE=off ./vendor/bin/phpstan analyse --error-format=table

tests: vendor/bin/phpunit build/reports/phpunit #ci
php/tests: vendor/bin/phpunit build/reports/phpunit #ci
$(call header,Running Unit Tests)
@XDEBUG_MODE=coverage php -dzend_extension=xdebug.so ./vendor/bin/phpunit --testsuite=unit --coverage-clover=./build/reports/phpunit/clover.xml --log-junit=./build/reports/phpunit/unit.xml --coverage-php=./build/reports/phpunit/unit.cov --coverage-html=./build/reports/coverage/ --fail-on-warning
@XDEBUG_MODE=coverage php ./vendor/bin/phpunit --testsuite=unit --coverage-clover=./build/reports/phpunit/clover.xml --log-junit=./build/reports/phpunit/unit.xml --coverage-php=./build/reports/phpunit/unit.cov --coverage-html=./build/reports/coverage/ --fail-on-warning

php/test: php/tests

integration: vendor/bin/phpunit build/reports/phpunit #manual
php/integration: vendor/bin/phpunit build/reports/phpunit #manual
$(call header,Running Integration Tests)
@XDEBUG_MODE=coverage php -dzend_extension=xdebug.so ./vendor/bin/phpunit --testsuite=integration --fail-on-warning
@XDEBUG_MODE=coverage php ./vendor/bin/phpunit --testsuite=integration --fail-on-warning

testdox: vendor/bin/phpunit #manual
php/testdox: vendor/bin/phpunit #manual
$(call header,Running Unit Tests (Pretty format))
@XDEBUG_MODE=coverage php -dzend_extension=xdebug.so ./vendor/bin/phpunit --testsuite=unit --fail-on-warning --testdox
@XDEBUG_MODE=coverage php ./vendor/bin/phpunit --testsuite=unit --fail-on-warning --testdox

clean:
$(call header,Cleaning previous build)
$(call header,Cleaning previous build) #manual
@if [ "$(shell ls -A ./build)" ]; then rm -rf ./build/*; fi; echo " done"

ci: clean validate deps install phpcs tests integration php81compatibility php83compatibility analyze
ci: clean validate install php/deps php/check php/tests php/integration php/min-compatibility php/max-compatibility php/analyze
Loading