Compare commits

..

7 Commits

Author SHA1 Message Date
Marijn 5ea7a636b8 ci: skip dev image build on tags, wait for in-progress CI runs, improve quality error output (#171)
- Skip the dev image build job on tag pushes — it was wasted work since
  quality and tests are already skipped on tags
- Remove the unnecessary `needs: build` from verify-prior-run; it ran
  independently of the dev image anyway
- Make verify-prior-run poll (30s interval, 15 min max) so tagging
  immediately after a push to main waits for the CI run to finish rather
  than failing instantly
- Replace the yes/no outcomes string in "Assert all checks passed" with
  per-step ::error:: annotations so GitHub highlights exactly which
  quality check failed
2026-07-03 12:28:01 +00:00
dependabot[bot] d37136be93 Bump martin-georgiev/postgresql-for-doctrine from 4.6.0 to 4.7.0 (#163)
Bumps [martin-georgiev/postgresql-for-doctrine](https://github.com/martin-georgiev/postgresql-for-doctrine) from 4.6.0 to 4.7.0.
- [Release notes](https://github.com/martin-georgiev/postgresql-for-doctrine/releases)
- [Changelog](https://github.com/martin-georgiev/postgresql-for-doctrine/blob/main/CHANGELOG.md)
- [Commits](https://github.com/martin-georgiev/postgresql-for-doctrine/compare/v4.6.0...v4.7.0)

---
updated-dependencies:
- dependency-name: martin-georgiev/postgresql-for-doctrine
  dependency-version: 4.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 12:14:30 +00:00
dependabot[bot] 212401a97f Bump the dev-dependencies group across 1 directory with 10 updates (#164)
* Bump the dev-dependencies group across 1 directory with 10 updates

Bumps the dev-dependencies group with 10 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) | `3.95.8` | `3.95.11` |
| [phpstan/phpstan](https://github.com/phpstan/phpstan-phar-composer-source) | `2.2.2` | `2.2.4` |
| [phpstan/phpstan-phpunit](https://github.com/phpstan/phpstan-phpunit) | `2.0.16` | `2.0.17` |
| [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) | `13.2.1` | `13.2.2` |
| [rector/rector](https://github.com/rectorphp/rector) | `2.4.6` | `2.5.2` |
| [symfony/browser-kit](https://github.com/symfony/browser-kit) | `8.1.0` | `8.1.1` |
| [symfony/phpunit-bridge](https://github.com/symfony/phpunit-bridge) | `8.1.0` | `8.1.1` |
| [symfony/web-profiler-bundle](https://github.com/symfony/web-profiler-bundle) | `8.1.0` | `8.1.1` |
| [thecodingmachine/phpstan-safe-rule](https://github.com/thecodingmachine/phpstan-safe-rule) | `1.4.3` | `1.4.7` |
| [vincentlanglet/twig-cs-fixer](https://github.com/VincentLanglet/Twig-CS-Fixer) | `4.0.1` | `4.0.2` |



Updates `friendsofphp/php-cs-fixer` from 3.95.8 to 3.95.11
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.95.8...v3.95.11)

Updates `phpstan/phpstan` from 2.2.2 to 2.2.4
- [Commits](https://github.com/phpstan/phpstan-phar-composer-source/commits)

Updates `phpstan/phpstan-phpunit` from 2.0.16 to 2.0.17
- [Release notes](https://github.com/phpstan/phpstan-phpunit/releases)
- [Commits](https://github.com/phpstan/phpstan-phpunit/compare/2.0.16...2.0.17)

Updates `phpunit/phpunit` from 13.2.1 to 13.2.2
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/13.2.2/ChangeLog-13.2.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/13.2.1...13.2.2)

Updates `rector/rector` from 2.4.6 to 2.5.2
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.4.6...2.5.2)

Updates `symfony/browser-kit` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/browser-kit/releases)
- [Changelog](https://github.com/symfony/browser-kit/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/browser-kit/compare/v8.1.0...v8.1.1)

Updates `symfony/phpunit-bridge` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/phpunit-bridge/releases)
- [Changelog](https://github.com/symfony/phpunit-bridge/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/phpunit-bridge/compare/v8.1.0...v8.1.1)

Updates `symfony/web-profiler-bundle` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/web-profiler-bundle/releases)
- [Changelog](https://github.com/symfony/web-profiler-bundle/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/web-profiler-bundle/compare/v8.1.0...v8.1.1)

Updates `thecodingmachine/phpstan-safe-rule` from 1.4.3 to 1.4.7
- [Release notes](https://github.com/thecodingmachine/phpstan-safe-rule/releases)
- [Commits](https://github.com/thecodingmachine/phpstan-safe-rule/compare/v1.4.3...v1.4.7)

Updates `vincentlanglet/twig-cs-fixer` from 4.0.1 to 4.0.2
- [Release notes](https://github.com/VincentLanglet/Twig-CS-Fixer/releases)
- [Commits](https://github.com/VincentLanglet/Twig-CS-Fixer/compare/4.0.1...4.0.2)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-version: 3.95.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpstan/phpstan
  dependency-version: 2.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpstan/phpstan-phpunit
  dependency-version: 2.0.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpunit/phpunit
  dependency-version: 13.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: rector/rector
  dependency-version: 2.5.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: symfony/browser-kit
  dependency-version: 8.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: symfony/phpunit-bridge
  dependency-version: 8.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: symfony/web-profiler-bundle
  dependency-version: 8.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: thecodingmachine/phpstan-safe-rule
  dependency-version: 1.4.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: vincentlanglet/twig-cs-fixer
  dependency-version: 4.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Ignore rector rule

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marijn Doeve <marijn@doeve.me>
2026-07-03 12:08:58 +00:00
Marijn 7c74574d3c fix(ci): prevent script injection in Portainer deployment step (#170)
Move IMAGE_TAG and SENTRY_RELEASE step outputs into env: vars so they
are passed as environment variables rather than interpolated directly
into the shell command string, eliminating a potential script-injection
vector via a crafted tag or Sentry version value.
2026-07-03 11:54:52 +00:00
Marijn b1f84d441f fix: align SENTRY_RELEASE env var with the release created by the Sentry action (#169)
The Sentry action receives the v-stripped version (e.g. 0.1.1) but the
app's SENTRY_RELEASE was set to IMAGE_TAG (e.g. v0.1.1). This caused
Sentry to auto-create a second release from incoming events, labelling it
(non-semver) instead of associating events with the properly created release.

Pass SENTRY_RELEASE as a separate query param through the Portainer webhook
(using the already-computed sentry_version output) and reference that in
compose.prod.yaml instead of IMAGE_TAG.
2026-07-03 11:28:22 +00:00
dependabot[bot] 8c72b1b217 Bump dependabot/fetch-metadata from 2 to 3 (#168)
Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 2 to 3.
- [Release notes](https://github.com/dependabot/fetch-metadata/releases)
- [Commits](https://github.com/dependabot/fetch-metadata/compare/v2...v3)

---
updated-dependencies:
- dependency-name: dependabot/fetch-metadata
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 10:23:14 +00:00
Marijn 806cff8c0f ci: optimise build pipeline — shared dev image build and skip tests on tag push (#167)
* ci: split dev image build into a shared job

Extract the Docker build step into a dedicated `build` job so `quality`
and `tests` no longer each build the image independently. Both jobs now
load from the shared `devbuild` GHA cache scope and declare `needs: build`.

* ci: skip quality+tests on tag push, verify prior CI run instead

When tagging a commit that already passed CI on main, there is no need
to run quality and tests again. Both jobs now skip for tag refs.

A new `verify-prior-run` job runs instead: it queries the GitHub API for
a prior successful CI run on the same SHA (excluding the current run) and
fails fast if none is found, preventing deployment of untested tags.

`build-deploy` now uses `always() && !cancelled() && !failure()` so it
handles the mix of skipped (quality/tests) and successful (verify-prior-run)
needed jobs correctly.

* ci: bump GitHub Actions to Node.js 24 compatible versions

* ci: add Dependabot config for GitHub Actions version updates

* ci: pin all GitHub Actions to commit SHAs

* ci: disable credential persistence on all checkout steps
2026-07-03 12:18:29 +02:00
6 changed files with 142 additions and 47 deletions
+4
View File
@@ -28,3 +28,7 @@ updates:
directory: "/" directory: "/"
schedule: schedule:
interval: "daily" interval: "daily"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
+118 -30
View File
@@ -17,31 +17,58 @@ permissions:
contents: read contents: read
jobs: jobs:
quality: build:
name: Code Quality name: Build Dev Image
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 20 timeout-minutes: 15
if: "!startsWith(github.ref, 'refs/tags/')"
permissions: permissions:
contents: read contents: read
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
persist-credentials: false
- name: Lint Dockerfile - name: Lint Dockerfile
uses: hadolint/hadolint-action@v3.1.0 uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5 # v3.3.0
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4
- name: Build Docker images - name: Build Docker images
uses: docker/bake-action@v5 uses: docker/bake-action@d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b # v7
with: with:
pull: true pull: true
files: |
compose.yaml
compose.override.yaml
set: |
*.cache-from=type=gha,scope=${{github.ref}}-devbuild
*.cache-from=type=gha,scope=refs/heads/main-devbuild
*.cache-to=type=gha,scope=${{github.ref}}-devbuild,mode=${{ github.event_name == 'pull_request' && 'min' || 'max' }}
quality:
name: Code Quality
runs-on: ubuntu-latest
timeout-minutes: 20
needs: build
if: "!startsWith(github.ref, 'refs/tags/')"
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
persist-credentials: false
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4
- name: Load Docker images
uses: docker/bake-action@d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b # v7
with:
load: true load: true
files: | files: |
compose.yaml compose.yaml
compose.override.yaml compose.override.yaml
set: | set: |
*.cache-from=type=gha,scope=${{github.ref}}-quality *.cache-from=type=gha,scope=${{github.ref}}-devbuild
*.cache-from=type=gha,scope=refs/heads/main
*.cache-to=type=gha,scope=${{github.ref}}-quality,mode=${{ github.event_name == 'pull_request' && 'min' || 'max' }}
- name: Start services - name: Start services
run: docker compose up php database --wait --no-build run: docker compose up php database --wait --no-build
- name: Warm up dev cache - name: Warm up dev cache
@@ -71,34 +98,47 @@ jobs:
- name: Assert all checks passed - name: Assert all checks passed
if: always() if: always()
run: | run: |
outcomes="${{ steps.twig_lint.outcome }} ${{ steps.cs.outcome }} ${{ steps.twig_cs.outcome }} ${{ steps.phpstan.outcome }} ${{ steps.rector.outcome }}" failed=0
if echo "$outcomes" | grep -q "failure"; then exit 1; fi check() {
local name="$1" outcome="$2"
if [[ "$outcome" == "failure" ]]; then
echo "::error::$name failed"
failed=1
fi
}
check "Twig Lint" "${{ steps.twig_lint.outcome }}"
check "Coding Style" "${{ steps.cs.outcome }}"
check "Twig Coding Style" "${{ steps.twig_cs.outcome }}"
check "PHPStan" "${{ steps.phpstan.outcome }}"
check "Rector" "${{ steps.rector.outcome }}"
exit $failed
tests: tests:
name: Tests name: Tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 20 timeout-minutes: 20
needs: build
if: "!startsWith(github.ref, 'refs/tags/')"
permissions: permissions:
checks: write checks: write
pull-requests: write pull-requests: write
contents: read contents: read
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
- name: Set up Docker Buildx with:
uses: docker/setup-buildx-action@v3 persist-credentials: false
- name: Build Docker images - name: Set up Docker Buildx
uses: docker/bake-action@v5 uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4
- name: Load Docker images
uses: docker/bake-action@d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b # v7
with: with:
pull: true
load: true load: true
files: | files: |
compose.yaml compose.yaml
compose.override.yaml compose.override.yaml
set: | set: |
*.cache-from=type=gha,scope=${{github.ref}}-tests *.cache-from=type=gha,scope=${{github.ref}}-devbuild
*.cache-from=type=gha,scope=refs/heads/main
*.cache-to=type=gha,scope=${{github.ref}}-tests,mode=${{ github.event_name == 'pull_request' && 'min' || 'max' }}
- name: Start services - name: Start services
run: docker compose up php database --wait --no-build run: docker compose up php database --wait --no-build
- name: Create test database - name: Create test database
@@ -111,13 +151,55 @@ jobs:
run: docker compose exec -T php vendor/bin/phpunit --log-junit var/phpunit/junit.xml run: docker compose exec -T php vendor/bin/phpunit --log-junit var/phpunit/junit.xml
- name: Publish PHPUnit test results - name: Publish PHPUnit test results
if: always() if: always()
uses: mikepenz/action-junit-report@v5 uses: mikepenz/action-junit-report@d9f48fc87bc235f7e214acf696ca5abc0a986f16 # v6
with: with:
report_paths: var/phpunit/junit.xml report_paths: var/phpunit/junit.xml
check_name: PHPUnit check_name: PHPUnit
- name: Doctrine Schema Validator - name: Doctrine Schema Validator
run: docker compose exec -T php bin/console -e test doctrine:schema:validate run: docker compose exec -T php bin/console -e test doctrine:schema:validate
verify-prior-run:
name: Verify Prior CI Run
runs-on: ubuntu-latest
timeout-minutes: 20
if: startsWith(github.ref, 'refs/tags/')
permissions:
actions: read
steps:
- name: Wait for and verify successful CI run on this commit
env:
GH_TOKEN: ${{ github.token }}
run: |
max_attempts=30
attempt=0
while [[ $attempt -lt $max_attempts ]]; do
attempt=$((attempt + 1))
success_count=$(gh api \
"repos/${{ github.repository }}/actions/workflows/ci.yml/runs?head_sha=${{ github.sha }}&status=success&per_page=5" \
--jq "[.workflow_runs[] | select(.id != ${{ github.run_id }})] | length")
if [[ "$success_count" -gt 0 ]]; then
echo "Found $success_count prior successful CI run(s) for ${{ github.sha }}."
exit 0
fi
in_progress_count=$(gh api \
"repos/${{ github.repository }}/actions/workflows/ci.yml/runs?head_sha=${{ github.sha }}&per_page=10" \
--jq "[.workflow_runs[] | select(.id != ${{ github.run_id }}) | select(.status == \"in_progress\" or .status == \"queued\" or .status == \"waiting\" or .status == \"requested\" or .status == \"pending\")] | length")
if [[ "$in_progress_count" -gt 0 ]]; then
echo "CI still in progress (attempt $attempt/$max_attempts), waiting 30s..."
sleep 30
else
echo "::error::No prior successful CI run found for ${{ github.sha }}. Only tag commits that have passed CI on main."
exit 1
fi
done
echo "::error::Timed out waiting for CI run to complete for ${{ github.sha }}."
exit 1
build-deploy: build-deploy:
name: Build and Deploy name: Build and Deploy
permissions: permissions:
@@ -126,17 +208,21 @@ jobs:
environment: environment:
name: ${{ startsWith(github.ref, 'refs/tags/') && 'production' || 'acceptance' }} name: ${{ startsWith(github.ref, 'refs/tags/') && 'production' || 'acceptance' }}
url: ${{ vars.URL }} url: ${{ vars.URL }}
needs: [quality, tests] needs: [quality, tests, verify-prior-run]
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 15 timeout-minutes: 15
if: (github.ref == 'refs/heads/main' && false) || startsWith(github.ref, 'refs/tags/') if: >-
always() && !cancelled() && !failure() &&
((github.ref == 'refs/heads/main' && false) || startsWith(github.ref, 'refs/tags/'))
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
persist-credentials: false
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4
- name: Log in to GitHub Container Registry - name: Log in to GitHub Container Registry
uses: docker/login-action@v3 uses: docker/login-action@c99871dec2022cc055c062a10cc1a1310835ceb4 # v4
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.actor }} username: ${{ github.actor }}
@@ -164,7 +250,7 @@ jobs:
fi fi
- name: Build and Push Docker images - name: Build and Push Docker images
uses: docker/bake-action@v5 uses: docker/bake-action@d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b # v7
with: with:
pull: true pull: true
push: true push: true
@@ -178,7 +264,7 @@ jobs:
*.tags=${{ steps.meta.outputs.full_name }} *.tags=${{ steps.meta.outputs.full_name }}
- name: Create Sentry release - name: Create Sentry release
uses: getsentry/action-release@v3 uses: getsentry/action-release@ff07929a6537bac57790c3451cf4d364aca38528 # v3
env: env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
@@ -191,5 +277,7 @@ jobs:
shell: bash shell: bash
env: env:
PORTAINER_WEBHOOK: ${{secrets.PORTAINER_WEBHOOK}} PORTAINER_WEBHOOK: ${{secrets.PORTAINER_WEBHOOK}}
IMAGE_TAG: ${{steps.meta.outputs.tag}}
SENTRY_RELEASE: ${{steps.meta.outputs.sentry_version}}
run: | run: |
curl -v -X POST "${PORTAINER_WEBHOOK}?IMAGE_TAG=${{steps.meta.outputs.tag}}" --fail-with-body curl -v -X POST "${PORTAINER_WEBHOOK}?IMAGE_TAG=${IMAGE_TAG}&SENTRY_RELEASE=${SENTRY_RELEASE}" --fail-with-body
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
steps: steps:
- name: Dependabot metadata - name: Dependabot metadata
id: metadata id: metadata
uses: dependabot/fetch-metadata@v2 uses: dependabot/fetch-metadata@v3
with: with:
github-token: "${{ secrets.GITHUB_TOKEN }}" github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs - name: Enable auto-merge for Dependabot PRs
+1 -1
View File
@@ -10,7 +10,7 @@ services:
MAILER_DSN: ${MAILER_DSN} MAILER_DSN: ${MAILER_DSN}
MAILER_SENDER: ${MAILER_SENDER} MAILER_SENDER: ${MAILER_SENDER}
SENTRY_DSN: ${SENTRY_DSN} SENTRY_DSN: ${SENTRY_DSN}
SENTRY_RELEASE: ${IMAGE_TAG} SENTRY_RELEASE: ${SENTRY_RELEASE}
SENTRY_ENVIRONMENT: ${SENTRY_ENVIRONMENT} SENTRY_ENVIRONMENT: ${SENTRY_ENVIRONMENT}
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
Generated
+14 -14
View File
@@ -1839,16 +1839,16 @@
}, },
{ {
"name": "martin-georgiev/postgresql-for-doctrine", "name": "martin-georgiev/postgresql-for-doctrine",
"version": "v4.6.0", "version": "v4.7.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/martin-georgiev/postgresql-for-doctrine.git", "url": "https://github.com/martin-georgiev/postgresql-for-doctrine.git",
"reference": "59841c7e53f8339b13bc0cb0ee9931b7b9bbb139" "reference": "23b5c2694083355ab87eaa913b43a0cddd8c64bb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/martin-georgiev/postgresql-for-doctrine/zipball/59841c7e53f8339b13bc0cb0ee9931b7b9bbb139", "url": "https://api.github.com/repos/martin-georgiev/postgresql-for-doctrine/zipball/23b5c2694083355ab87eaa913b43a0cddd8c64bb",
"reference": "59841c7e53f8339b13bc0cb0ee9931b7b9bbb139", "reference": "23b5c2694083355ab87eaa913b43a0cddd8c64bb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1863,13 +1863,13 @@
"deptrac/deptrac": "^4.0", "deptrac/deptrac": "^4.0",
"doctrine/orm": "~2.14||~3.0", "doctrine/orm": "~2.14||~3.0",
"ekino/phpstan-banned-code": "^3.2.0", "ekino/phpstan-banned-code": "^3.2.0",
"friendsofphp/php-cs-fixer": "^3.95.2", "friendsofphp/php-cs-fixer": "^3.95.11",
"phpstan/phpstan": "^2.1.55", "phpstan/phpstan": "^2.2.2",
"phpstan/phpstan-deprecation-rules": "^2.0.4", "phpstan/phpstan-deprecation-rules": "^2.0.4",
"phpstan/phpstan-doctrine": "^2.0.22", "phpstan/phpstan-doctrine": "^2.0.27",
"phpstan/phpstan-phpunit": "^2.0.16", "phpstan/phpstan-phpunit": "^2.0.16",
"phpunit/phpunit": "^10.5.63||^11.5", "phpunit/phpunit": "^10.5.63||^11.5",
"rector/rector": "^2.4.4", "rector/rector": "^2.5.2",
"symfony/cache": "^6.4||^7.0", "symfony/cache": "^6.4||^7.0",
"symfony/var-exporter": "^6.4||^7.0" "symfony/var-exporter": "^6.4||^7.0"
}, },
@@ -1952,7 +1952,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/martin-georgiev/postgresql-for-doctrine/issues", "issues": "https://github.com/martin-georgiev/postgresql-for-doctrine/issues",
"source": "https://github.com/martin-georgiev/postgresql-for-doctrine/tree/v4.6.0" "source": "https://github.com/martin-georgiev/postgresql-for-doctrine/tree/v4.7.0"
}, },
"funding": [ "funding": [
{ {
@@ -1964,7 +1964,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-05-29T19:11:20+00:00" "time": "2026-07-01T18:17:39+00:00"
}, },
{ {
"name": "phpdocumentor/reflection-common", "name": "phpdocumentor/reflection-common",
@@ -9676,11 +9676,11 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "2.2.3", "version": "2.2.4",
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/4048833dd47b377287818841877fb3087289509c", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f0fe3fb03bb53ce68cc2416785b260e62226ec27",
"reference": "4048833dd47b377287818841877fb3087289509c", "reference": "f0fe3fb03bb53ce68cc2416785b260e62226ec27",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -9736,7 +9736,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-06-30T21:15:26+00:00" "time": "2026-07-03T07:00:23+00:00"
}, },
{ {
"name": "phpstan/phpstan-doctrine", "name": "phpstan/phpstan-doctrine",
+4 -1
View File
@@ -3,6 +3,7 @@
declare(strict_types=1); declare(strict_types=1);
use Rector\Config\RectorConfig; use Rector\Config\RectorConfig;
use Rector\PHPUnit\CodeQuality\Rector\Class_\AddSeeTestAnnotationRector;
use Rector\Symfony\Bridge\Symfony\Routing\SymfonyRoutesProvider; use Rector\Symfony\Bridge\Symfony\Routing\SymfonyRoutesProvider;
use Rector\Symfony\Contract\Bridge\Symfony\Routing\SymfonyRoutesProviderInterface; use Rector\Symfony\Contract\Bridge\Symfony\Routing\SymfonyRoutesProviderInterface;
@@ -13,7 +14,7 @@ return RectorConfig::configure()
__DIR__.'/src', __DIR__.'/src',
__DIR__.'/tests', __DIR__.'/tests',
]) ])
->withSkip([__DIR__.'/config/reference.php']) ->withSkipPath(__DIR__.'/config/reference.php')
->withSymfonyContainerXml(__DIR__.'/var/cache/dev/Tvdt_KernelDevDebugContainer.xml') ->withSymfonyContainerXml(__DIR__.'/var/cache/dev/Tvdt_KernelDevDebugContainer.xml')
->withSymfonyContainerPhp(__DIR__.'/tests/symfony-container.php') ->withSymfonyContainerPhp(__DIR__.'/tests/symfony-container.php')
->registerService(SymfonyRoutesProvider::class, SymfonyRoutesProviderInterface::class) ->registerService(SymfonyRoutesProvider::class, SymfonyRoutesProviderInterface::class)
@@ -34,4 +35,6 @@ return RectorConfig::configure()
) )
->withAttributesSets(all: true) ->withAttributesSets(all: true)
->withComposerBased(twig: true, doctrine: true, phpunit: true, symfony: true) ->withComposerBased(twig: true, doctrine: true, phpunit: true, symfony: true)
->withSkip([AddSeeTestAnnotationRector::class])
; ;