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:
peptiderepo
2026-04-17 07:43:01 +07:00
parent 106f15e027
commit c9361b0283
5 changed files with 70 additions and 32 deletions

View File

@@ -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

View File

@@ -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
View 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"
}
}

View File

@@ -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
View 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>