Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
/.gitattributes export-ignore
/.github/ export-ignore
/.gitignore export-ignore
/phpcs.xml export-ignore
/renovate.json export-ignore
/.laminas-ci.json export-ignore
/.laminas-ci/ export-ignore
/.ci/ export-ignore
/phpunit.xml.dist export-ignore
/test/ export-ignore
/clover.xml export-ignore
/clover.xml export-ignore
/codecov.yml export-ignore
/infection.json5.dist export-ignore
/mago.toml export-ignore
/lint-baseline.toml export-ignore
/analyzer-baseline.toml export-ignore
/compose.yml export-ignore
/docker/ export-ignore
65 changes: 30 additions & 35 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,39 @@
name: "Continuous Integration"

# Branch protection blocks direct pushes to release branches, and pull_request
# already re-triggers on every commit pushed to a PR branch (synchronize), so
# there's no push:branches trigger here — only PRs (targeting numbered
# release branches) and pushed version tags.
on:
pull_request:
push:
branches:
- "[0-9]+.[0-9]+.x"
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"

jobs:
matrix:
name: Generate job matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.matrix }}
steps:
- name: Gather CI configuration
id: matrix
uses: laminas/laminas-ci-matrix-action@v1

qa:
name: QA Checks
needs: [matrix]
runs-on: ${{ matrix.operatingSystem }}
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.matrix.outputs.matrix) }}
steps:
- name: ${{ matrix.name }}
uses: laminas/laminas-continuous-integration-action@v1
with:
job: ${{ matrix.job }}
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: 'password'
POSTGRES_DB: 'phpdb_test'
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 3
ports:
- 5432
uses: php-db/phpdb-qa-tools/.github/workflows/continuous-integration.yml@0.1.x
# CODECOV_TOKEN (org-wide) and INFECTION_DASHBOARD_API_KEY (per-repo) both
# come through here, whichever scope actually defines each one.
secrets: inherit
with:
php-versions: '["8.3", "8.4", "8.5"]'
run-integration: true
# Postgres container for the integration suite; the schema itself is
# seeded by the ListenerExtension PHPUnit bootstrap, not this workflow.
db-image: "postgres:17-alpine"
db-port: "5432"
db-env-json: '{"POSTGRES_DB":"phpdb_test","POSTGRES_USER":"postgres","POSTGRES_PASSWORD":"password"}'
db-health-cmd: "pg_isready -U postgres -d phpdb_test"
# The test/mutation-test jobs run directly on the runner VM (no
# container:), so the DB is only reachable via 127.0.0.1 + the mapped
# port, not the container name. phpunit.xml.dist defaults this to
# "postgres" for local Docker Compose dev (container-to-container); this
# overrides it for CI without touching that file.
test-env-json: '{"TESTS_PHPDB_PGSQL_HOSTNAME":"127.0.0.1"}'
enable-codecov: true
enable-infection: true
# Canonical leg for coverage + mutation testing (highest supported PHP).
coverage-php-version: "8.5"
8 changes: 4 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/.phpcs-cache
/.phpstan-cache
/phpstan.neon
/.phpunit.cache
/.phpunit.result.cache
/phpunit.xml
/vendor/
/xdebug_filter.php
/clover.xml
/clover.xml
/infection.json5
/infection.log
/summary.log
12 changes: 0 additions & 12 deletions .laminas-ci.json

This file was deleted.

Loading
Loading