fix(ci): restructure CI for PHP 8.1+ and proper PHPCS setup
- Drop PHP 8.0 from matrix — DTOs use readonly properties (8.1+) - Add composer.json with PHPCS/WPCS as dev dependencies - Add phpcs.xml.dist for WordPress coding standard config - Use dealerdirect/phpcodesniffer-composer-installer for auto path setup - Separate lint jobs: PHP syntax (8.1/8.2/8.3) + PHPCS + file-size - Update Requires PHP header to 8.1 - Update ARCHITECTURE.md file tree Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
55
.github/workflows/ci.yml
vendored
55
.github/workflows/ci.yml
vendored
@@ -6,15 +6,17 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
|
|
||||||
jobs:
|
permissions:
|
||||||
lint:
|
contents: read
|
||||||
name: PHP Lint + PHPCS
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# ── PHP Syntax Check ─────────────────────────────────────────────
|
||||||
|
lint-php:
|
||||||
|
name: PHP Lint (${{ matrix.php }})
|
||||||
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
php: [ '8.0', '8.1', '8.2' ]
|
php: [ '8.1', '8.2', '8.3' ]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
@@ -22,37 +24,30 @@ jobs:
|
|||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php }}
|
php-version: ${{ matrix.php }}
|
||||||
tools: composer, cs2pr
|
|
||||||
extensions: mbstring
|
|
||||||
|
|
||||||
- name: PHP syntax check
|
- name: Syntax check all PHP files
|
||||||
run: find . -name "*.php" -not -path "./vendor/*" | xargs -n 1 php -l
|
run: find . -name "*.php" -not -path "./vendor/*" | xargs -n 1 php -l
|
||||||
|
|
||||||
- name: Install PHPCS + WordPress standards
|
# ── WordPress Coding Standards (PHP CodeSniffer) ──────────────────
|
||||||
run: |
|
lint-phpcs:
|
||||||
composer global require --with-all-dependencies \
|
name: WordPress Coding Standards
|
||||||
"squizlabs/php_codesniffer=^3.13" \
|
runs-on: ubuntu-latest
|
||||||
"wp-coding-standards/wpcs=^3.0" \
|
steps:
|
||||||
"phpcsstandards/phpcsutils=^1.0"
|
- uses: actions/checkout@v4
|
||||||
phpcs --config-set installed_paths $(composer global config home)/vendor/wp-coding-standards/wpcs
|
|
||||||
|
- name: Set up PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: '8.1'
|
||||||
|
|
||||||
|
- name: Install Composer dependencies
|
||||||
|
run: composer install --no-interaction --prefer-dist --no-progress
|
||||||
|
|
||||||
- name: Run PHPCS
|
- name: Run PHPCS
|
||||||
run: |
|
run: composer run lint
|
||||||
phpcs --standard=WordPress --extensions=php \
|
|
||||||
--ignore=vendor/*,node_modules/*,tests/* \
|
|
||||||
--report=checkstyle \
|
|
||||||
--warning-severity=0 \
|
|
||||||
. | cs2pr || true
|
|
||||||
|
|
||||||
- name: Run PHPCS (strict — fail on errors)
|
|
||||||
run: |
|
|
||||||
phpcs --standard=WordPress --extensions=php \
|
|
||||||
--ignore=vendor/*,node_modules/*,tests/* \
|
|
||||||
--error-severity=1 --warning-severity=0 \
|
|
||||||
--report=summary \
|
|
||||||
.
|
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
|
# ── 300-line file check ──────────────────────────────────────────
|
||||||
file-size:
|
file-size:
|
||||||
name: 300-line file check
|
name: 300-line file check
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
@@ -48,10 +48,12 @@ peptide-repo-core/
|
|||||||
├── ARCHITECTURE.md # This file
|
├── ARCHITECTURE.md # This file
|
||||||
├── CONVENTIONS.md # Naming patterns, extension guides
|
├── CONVENTIONS.md # Naming patterns, extension guides
|
||||||
├── CHANGELOG.md # Semantic versioning changelog
|
├── CHANGELOG.md # Semantic versioning changelog
|
||||||
|
├── composer.json # Dev dependencies (PHPCS, WPCS) and lint scripts
|
||||||
|
├── phpcs.xml.dist # PHPCS ruleset configuration
|
||||||
│
|
│
|
||||||
├── .github/
|
├── .github/
|
||||||
│ └── workflows/
|
│ └── workflows/
|
||||||
│ └── ci.yml # PHP lint (8.0-8.2), PHPCS, 300-line check
|
│ └── ci.yml # PHP lint (8.1-8.3), PHPCS WordPress, 300-line check
|
||||||
│
|
│
|
||||||
├── assets/
|
├── assets/
|
||||||
│ └── css/
|
│ └── css/
|
||||||
|
|||||||
24
composer.json
Normal file
24
composer.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "peptiderepo/peptide-repo-core",
|
||||||
|
"description": "Canonical peptide data layer for the peptiderepo.com ecosystem.",
|
||||||
|
"type": "wordpress-plugin",
|
||||||
|
"license": "GPL-2.0-or-later",
|
||||||
|
"require": {
|
||||||
|
"php": ">=8.1"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"squizlabs/php_codesniffer": "^3.13",
|
||||||
|
"wp-coding-standards/wpcs": "^3.0",
|
||||||
|
"phpcsstandards/phpcsutils": "^1.0",
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "^1.0"
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lint": "phpcs",
|
||||||
|
"lint:fix": "phpcbf"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
* Author URI: https://peptiderepo.com
|
* Author URI: https://peptiderepo.com
|
||||||
* License: GPL-2.0-or-later
|
* License: GPL-2.0-or-later
|
||||||
* Text Domain: peptide-repo-core
|
* Text Domain: peptide-repo-core
|
||||||
* Requires PHP: 8.0
|
* Requires PHP: 8.1
|
||||||
*
|
*
|
||||||
* @see ARCHITECTURE.md — Full data flow and file tree.
|
* @see ARCHITECTURE.md — Full data flow and file tree.
|
||||||
* @see CONVENTIONS.md — Naming patterns and extension guides.
|
* @see CONVENTIONS.md — Naming patterns and extension guides.
|
||||||
|
|||||||
17
phpcs.xml.dist
Normal file
17
phpcs.xml.dist
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<ruleset name="Peptide Repo Core">
|
||||||
|
<description>WordPress coding standards for Peptide Repo Core.</description>
|
||||||
|
|
||||||
|
<file>.</file>
|
||||||
|
|
||||||
|
<exclude-pattern>/vendor/*</exclude-pattern>
|
||||||
|
<exclude-pattern>/node_modules/*</exclude-pattern>
|
||||||
|
<exclude-pattern>/tests/*</exclude-pattern>
|
||||||
|
|
||||||
|
<arg name="extensions" value="php"/>
|
||||||
|
<arg name="severity" value="1"/>
|
||||||
|
<arg name="warning-severity" value="0"/>
|
||||||
|
<arg value="sp"/>
|
||||||
|
|
||||||
|
<rule ref="WordPress"/>
|
||||||
|
</ruleset>
|
||||||
Reference in New Issue
Block a user