Skip to content

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

Merged
neilime merged 1 commit into
mainfrom
copilot/implement-actions-workflow-php
Nov 7, 2026
Merged

neilime merged 1 commit into
mainfrom
copilot/implement-actions-workflow-php

Conversation

Copilot AI commented Oct 23, 2025 •

Copy link
Copy Markdown
Contributor

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.
  • Expose the same prepare → validate → release journey as Node.js. A read-only preparation workflow plans the tag through ci-github-publish; publication accepts that tag and verifies source identity through the shared verifier. 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

  • Local preparation and publication guard tests pass for no-change status, ready/released status, source identity, retry context and invalid Composer metadata, without publishing.
  • All 70 shared planner, preparation and verifier tests pass, including optional artifacts, forced planning and immutable tags. Existing Node.js package-verification tests retain mandatory artifact checks.
  • Full PHP repository lint, actionlint, offline zizmor, generated documentation and local links pass. All 19 reusable workflow references in the five candidates validate, including their preparation gate and unchanged tag/configuration handoff.
  • Provider and candidate integration suites are reported in the CI checks.

Release contract

Callers run validation only when preparation returns ready, and gate publication on both jobs with needs. No-change and already-published tag retries skip validation and publication. Every stage uses the same source commit; preparation creates no tags, version commits or dispatches. Distribution testing is optional CI behavior. Tag permissions and Packagist integration belong to each consumer. Application deployment remains project-specific.

Upstream dependency

Release planning, verification and publication use the stable ci-github-publish 2.1.0 release, pinned to d983bd6279de308518b8b8df7c51e179fd50bffb. No temporary publish PR references remain.

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

@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] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: neilime <314088+neilime@users.noreply.github.com>
Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
@neilime
neilime force-pushed the copilot/implement-actions-workflow-php branch from 353b54f to 7e343f4 Compare November 7, 2026 08:24
@neilime
neilime merged commit 94aa626 into main Nov 7, 2026
52 checks passed
@neilime
neilime deleted the copilot/implement-actions-workflow-php branch November 8, 2026 11:18
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