From 6f47cef366ff7beae03a22c236770c808e97518c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Mon, 19 Feb 2024 19:23:37 +0100 Subject: [PATCH 1/6] Create back-end.yml --- .github/workflows/back-end.yml | 180 +++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 .github/workflows/back-end.yml diff --git a/.github/workflows/back-end.yml b/.github/workflows/back-end.yml new file mode 100644 index 0000000..752bc92 --- /dev/null +++ b/.github/workflows/back-end.yml @@ -0,0 +1,180 @@ +# yaml-language-server: $schema=https://json.schemastore.org/github-workflow + +name: "Back-end" + +on: + pull_request: null + push: + branches: + - "master" +# Add [skip ci] to commit message to skip CI. + +permissions: + contents: "read" + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +jobs: + syntax_errors: + name: "1️⃣ Syntax errors" + runs-on: "ubuntu-22.04" + timeout-minutes: 5 + steps: + - + name: "Set up PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: "8.2" + extensions: "dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, gd, fileinfo, exif" + coverage: "none" + tools: "parallel-lint" + - + name: "Checkout repository" + uses: "actions/checkout@v4" + - + name: "Search for invalid complex curly syntax 🐌" + run: | + ! git grep -e '\${[A-Z_a-z]' -- '*.php' '*.scss' + - + name: "Check source code for syntax errors" + run: "composer exec --no-interaction -- parallel-lint src/ tests/" + + unit_tests: + name: "2️⃣ Unit and functional tests" + # TODO We have no unit test. + if: false + needs: + - "syntax_errors" + strategy: + fail-fast: false + matrix: + php-version: + - "8.2" + - "8.3" + dependencies: + - "lowest" + - "locked" + - "highest" + runs-on: "ubuntu-22.04" + timeout-minutes: 5 + steps: + - + name: "Set up PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: "${{ matrix.php-version }}" + extensions: "dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, gd, fileinfo, exif" + - + name: "Setup problem matcher for PHPUnit" + run: | + echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + - + name: "Checkout repository" + uses: "actions/checkout@v4" + - + name: "Install dependencies" + uses: "ramsey/composer-install@v2" + with: + dependency-versions: "${{ matrix.dependencies }}" + - + name: "Execute unit tests" + run: "composer exec -- phpunit" + - + name: "Tests have failed: upload logs" + if: "${{ failure() }}" + uses: "actions/upload-artifact@v3" + with: + path: "storage/logs/" + name: "laravel-logs-${{ matrix.php-version }}-${{ matrix.dependencies }}" + - + name: "Send coverage to Coveralls" + env: + COVERALLS_REPO_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + if: "${{ env.COVERALLS_REPO_TOKEN && matrix.php-version == '8.2' && matrix.dependencies == 'locked' }}" + run: | + wget --no-verbose \ + "https://github.com/php-coveralls/php-coveralls/releases/download/v2.5.3/php-coveralls.phar" + php ./php-coveralls.phar --verbose + + static_analysis: + name: "3️⃣ Static Analysis" + needs: + - "syntax_errors" + runs-on: "ubuntu-22.04" + timeout-minutes: 5 + steps: + - + name: "Set up PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: "8.2" + extensions: "dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, gd, fileinfo, exif" + coverage: "none" + - + name: "Checkout repository" + uses: "actions/checkout@v4" + - + name: "Check JSON files" + run: | + git ls-files --cached -z -- '*.json' \ + | xargs -t --null -L 1 -- \ + php -r 'json_decode(file_get_contents($argv[1]), null, 512, JSON_THROW_ON_ERROR);' + - + name: "Validate Composer configuration" + run: "composer validate --no-interaction --strict" + - + name: "Install dependencies" + uses: "ramsey/composer-install@v2" + with: + dependency-versions: "locked" + - + name: "Check PSR-4 mapping 🐌" + run: "composer dump-autoload --dev --optimize --strict-psr" + - + # https://github.com/phpstan/phpstan/issues/9475 + name: "Search for $this->$this typo 🐌" + run: | + ! git grep --line-number -e '\$this\s*->\s*\$this' -- ':!:*/back-end\.yml' + - + name: "Install orchestra/testbench" + run: "composer require --dev orchestra/testbench" + - + name: "Perform static analysis" + run: "composer exec -- phpstan || true 'Annotate only'" + + coding_standards: + name: "4️⃣ Coding Standards" + needs: + - "syntax_errors" + runs-on: "ubuntu-22.04" + timeout-minutes: 5 + steps: + - + name: "Set up PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: "8.2" + extensions: "dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, gd, fileinfo, exif" + coverage: "none" + tools: "phpcs,cs2pr" + - + name: "Checkout repository" + uses: "actions/checkout@v4" + - + name: "Install dependencies" + uses: "ramsey/composer-install@v2" + with: + dependency-versions: "locked" + #- + # name: "Detect coding standards violations" + # run: "composer exec -- phpcs -q --report=checkstyle --standard=PSR12 src/ | cs2pr" + - + name: "Detect coding standards violations" + id: "pint" + run: "composer exec -- pint --verbose --test" + - + name: "Annotate Pint results" + if: "${{ failure() && steps.pint.outcome == 'failure' }}" + run: "composer exec -- pint --test --format=checkstyle | cs2pr" From 196de14bee4daf2a17f102924a71d918f49e0601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Mon, 19 Feb 2024 19:24:43 +0100 Subject: [PATCH 2/6] Update back-end.yml --- .github/workflows/back-end.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/back-end.yml b/.github/workflows/back-end.yml index 752bc92..e7be595 100644 --- a/.github/workflows/back-end.yml +++ b/.github/workflows/back-end.yml @@ -39,7 +39,7 @@ jobs: ! git grep -e '\${[A-Z_a-z]' -- '*.php' '*.scss' - name: "Check source code for syntax errors" - run: "composer exec --no-interaction -- parallel-lint src/ tests/" + run: "composer exec --no-interaction -- parallel-lint src/ #tests/" unit_tests: name: "2️⃣ Unit and functional tests" From 0005f918ed53b207f7b22c05f0a462c55a5021fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Mon, 19 Feb 2024 19:27:13 +0100 Subject: [PATCH 3/6] Create phpstan.neon.dist --- phpstan.neon.dist | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 phpstan.neon.dist diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..c4910a5 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,7 @@ +includes: + - vendor/larastan/larastan/extension.neon +parameters: + paths: + - src/ + level: 5 + checkMissingIterableValueType: false From 0d4388d56c4926c530565f34c754ff59ffcdef0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Mon, 19 Feb 2024 19:29:39 +0100 Subject: [PATCH 4/6] Update composer.json --- composer.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 873c5ad..7a379c6 100644 --- a/composer.json +++ b/composer.json @@ -25,16 +25,14 @@ "laravel/laravel": "^10.16", "laravel/pint": "^1.6", "mockery/mockery": "^1.4.4", - "nunomaduro/larastan": "^2.1.6", + "larastan/larastan": "^2.9", "phpunit/phpunit": "^10.2.5" }, "minimum-stability": "dev", "prefer-stable": true, "autoload": { "psr-4": { - "Cone\\Bazar\\Stripe\\": "src/", - "Cone\\Bazar\\Stripe\\Database\\Seeders\\": "database/seeders/", - "Cone\\Bazar\\Stripe\\Database\\Factories\\": "database/factories/" + "Cone\\Bazar\\Stripe\\": "src/" } }, "autoload-dev": { From 05024648efc5bd63a69522f7416537b47b739234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Mon, 19 Feb 2024 19:35:14 +0100 Subject: [PATCH 5/6] Update phpstan.neon.dist --- phpstan.neon.dist | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index c4910a5..3fba383 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,6 +1,9 @@ includes: - vendor/larastan/larastan/extension.neon parameters: + databaseMigrationsPath: + - vendor/conedevelopment/bazar/database/migrations/ + - vendor/orchestra/testbench-core/laravel/migrations/ paths: - src/ level: 5 From 7e9cff2778f7bae04610d50494666e3ba41a84a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Mon, 29 Jul 2024 20:00:40 +0200 Subject: [PATCH 6/6] Update back-end.yml --- .github/workflows/back-end.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/back-end.yml b/.github/workflows/back-end.yml index e7be595..ce112c7 100644 --- a/.github/workflows/back-end.yml +++ b/.github/workflows/back-end.yml @@ -55,7 +55,6 @@ jobs: - "8.3" dependencies: - "lowest" - - "locked" - "highest" runs-on: "ubuntu-22.04" timeout-minutes: 5