From 6753405944e79962a807575177f133bcc78c3872 Mon Sep 17 00:00:00 2001 From: Andrew Longosz Date: Fri, 11 Sep 2026 16:44:52 +0200 Subject: [PATCH 1/4] IBX-11778: Updated GitHub Actions workflows to org standard (#119) For more details see https://ibexa.atlassian.net/browse/IBX-11778 and https://github.com/ibexa/solr/pull/119 Key changes: * Renamed the CI workflow to `Backend CI` and added a `workflow_dispatch` trigger for manual runs * Standardized runners to `ubuntu-26.04` and updated `actions/checkout` to v7 across workflows * Passed the PHP version explicitly to the shared `composer-install` action instead of relying on matrix fallback * Fixed `check-cs` step in `backend-ci.yaml` so pipeline failures are no longer masked, using `set -euo pipefail` * Fixed Solr integration tests on `ubuntu-26.04` by pinning per-version JDKs via `actions/setup-java` (Java 11 for Solr 7.7.3, Java 17 for 8.11.2/9.8.1) instead of the default Java 25, and removed the redundant standalone `setup-php` step * Removed the deprecated `pr-assign.yaml` workflow and dropped non-existent `main`/`master` branches from push triggers --------- Co-Authored-By: Claude Opus 5 --- .github/workflows/backend-ci.yaml | 19 ++++++++++------- .github/workflows/integration-tests.yaml | 26 ++++++++++++++++-------- .github/workflows/pr-assign.yaml | 10 --------- 3 files changed, 29 insertions(+), 26 deletions(-) delete mode 100644 .github/workflows/pr-assign.yaml diff --git a/.github/workflows/backend-ci.yaml b/.github/workflows/backend-ci.yaml index 5e9054ee..b55f913f 100644 --- a/.github/workflows/backend-ci.yaml +++ b/.github/workflows/backend-ci.yaml @@ -1,36 +1,40 @@ -name: CI +name: Backend CI on: push: branches: - - main - '[0-9]+.[0-9]+' pull_request: ~ + workflow_dispatch: ~ jobs: cs-fix: name: Run code style check - runs-on: "ubuntu-24.04" + runs-on: "ubuntu-26.04" strategy: matrix: php: - '8.1' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: ibexa/gh-workflows/actions/composer-install@main with: + php-version: ${{ matrix.php }} gh-client-id: ${{ secrets.AUTOMATION_CLIENT_ID }} gh-client-secret: ${{ secrets.AUTOMATION_CLIENT_SECRET }} satis-network-key: ${{ secrets.SATIS_NETWORK_KEY }} satis-network-token: ${{ secrets.SATIS_NETWORK_TOKEN }} - name: Run code style check - run: composer run-script check-cs -- --format=checkstyle | cs2pr + shell: bash + run: | + set -euo pipefail + composer run-script check-cs -- --format=checkstyle | cs2pr tests: name: Unit tests - runs-on: "ubuntu-24.04" + runs-on: "ubuntu-26.04" timeout-minutes: 15 strategy: @@ -42,10 +46,11 @@ jobs: - '8.4' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: ibexa/gh-workflows/actions/composer-install@main with: + php-version: ${{ matrix.php }} gh-client-id: ${{ secrets.AUTOMATION_CLIENT_ID }} gh-client-secret: ${{ secrets.AUTOMATION_CLIENT_SECRET }} satis-network-key: ${{ secrets.SATIS_NETWORK_KEY }} diff --git a/.github/workflows/integration-tests.yaml b/.github/workflows/integration-tests.yaml index 584dd515..18d82c98 100644 --- a/.github/workflows/integration-tests.yaml +++ b/.github/workflows/integration-tests.yaml @@ -3,14 +3,13 @@ name: Solr integration tests on: push: branches: - - main - '[0-9]+.[0-9]+' pull_request: ~ jobs: solr-integration: name: "Integration tests" - runs-on: "ubuntu-22.04" + runs-on: "ubuntu-26.04" strategy: fail-fast: false matrix: @@ -23,6 +22,14 @@ jobs: - 'shared' - 'single' - 'cloud' + include: + # Solr 7.x uses the CMS garbage collector, removed in Java 14 + - solr-version: '7.7.3' + java-version: '11' + - solr-version: '8.11.2' + java-version: '17' + - solr-version: '9.8.1' + java-version: '17' env: CORES_SETUP: ${{ matrix.cores-setup }} SOLR_VERSION: ${{ matrix.solr-version }} @@ -35,22 +42,23 @@ jobs: name: "Set up single core" run: echo "SOLR_CORES=collection1" >> $GITHUB_ENV - - uses: actions/checkout@v3 - - - name: Setup PHP Action - uses: shivammathur/setup-php@v2 - with: - php-version: 7.4 - coverage: none + - uses: actions/checkout@v7 - name: Install Composer dependencies uses: ibexa/gh-workflows/actions/composer-install@main with: + php-version: '7.4' gh-client-id: ${{ secrets.AUTOMATION_CLIENT_ID }} gh-client-secret: ${{ secrets.AUTOMATION_CLIENT_SECRET }} satis-network-key: ${{ secrets.SATIS_NETWORK_KEY }} satis-network-token: ${{ secrets.SATIS_NETWORK_TOKEN }} + - name: Set up Java + uses: actions/setup-java@v6 + with: + distribution: 'temurin' + java-version: ${{ matrix.java-version }} + - name: Init Solr run: ./.github/init_solr.sh diff --git a/.github/workflows/pr-assign.yaml b/.github/workflows/pr-assign.yaml deleted file mode 100644 index 302423e3..00000000 --- a/.github/workflows/pr-assign.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: Assign Pull Request to maintainers - -on: - pull_request_target: - -jobs: - assign: - uses: ibexa/gh-workflows/.github/workflows/pr-assign.yml@main - secrets: - robot-token: ${{ secrets.EZROBOT_PAT }} From 485e39c1950d4edf450262a381dc8880dd997158 Mon Sep 17 00:00:00 2001 From: Andrew Longosz Date: Sat, 12 Sep 2026 00:01:35 +0200 Subject: [PATCH 2/4] IBX-11778: [GHA] Dropped unsupported Solr 7.7 from integration tests Ibexa DXP 5.0 supports Solr 8.11.1+ and 9.8.1+ only. Solr 7.7 is 4.6, so the 7.7.3 matrix leg here has been testing an unsupported version. #119 added a per-Solr-version JDK mapping on 4.6, because Solr 7.7 needs Java 11 - its bin/solr passes the CMS garbage collector flags that JDK 14 removed. It came across in the merge without a conflict. With 7.7.3 gone the mapping has a single value left, so it collapses back to a flat Temurin 17, which is what the runner needs anyway: ubuntu-26.04 ships Java 25 and Solr 9.8.1 will not start under it. Co-Authored-By: Claude Opus 5 --- .github/workflows/integration-tests.yaml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/integration-tests.yaml b/.github/workflows/integration-tests.yaml index 18079f2f..551f8c0a 100644 --- a/.github/workflows/integration-tests.yaml +++ b/.github/workflows/integration-tests.yaml @@ -16,7 +16,6 @@ jobs: php-version: - '8.3' solr-version: - - '7.7.3' - '8.11.2' - '9.8.1' cores-setup: @@ -24,14 +23,6 @@ jobs: - 'shared' - 'single' - 'cloud' - include: - # Solr 7.x uses the CMS garbage collector, removed in Java 14 - - solr-version: '7.7.3' - java-version: '11' - - solr-version: '8.11.2' - java-version: '17' - - solr-version: '9.8.1' - java-version: '17' env: CORES_SETUP: ${{ matrix.cores-setup }} SOLR_VERSION: ${{ matrix.solr-version }} @@ -59,7 +50,7 @@ jobs: uses: actions/setup-java@v6 with: distribution: 'temurin' - java-version: ${{ matrix.java-version }} + java-version: '17' - name: Init Solr run: ./.github/init_solr.sh From ac59b4e498197205b9c0bbdead8fe1774247d60b Mon Sep 17 00:00:00 2001 From: Andrew Longosz Date: Fri, 11 Sep 2026 23:03:22 +0200 Subject: [PATCH 3/4] IBX-11778: [GHA][Rector PHP] Reused shared Rector workflow Replaced the inline rector job in backend-ci.yaml with a dedicated rector.yaml calling ibexa/gh-workflows' reusable Rector workflow, matching the org standard and ibexa/core. The 4.6 GHA standardization could not cover this: Rector exists only on 5.0+ branches, so a merge-up leaves the old form in place and git reports no conflict for it. This also retires the repository's last Node.js 20 action: the inline job used ramsey/composer-install@v3, whose pinned actions/cache 4.2.4 runs on Node 20, which is removed from the runners on 2026-09-16. Its shivammathur/setup-php step goes away with it, since the reusable workflow installs PHP itself. Co-Authored-By: Claude Opus 5 --- .github/workflows/backend-ci.yaml | 25 ------------------------- .github/workflows/rector.yaml | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/rector.yaml diff --git a/.github/workflows/backend-ci.yaml b/.github/workflows/backend-ci.yaml index dc484bd3..689c6c64 100644 --- a/.github/workflows/backend-ci.yaml +++ b/.github/workflows/backend-ci.yaml @@ -32,31 +32,6 @@ jobs: set -euo pipefail composer run-script check-cs -- --format=checkstyle | cs2pr - rector: - name: Run rector - runs-on: "ubuntu-22.04" - strategy: - matrix: - php: - - '8.3' - steps: - - uses: actions/checkout@v6 - - - name: Setup PHP Action - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - coverage: none - extensions: 'pdo_sqlite, gd' - tools: cs2pr - - - uses: ramsey/composer-install@v3 - with: - dependency-versions: highest - - - name: Run rector - run: vendor/bin/rector process --dry-run --ansi - tests: name: Unit tests runs-on: "ubuntu-26.04" diff --git a/.github/workflows/rector.yaml b/.github/workflows/rector.yaml new file mode 100644 index 00000000..804802ae --- /dev/null +++ b/.github/workflows/rector.yaml @@ -0,0 +1,17 @@ +name: Rector PHP +on: + push: + branches: + - '[0-9]+.[0-9]+' + pull_request: ~ +jobs: + rector: + name: Run rector + uses: ibexa/gh-workflows/.github/workflows/rector.yml@main + with: + php-version: '8.3' + secrets: + AUTOMATION_CLIENT_ID: ${{ secrets.AUTOMATION_CLIENT_ID }} + AUTOMATION_CLIENT_SECRET: ${{ secrets.AUTOMATION_CLIENT_SECRET }} + SATIS_NETWORK_KEY: ${{ secrets.SATIS_NETWORK_KEY }} + SATIS_NETWORK_TOKEN: ${{ secrets.SATIS_NETWORK_TOKEN }} From 5f66c4685ce21206960d71d97054abb8d8b8620d Mon Sep 17 00:00:00 2001 From: Andrew Longosz Date: Sat, 12 Sep 2026 00:19:20 +0200 Subject: [PATCH 4/4] [PHPStan] Dropped resolved issue from the baseline --- phpstan-baseline.neon | 6 ------ 1 file changed, 6 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index dd6dc748..6dd4520e 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -596,12 +596,6 @@ parameters: count: 1 path: tests/lib/Search/ResultExtractor/AggregationResultExtractor/RangeAggregationResultExtractorTest.php - - - message: '#^Parameter \#2 \$entries of class Ibexa\\Contracts\\Core\\Repository\\Values\\Content\\Search\\AggregationResult\\RangeAggregationResult constructor expects iterable\\>, array\{Ibexa\\Contracts\\Core\\Repository\\Values\\Content\\Search\\AggregationResult\\RangeAggregationResultEntry\, Ibexa\\Contracts\\Core\\Repository\\Values\\Content\\Search\\AggregationResult\\RangeAggregationResultEntry\, Ibexa\\Contracts\\Core\\Repository\\Values\\Content\\Search\\AggregationResult\\RangeAggregationResultEntry\\} given\.$#' - identifier: argument.type - count: 1 - path: tests/lib/Search/ResultExtractor/AggregationResultExtractor/RangeAggregationResultExtractorTest.php - - message: '#^Parameter \#1 \$aggregation of method Ibexa\\Solr\\ResultExtractor\\AggregationResultExtractor\\TermAggregationKeyMapper\\ContentTypeAggregationKeyMapper\:\:map\(\) expects Ibexa\\Contracts\\Core\\Repository\\Values\\Content\\Query\\Aggregation\\ContentTypeTermAggregation, Ibexa\\Contracts\\Core\\Repository\\Values\\Content\\Query\\Aggregation&PHPUnit\\Framework\\MockObject\\MockObject given\.$#' identifier: argument.type