From 53870f92275f87f3a219d27093970fa7a08e3b70 Mon Sep 17 00:00:00 2001 From: Andrew Longosz Date: Sun, 6 Sep 2026 14:44:51 +0200 Subject: [PATCH 1/2] [GHA] Updated GitHub Actions workflows to latest versions and standards - Renamed the CI workflow to Backend CI and added a bare workflow_dispatch trigger (IBX-12062 PoC follow-up, without the Slack notification parts) - Updated actions/checkout and actions/setup-node to v7 - Standardized runners to ubuntu-26.04 - Dropped non-existent main branch from push triggers - Removed the deprecated pr-assign.yaml workflow - Guarded the code style check against masked pipe failures: without pipefail the check-cs exit code is swallowed by the pipe into cs2pr (canonical fix from IBX-11853, bundle-generator#45) - Passed the PHP version to the composer-install action explicitly; the implicit matrix.php fallback is kept only for backwards compatibility (IBX-11907, gh-workflows#115) Co-Authored-By: Claude Fable 5.1 --- .github/workflows/backend-ci.yaml | 34 +++++++++++++++++----------- .github/workflows/browser-tests.yaml | 1 - .github/workflows/frontend-ci.yaml | 7 +++--- .github/workflows/pr-assign.yaml | 10 -------- 4 files changed, 24 insertions(+), 28 deletions(-) delete mode 100644 .github/workflows/pr-assign.yaml diff --git a/.github/workflows/backend-ci.yaml b/.github/workflows/backend-ci.yaml index 00aede37..b8912ac7 100644 --- a/.github/workflows/backend-ci.yaml +++ b/.github/workflows/backend-ci.yaml @@ -1,38 +1,42 @@ -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.3' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: ibexa/gh-workflows/actions/setup-composer-root-version@main - 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: Tests - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 timeout-minutes: 10 strategy: @@ -44,12 +48,13 @@ jobs: - '8.4' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: ibexa/gh-workflows/actions/setup-composer-root-version@main - 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 }} @@ -84,7 +89,7 @@ jobs: --health-timeout 5s --health-retries 5 --tmpfs /var/lib/postgresql/data - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 timeout-minutes: 10 strategy: @@ -99,12 +104,13 @@ jobs: - '18' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: ibexa/gh-workflows/actions/setup-composer-root-version@main - 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 }} @@ -139,7 +145,7 @@ jobs: --health-timeout=5s --health-retries=5 --tmpfs=/var/lib/mysql - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 timeout-minutes: 10 strategy: @@ -151,12 +157,13 @@ jobs: - '8.4' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: ibexa/gh-workflows/actions/setup-composer-root-version@main - 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 }} @@ -173,7 +180,7 @@ jobs: solr-integration: name: "Solr integration tests" - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 timeout-minutes: 10 permissions: packages: read @@ -189,12 +196,13 @@ jobs: --health-timeout 5s --health-retries 10 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: ibexa/gh-workflows/actions/setup-composer-root-version@main - uses: ibexa/gh-workflows/actions/composer-install@main with: + php-version: '8.3' 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/browser-tests.yaml b/.github/workflows/browser-tests.yaml index bb4c3fe4..7b70e184 100644 --- a/.github/workflows/browser-tests.yaml +++ b/.github/workflows/browser-tests.yaml @@ -4,7 +4,6 @@ name: Browser tests on: push: branches: - - main - '[0-9]+.[0-9]+' pull_request: ~ diff --git a/.github/workflows/frontend-ci.yaml b/.github/workflows/frontend-ci.yaml index 9306cbbe..be3a66f2 100644 --- a/.github/workflows/frontend-ci.yaml +++ b/.github/workflows/frontend-ci.yaml @@ -3,19 +3,18 @@ name: Frontend build on: push: branches: - - main - '[0-9]+.[0-9]+' pull_request: ~ jobs: frontend-test: name: Frontend build test - runs-on: 'ubuntu-24.04' + runs-on: 'ubuntu-26.04' timeout-minutes: 5 steps: - - uses: actions/checkout@v5 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v7 + - uses: actions/setup-node@v7 with: node-version: '18' - run: yarn install 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 be034646411afe22be6960097d4192ce38f03679 Mon Sep 17 00:00:00 2001 From: Andrew Longosz Date: Wed, 16 Sep 2026 12:30:27 +0200 Subject: [PATCH 2/2] Fixed programlisting XSLT truncation with libxml2 2.14+ libxml2 2.14 stopped merging consecutive CDATA sections into one node, so `` in the programlisting templates only emitted the first CDATA section. A `
` containing the CDATA end
sequence `]]>` (stored as two adjacent sections by the ProgramListing
converter) was truncated at `]]`. Iterate over all text nodes instead.

Surfaced by moving CI to ubuntu-26.04 (libxml2 2.15.2, libxslt 1.1.45).

Co-Authored-By: Claude Fable 5.1 
---
 .../richtext/stylesheets/docbook/xhtml5/edit/core.xsl        | 5 ++++-
 .../richtext/stylesheets/docbook/xhtml5/output/core.xsl      | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/bundle/Resources/richtext/stylesheets/docbook/xhtml5/edit/core.xsl b/src/bundle/Resources/richtext/stylesheets/docbook/xhtml5/edit/core.xsl
index db6dc7c9..df71dd21 100644
--- a/src/bundle/Resources/richtext/stylesheets/docbook/xhtml5/edit/core.xsl
+++ b/src/bundle/Resources/richtext/stylesheets/docbook/xhtml5/edit/core.xsl
@@ -82,7 +82,10 @@
         
       
       
-      
+      
+      
+        
+      
     
   
 
diff --git a/src/bundle/Resources/richtext/stylesheets/docbook/xhtml5/output/core.xsl b/src/bundle/Resources/richtext/stylesheets/docbook/xhtml5/output/core.xsl
index 1d6ef99f..ab5e8b71 100644
--- a/src/bundle/Resources/richtext/stylesheets/docbook/xhtml5/output/core.xsl
+++ b/src/bundle/Resources/richtext/stylesheets/docbook/xhtml5/output/core.xsl
@@ -48,7 +48,10 @@
         
       
       
-      
+      
+      
+        
+