-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f7d0e1d
commit 6f47cef
Showing
1 changed file
with
180 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
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" |