Skip to content

Commit 3e8accd

Browse files
committed
ci(workflows): align all 3 workflows with kariricode-sanitizer canonical format
- ci.yml: identical structure — Patch phpunit.xml.dist, kcode quality - code-quality.yml: 5 parallel jobs (dependencies, security, analyse, cs-fixer, tests) + quality-summary gate; adapted Sanitizer→Serializer labels and test count (83) - release.yml: full quality gate before publish; adapted release body with serializer-specific description, Quick Start example and Quality Metrics table Follows ARFA 1.3 / Spec V4.0 canonical CI pattern.
1 parent 9c2d546 commit 3e8accd

3 files changed

Lines changed: 48 additions & 13 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ jobs:
4242
- name: Initialize devkit (.kcode/ generation)
4343
run: kcode init
4444

45-
# Disable beStrictAboutCoverageMetadata to avoid warnings from exception classes
46-
# that extend native RuntimeException (not a target for code coverage tracking).
45+
# Patch generated phpunit.xml.dist — beStrictAboutCoverageMetadata causes false
46+
# "not a valid target" warnings for classes extending vendor base classes
4747
- name: Patch phpunit.xml.dist
4848
run: |
4949
sed -i 's/beStrictAboutCoverageMetadata="true"/beStrictAboutCoverageMetadata="false"/' .kcode/phpunit.xml.dist

.github/workflows/code-quality.yml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ on:
1818

1919
jobs:
2020
# ============================================================================
21-
# DEPENDENCY VALIDATION (Spec V4.0 — zero-dep contract)
21+
# DEPENDENCY VALIDATION (Spec V4.0 — contract compliance)
2222
# Validates that composer.json is valid and platform requirements are met.
23-
# Serializer mandates: zero external runtime dependencies.
2423
# ============================================================================
2524
dependencies:
2625
name: Dependency Validation
@@ -98,6 +97,8 @@ jobs:
9897
- name: Initialize devkit
9998
run: kcode init
10099

100+
# Patch generated phpunit.xml.dist — beStrictAboutCoverageMetadata causes false
101+
# "not a valid target" warnings for classes extending vendor base classes
101102
- name: Patch phpunit.xml.dist
102103
run: |
103104
sed -i 's/beStrictAboutCoverageMetadata="true"/beStrictAboutCoverageMetadata="false"/' .kcode/phpunit.xml.dist
@@ -144,9 +145,10 @@ jobs:
144145
# UNIT & INTEGRATION TESTS (ARFA 1.3 §Testing — Zero Tolerance)
145146
# pcov is the mandatory driver (performance + accuracy over Xdebug).
146147
# Requires: 0 failures, 0 errors, 0 warnings, 0 risky tests.
148+
# Target: 83 tests / 153 assertions (serializer baseline).
147149
# ============================================================================
148150
tests:
149-
name: PHPUnit Tests (pcov)
151+
name: PHPUnit — 83 Tests (pcov)
150152
runs-on: ubuntu-latest
151153

152154
steps:
@@ -171,6 +173,8 @@ jobs:
171173
- name: Initialize devkit
172174
run: kcode init
173175

176+
# Patch generated phpunit.xml.dist — beStrictAboutCoverageMetadata causes false
177+
# "not a valid target" warnings for classes extending vendor base classes
174178
- name: Patch phpunit.xml.dist
175179
run: |
176180
sed -i 's/beStrictAboutCoverageMetadata="true"/beStrictAboutCoverageMetadata="false"/' .kcode/phpunit.xml.dist
@@ -200,9 +204,12 @@ jobs:
200204
echo "| Security Audit | ${{ needs.security.result }} |" >> "$GITHUB_STEP_SUMMARY"
201205
echo "| Static Analysis (PHPStan L9 + Psalm) | ${{ needs.analyse.result }} |" >> "$GITHUB_STEP_SUMMARY"
202206
echo "| Code Style (CS Fixer) | ${{ needs.cs-fixer.result }} |" >> "$GITHUB_STEP_SUMMARY"
203-
echo "| PHPUnit Tests (pcov) | ${{ needs.tests.result }} |" >> "$GITHUB_STEP_SUMMARY"
207+
echo "| PHPUnit Tests (83 / pcov) | ${{ needs.tests.result }} |" >> "$GITHUB_STEP_SUMMARY"
204208
205-
if [ "${{ needs.security.result }}" != "success" ] || [ "${{ needs.analyse.result }}" != "success" ] || [ "${{ needs.cs-fixer.result }}" != "success" ] || [ "${{ needs.tests.result }}" != "success" ]; then
209+
if [ "${{ needs.security.result }}" != "success" ] || \
210+
[ "${{ needs.analyse.result }}" != "success" ] || \
211+
[ "${{ needs.cs-fixer.result }}" != "success" ] || \
212+
[ "${{ needs.tests.result }}" != "success" ]; then
206213
echo "" >> "$GITHUB_STEP_SUMMARY"
207214
echo "❌ One or more quality gates failed. Merge blocked." >> "$GITHUB_STEP_SUMMARY"
208215
exit 1

.github/workflows/release.yml

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ jobs:
4141
- name: Initialize devkit
4242
run: kcode init
4343

44+
# Patch generated phpunit.xml.dist — beStrictAboutCoverageMetadata causes false
45+
# "not a valid target" warnings for classes extending vendor base classes
4446
- name: Patch phpunit.xml.dist
4547
run: |
4648
sed -i 's/beStrictAboutCoverageMetadata="true"/beStrictAboutCoverageMetadata="false"/' .kcode/phpunit.xml.dist
@@ -64,23 +66,49 @@ jobs:
6466
body: |
6567
## KaririCode\Serializer ${{ steps.version.outputs.tag }}
6668
67-
PHP 8.4+ serializer engine — **zero external dependencies**, ARFA 1.3 compliant.
69+
Format-agnostic serialization engine for PHP 8.4+.
70+
4 built-in encoders (JSON, XML, CSV, QueryString), `#[Serialize]` attribute-driven
71+
pipelines, zero runtime dependencies on encoders, and 100% quality gate. **ARFA 1.43 compliant.**
6872
6973
## Installation
7074
7175
```bash
7276
composer require kariricode/serializer
7377
```
7478
79+
## Quick Start
80+
81+
```php
82+
use KaririCode\Serializer\Attribute\Serialize;
83+
use KaririCode\Serializer\Provider\SerializerServiceProvider;
84+
85+
final class UserDto
86+
{
87+
#[Serialize(name: 'first_name')]
88+
public string $firstName = '';
89+
90+
#[Serialize(ignore: true)]
91+
public string $password = '';
92+
93+
public string $email = '';
94+
}
95+
96+
$serializer = (new SerializerServiceProvider())->createAttributeSerializer();
97+
$result = $serializer->serialize(new UserDto(firstName: 'Walmir', password: 'secret', email: 'w@k.org'), 'json');
98+
99+
echo $result->getPayload(); // {"first_name":"Walmir","email":"w@k.org"}
100+
```
101+
75102
## Quality Metrics
76103
77104
| Metric | Value |
78105
|--------|-------|
106+
| Tests | 83 passing |
107+
| Assertions | 153+ |
79108
| PHPStan Level | 9 (0 errors) |
80-
| Psalm | Level strict (0 errors) |
81-
| PHPUnit | 0 failures, 0 warnings |
82-
| Coverage | 100% classes |
83-
| Encoders | 4 (JSON, XML, CSV, QueryString) |
84-
| Dependencies | 0 runtime (kariricode/property-inspector dev) |
109+
| Psalm | 100% (0 errors) |
110+
| Encoders | 4 built-in (JSON, XML, CSV, QueryString) |
111+
| Runtime Deps | 1 (kariricode/property-inspector) |
112+
| PHP Version | 8.4+ |
85113
86114
See [CHANGELOG.md](CHANGELOG.md) for details.

0 commit comments

Comments
 (0)