Skip to content

feat: add reusable PHP CI and Composer release workflows - #1

Open
neilime with Copilot wants to merge 1 commit into
mainfrom
copilot/implement-actions-workflow-php
Open

neilime with Copilot wants to merge 1 commit into
mainfrom
copilot/implement-actions-workflow-php

Conversation

Copilot AI commented Oct 23, 2025 •

Copy link
Copy Markdown

Give PHP applications and Composer libraries reusable CI, documentation and release workflows. Projects own their Composer commands; the shared workflows handle runtime setup, validation, report publication and manual or scheduled releases.

Changes

  • Support .php-version, PHP version matrices and Composer projects with or without lockfiles. Discover root and conventional tooling manifests; disable installation scripts and plugins by default.
  • Run project-owned lint:ci and test:ci scripts unchanged. Group test command, coverage destination and cache settings under test; support Linux runner selection and a checks switch. Composer scripts own preparation and report generation; only the primary PHP version publishes coverage.
  • Offer optional source-distribution checks through one package input. Snapshot committed source, install it as an isolated production dependency, check exported entry points and run consumer checks. No generic PHP build action, package creation action or release artifact is needed.
  • Generate reusable phpDocumentor artifacts and reuse the shared HoverKraft quality actions. Project-specific asset generation and deployment remain in callers.
  • Use one release workflow for Conventional Commit version planning and GitHub publication through ci-github-publish. Support no-change detection, manual force, tag recovery and optional summaries. Composer versions come from tags; no version commit, GitHub App or source changelog is needed.
  • Keep CI and release usage guides in their generated workflow documentation, with metadata and leading comments as the source. Add dedicated action/workflow tests, one ADR, Make development targets and dependency maintenance.

Validation

  • PHPStan and PHPUnit pass on the Composer fixture.
  • The actual test action scripts pass against PHP/PCOV for JUnit/Cobertura generation, disabled coverage publication, preparation without injected arguments, custom commands and failure propagation.
  • Configuration and release-guard tests pass for defaults, JSON options, invalid settings, no changes, force, event restrictions and recovery without publishing.
  • CI Dokumentor regeneration, actionlint, offline zizmor, formatting, documentation links and all 17 shared references across the five candidate PRs pass locally. Candidate Composer manifests validate.
  • Provider and candidate integration results are reported in the CI checks.

Release contract

Callers gate release publication on successful validation with needs. Planning runs inside publication, so preceding validation still runs when there are no changes; no tag or release is created in that case. Distribution testing is optional CI behavior. Tag permissions and Packagist integration belong to each consumer. Application deployment remains project-specific.

Copilot AI changed the title [WIP] Implement first actions and workflow for PHP ecosystem Implement first actions and workflow for PHP ecosystem Oct 23, 2025
Copilot AI requested a review from neilime October 23, 2025 21:49

@neilime neilime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@copilot The main public entry point of this report is the reusable workflow "continuous-integration", the. We have some actions to avoid code duplicates and respecting SRP.

Continuous integration is basically separated in 4 sections:

Setup
Build
Lint
Tests

Lint and test must handle reporting.

Job should be able to run locally or in a container.

Here is a perfect implementation for nodejs you must inspire on: https://github.com/hoverkraft-tech/ci-github-nodejs/blob/main/.github/workflows/continuous-integration.yml

Copilot AI commented Nov 13, 2025

Copy link
Copy Markdown
Author

@copilot The main public entry point of this report is the reusable workflow "continuous-integration", the. We have some actions to avoid code duplicates and respecting SRP.

Continuous integration is...

I've refactored the implementation to match the Node.js reference structure. The workflow now properly delegates to dedicated actions:

New Actions Created:

  • lint - Handles linting with PR annotations via Checkstyle XML reports
  • build - Manages build commands with env vars, secrets, and artifact uploads
  • test - Executes tests with coverage reporting (GitHub PR comments or Codecov)

Key Improvements:

  • Added container support - all jobs can run inside Docker containers
  • Added runs-on parameter for custom GitHub runners
  • Lint and test inputs now accept JSON for advanced configuration
  • Build input supports env vars, secrets, and artifact handling
  • All actions handle their own reporting and annotations

Job Structure:

  • Setup → parses build configuration
  • Lint → delegates to lint action (with reporting)
  • Build → delegates to build action (with artifact handling)
  • Test → delegates to test action (with coverage reporting)

Commits: f42b275, 6e462c8

Copilot AI requested a review from neilime November 13, 2025 06:52

@neilime neilime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@copilot you must provide test project to run tests against it

type: string
required: false
default: ""
default: "build"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

default must be empty

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Changed the build default to empty string. This makes build steps optional - they only run when explicitly configured.

Commit: 037ebfc

Copilot AI commented Nov 13, 2025 •

Copy link
Copy Markdown
Author

@copilot you must provide test project to run tests against it

Added test project in tests/composer/ directory with:

  • Simple PHP source code (src/Sample.php)
  • Basic test runner (tests/run-simple-test.php)
  • Composer configuration with lint, build, and test scripts
  • Dockerfile for container-based testing
  • README with usage examples

The test project can be used to validate the workflow:

with:
  working-directory: "./tests/composer"

Commits: 037ebfc, 99c6c0f

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7569658f91e475ec93b99bd5964b059ad1336dcf
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpstan/phpstan/zipball/2770dcdf5078d0b0d53f94317e06affe88419aa8
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/comparator/zipball/e8e53097718d2b53cfb2aa859b06a41abf58c62e
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/CQvfmd /usr/bin/composer install --no-interaction (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/gnmIXV /usr/bin/composer install --no-interaction (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI requested a review from neilime November 13, 2025 07:45
@neilime
neilime marked this pull request as ready for review November 13, 2025 19:10

@neilime neilime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@copilot I've updated firewall rules you can re do your job now

Copilot AI commented Nov 13, 2025

Copy link
Copy Markdown
Author

@copilot I've updated firewall rules you can re do your job now

Enhanced the test project with real PHP testing tools:

Added:

  • PHPUnit 10.x - Unit testing framework
  • PHPStan 1.x - Static analysis tool
  • PHP CS Fixer 3.x - Code style checker

Configurations:

  • phpunit.xml - PHPUnit setup
  • phpstan.neon - PHPStan rules (level max)
  • .php-cs-fixer.php - PSR-12 + custom rules

Working Scripts:

  • composer lint - Runs PHPStan + PHP CS Fixer
  • composer test - Runs 2 PHPUnit tests (passing)
  • composer build - Creates dist artifacts

All dependencies installed successfully and scripts validated.

Commit: 3b9bd45

Copilot AI requested a review from neilime November 13, 2025 19:20
@neilime neilime changed the title Implement first actions and workflow for PHP ecosystem feat: implement first actions and workflow for PHP ecosystem Nov 14, 2025
@neilime
neilime force-pushed the copilot/implement-actions-workflow-php branch from 3b9bd45 to 090622e Compare November 14, 2025 08:01
@github-advanced-security

Copy link
Copy Markdown

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@neilime
neilime force-pushed the copilot/implement-actions-workflow-php branch 3 times, most recently from aa2145f to a904839 Compare November 14, 2025 17:23

@neilime neilime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@copilot ci-github-nodejs has been widely upgraded, especially its main reusable workflow "continuous -integration" (https://github.com/hoverkraft-tech/ci-github-nodejs/blob/main/.github/workflows/continuous-integration.yml ) and its related actions.

Please check what's new and apply these changes accordingly here

Copilot AI commented Nov 22, 2025

Copy link
Copy Markdown
Author

@copilot ci-github-nodejs has been widely upgraded, especially its main reusable workflow "continuous -integration" (https://github.com/hoverkraft-tech/ci-github-nodejs/blob/main/.github/workflows/con...

Upgraded the PHP CI workflow to match the latest ci-github-nodejs patterns:

Key Upgrades:

  • ✅ Added prepare job for advanced container configuration parsing
  • ✅ Enhanced container support with JSON object format (env, ports, volumes, credentials, pathMapping)
  • ✅ Updated lint/test actions to use parse-ci-reports from ci-github-common
  • ✅ Added command parameter to lint/test actions (defaults: lint:ci, test:ci)
  • ✅ Added path-mapping parameter for containerized environments
  • ✅ Added container-password and github-token secrets
  • ✅ Updated action versions (0.28.1 → 0.30.1)
  • ✅ Added YAML anchors for DRY principles
  • ✅ Updated script naming conventions to match Node.js patterns

Documentation:

  • Updated all action READMEs with new parameters and examples
  • Added comprehensive container configuration examples
  • Documented path mapping for containerized workflows

Commits: 0d242b1, ab89cc2, 46ee51d

Copilot AI requested a review from neilime November 22, 2025 07:53
@neilime neilime changed the title feat: implement first actions and workflow for PHP ecosystem feat: add Composer validation and package release workflows Nov 5, 2026
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Super-linter summary

Language Validation result
BIOME_FORMAT Pass ✅
BIOME_LINT Pass ✅
CHECKOV Pass ✅
DOCKERFILE_HADOLINT Pass ✅
GITHUB_ACTIONS Pass ✅
GITHUB_ACTIONS_ZIZMOR Pass ✅
GITLEAKS Pass ✅
GIT_COMMITLINT Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
JSCPD Pass ✅
MARKDOWN Pass ✅
MARKDOWN_PRETTIER Pass ✅
NATURAL_LANGUAGE Pass ✅
PRE_COMMIT Pass ✅
RENOVATE Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
XML Pass ✅
YAML Pass ✅
YAML_PRETTIER Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter
Super-linter revision: 2da136927bd4a73596db63044b504547c62cb854
Super-linter version: 9.0.0

Comment thread .github/workflows/__test-actions.yml Resolved
Comment thread .github/workflows/documentation.yml Resolved
Comment thread actions/lint/action.yml Resolved
Comment thread actions/package/create/action.yml Resolved
Comment thread actions/test/action.yml Resolved
Comment thread README.md Resolved
Comment thread Makefile Resolved
Copilot AI requested a review from neilime November 6, 2026 20:42
@neilime
neilime force-pushed the copilot/implement-actions-workflow-php branch 2 times, most recently from db5619c to 3e2aea0 Compare November 6, 2026 20:55
Comment thread docs/usage/continuous-integration.md Resolved
Comment thread actions/test/action.yml Resolved
Comment thread actions/build/action.yml Resolved
Add Composer setup, linting, Composer test reporting, package validation, API
documentation, and independent CI and release workflows. Reuse
shared HoverKraft quality and release actions and cover the supported paths
with action and workflow integration tests.

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: neilime <[email protected]>
Signed-off-by: Emilien Escalle <[email protected]>
@neilime
neilime force-pushed the copilot/implement-actions-workflow-php branch from 8d64ea9 to 1e1407d Compare November 6, 2026 22:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants