Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create back-end.yml #4

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 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
180 changes: 180 additions & 0 deletions .github/workflows/back-end.yml
Original file line number Diff line number Diff line change
@@ -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
Comment on lines +45 to +47
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We badly need tests.

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"
6 changes: 2 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
7 changes: 7 additions & 0 deletions phpstan.neon.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
includes:
- vendor/larastan/larastan/extension.neon
parameters:
paths:
- src/
level: 5
checkMissingIterableValueType: false
Loading