diff --git a/.github/actions-lock.txt b/.github/actions-lock.txt
index 4b8fd65ef..9fd26d8ee 100644
--- a/.github/actions-lock.txt
+++ b/.github/actions-lock.txt
@@ -1,24 +1,26 @@
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
-25fc4c7e69e778e20bdc9eb0cc96367e block-merge-freeze.yml
-7f15fef2fde87aae0eb8386ded489372 command-compile.yml
-48ba45e4c969523e6d7ae51cd6c4c6ba documentation.yml
-985f3ac7d51405c1601c742832a14120 lint-eslint.yml
-4b40dd0073e16f74dd04e6d49dcc043d lint-php-cs.yml
-cfb31e47b6e9ab65e76c89b028754a4e lint-php.yml
-97773e8d73758d9f1af50f7c8b82aef3 lint-typescript.yml
-3b1f38e378f8e764b0b3c560a8cfe1cd node-test.yml
+acad44f3e99b665897766ce90374dd03 block-merge-freeze.yml
+87f8d9641dd087995de99f3da38ab23d command-compile.yml
+13b2586e88c423ccd794f447c9d703fb documentation.yml
+89736ea5a0440c90b73f5c722a456073 lint-eslint.yml
+79006ab196f5664fc444e63645cfd8a7 lint-php-cs.yml
+300be6a756abda800e40850918f2d964 lint-php.yml
+5e85909ddd884c9be5b3a3b46a5756db lint-typescript.yml
+7cf9381a66a8853f634cf52a7da4bb3b node-test.yml
03759c9dc0fa748cb927b9f9cadf2925 node.yml
-8fab08ac7da700ee304af0bf3c18b3a3 phpunit-mysql.yml
-bbe9834ddb89207caf5e19d79ebb3672 phpunit-oci.yml
-256bf1dead4ef8479e9ce7433f871548 phpunit-pgsql.yml
-4ca2c2c4b1a73182667bab908e57c185 phpunit-sqlite.yml
-d1821b8a816578070ed8fd018f321f6d pr-feedback.yml
-6dc046dfbca5dc65d938265c518fcac4 psalm.yml
-f1cca476c953f28e3eec6c11b5866634 rector-apply.yml
+3cacf28a710b387e83d3858af40b7ffe phpunit-mysql.yml
+f89c18551d6a29af9bca63a0fd30a039 phpunit-oci.yml
+12a43f55ac6aedc321b62e00f9d864f0 phpunit-pgsql.yml
+ba5a538fea1a9e53dfcbeb53b83ea6fa phpunit-sqlite.yml
+2639f2b96989a4fcbb441ca8f1fecb2f pr-feedback.yml
+4f1080b33778a956a08efc7a41a11994 psalm.yml
+c2fc57f15bc64e5066b79a398021ca1a rector-apply.yml
2dbec18233063b42f4d8e03bbb43671c reuse.yml
-94c65e30a77686c079c6dfa54a008440 sync-workflow-templates.yml
-a3440826636c0fd7c2d20b1de50363da update-nextcloud-ocp-approve-merge.yml
-f5632e6d28c6afca9d4d46131fb48d57 update-nextcloud-ocp.yml
-28dcf55e283b85c292fea0d0b2a15a8a npm-build.yml
+511439ba27869e0324f283142cc8b3df sync-workflow-templates.yml
+abcb8206c3f6c5a9dc86cccf57846bfc update-nextcloud-ocp-approve-merge.yml
+8ce35c51ee3d9cc735faab60c5d6f350 update-nextcloud-ocp.yml
+deb0d5cd79d29e8b73f689be32b4108d npm-build.yml
bea8a43904976fa01f1e091046541b37 release-relay.yml
+2581a67c5bcdcd570427e6d51db767d7 fixup.yml
+d47b15109ec7ef7e52fda996796449ed playwright.yml
diff --git a/.github/workflows/block-merge-freeze.yml b/.github/workflows/block-merge-freeze.yml
index 3a9d5cc37..e6652565b 100644
--- a/.github/workflows/block-merge-freeze.yml
+++ b/.github/workflows/block-merge-freeze.yml
@@ -54,4 +54,4 @@ jobs:
- name: Run check
if: ${{ env.server_ref != '' }}
- run: cat version.php | grep 'OC_VersionString' | grep -i -v 'RC'
+ run: cat version.php | grep 'OC_VersionString' | grep -i -v -E '(\.0\.0 RC[3-9]|\.[1-9][0-9]* RC)'
diff --git a/.github/workflows/command-compile.yml b/.github/workflows/command-compile.yml
index 3b33c04ad..a6809f7e9 100644
--- a/.github/workflows/command-compile.yml
+++ b/.github/workflows/command-compile.yml
@@ -116,20 +116,17 @@ jobs:
git config --local user.name 'nextcloud-command'
- name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
+ uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: package-engines-versions
- with:
- fallbackNode: '^24'
- fallbackNpm: '^11.3'
- - name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
+ - name: Set up node ${{ steps.package-engines-versions.outputs.node-version }}
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
+ node-version: ${{ steps.package-engines-versions.outputs.node-version }}
cache: npm
- - name: Set up npm ${{ steps.package-engines-versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.package-engines-versions.outputs.npmVersion }}'
+ - name: Set up npm ${{ steps.package-engines-versions.outputs.package-manager-version }}
+ run: npm i -g 'npm@${{ steps.package-engines-versions.outputs.package-manager-version }}'
- name: Rebase to ${{ needs.init.outputs.base_ref }}
if: ${{ contains(needs.init.outputs.arg1, 'rebase') }}
diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml
index d3ca37b55..16d2f8909 100644
--- a/.github/workflows/documentation.yml
+++ b/.github/workflows/documentation.yml
@@ -35,20 +35,17 @@ jobs:
persist-credentials: false
- name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
+ uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
- with:
- fallbackNode: '^24'
- fallbackNpm: '^11.3'
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
+ - name: Set up node ${{ steps.versions.outputs.node-version }}
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
+ node-version: ${{ steps.versions.outputs.node-version }}
package-manager-cache: false
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
+ - name: Set up npm ${{ steps.versions.outputs.package-manager-version }}
+ run: npm i -g 'npm@${{ steps.versions.outputs.package-manager-version }}'
- name: Install dependencies & build
env:
diff --git a/.github/workflows/lint-eslint.yml b/.github/workflows/lint-eslint.yml
index f84f27688..43ef34c38 100644
--- a/.github/workflows/lint-eslint.yml
+++ b/.github/workflows/lint-eslint.yml
@@ -28,7 +28,7 @@ jobs:
src: ${{ steps.changes.outputs.src}}
steps:
- - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
+ - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
@@ -61,19 +61,16 @@ jobs:
persist-credentials: false
- name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
+ uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
- with:
- fallbackNode: '^24'
- fallbackNpm: '^11.3'
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
+ - name: Set up node ${{ steps.versions.outputs.node-version }}
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
+ node-version: ${{ steps.versions.outputs.node-version }}
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
+ - name: Set up npm ${{ steps.versions.outputs.package-manager-version }}
+ run: npm i -g 'npm@${{ steps.versions.outputs.package-manager-version }}'
- name: Install dependencies
env:
diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml
index dba095622..06d0842fd 100644
--- a/.github/workflows/lint-php-cs.yml
+++ b/.github/workflows/lint-php-cs.yml
@@ -31,7 +31,7 @@ jobs:
- name: Get php version
id: versions
- uses: icewind1991/nextcloud-version-matrix@8a7bac6300b2f0f3100088b297995a229558ddba # v1.3.2
+ uses: nextcloud-libraries/nextcloud-version-matrix@cd0211ffcef1065e2020cd579e4843b8746e7a58 # v1.3.3
- name: Set up php${{ steps.versions.outputs.php-min }}
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml
index e73949e05..e4c6e9ba6 100644
--- a/.github/workflows/lint-php.yml
+++ b/.github/workflows/lint-php.yml
@@ -31,7 +31,7 @@ jobs:
- name: Get version matrix
id: versions
- uses: icewind1991/nextcloud-version-matrix@8a7bac6300b2f0f3100088b297995a229558ddba # v1.3.2
+ uses: nextcloud-libraries/nextcloud-version-matrix@cd0211ffcef1065e2020cd579e4843b8746e7a58 # v1.3.3
php-lint:
runs-on: ubuntu-latest-low
diff --git a/.github/workflows/lint-typescript.yml b/.github/workflows/lint-typescript.yml
index 5c2e472dc..9291f2560 100644
--- a/.github/workflows/lint-typescript.yml
+++ b/.github/workflows/lint-typescript.yml
@@ -34,7 +34,7 @@ jobs:
src: ${{ steps.changes.outputs.src}}
steps:
- - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
+ - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
@@ -60,19 +60,16 @@ jobs:
persist-credentials: false
- name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
+ uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
- with:
- fallbackNode: '^24'
- fallbackNpm: '^11.3'
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
+ - name: Set up node ${{ steps.versions.outputs.node-version }}
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
+ node-version: ${{ steps.versions.outputs.node-version }}
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
+ - name: Set up npm ${{ steps.versions.outputs.package-manager-version }}
+ run: npm i -g 'npm@${{ steps.versions.outputs.package-manager-version }}'
- name: Install dependencies
env:
diff --git a/.github/workflows/node-test.yml b/.github/workflows/node-test.yml
index 8a8619ecb..279e84f0f 100644
--- a/.github/workflows/node-test.yml
+++ b/.github/workflows/node-test.yml
@@ -34,7 +34,7 @@ jobs:
src: ${{ steps.changes.outputs.src}}
steps:
- - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
+ - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
@@ -65,19 +65,16 @@ jobs:
persist-credentials: false
- name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
+ uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
- with:
- fallbackNode: '^24'
- fallbackNpm: '^11.3'
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
+ - name: Set up node ${{ steps.versions.outputs.node-version }}
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
+ node-version: ${{ steps.versions.outputs.node-version }}
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
+ - name: Set up npm ${{ steps.versions.outputs.package-manager-version }}
+ run: npm i -g 'npm@${{ steps.versions.outputs.package-manager-version }}'
- name: Install dependencies & build
env:
@@ -93,7 +90,7 @@ jobs:
run: npm run test:coverage --if-present
- name: Collect coverage
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
+ uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
with:
files: ./coverage/lcov.info
diff --git a/.github/workflows/npm-build.yml b/.github/workflows/npm-build.yml
index d7e181064..f81723bd1 100644
--- a/.github/workflows/npm-build.yml
+++ b/.github/workflows/npm-build.yml
@@ -28,7 +28,7 @@ jobs:
src: ${{ steps.changes.outputs.src}}
steps:
- - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
+ - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
@@ -58,19 +58,16 @@ jobs:
persist-credentials: false
- name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
+ uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
- with:
- fallbackNode: '^24'
- fallbackNpm: '^11.3'
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
+ - name: Set up node ${{ steps.versions.outputs.node-version }}
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
+ node-version: ${{ steps.versions.outputs.node-version }}
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
+ - name: Set up npm ${{ steps.versions.outputs.package-manager-version }}
+ run: npm i -g 'npm@${{ steps.versions.outputs.package-manager-version }}'
- name: Validate package-lock.json # See https://github.com/npm/cli/issues/4460
run: |
@@ -86,17 +83,16 @@ jobs:
npm ci
npm run build --if-present
-# Not used as we compile on CI, see update-node-dist.yml and node-dist-unchanged.yml
-# - name: Check build changes
-# run: |
-# bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)"
-#
-# - name: Show changes on failure
-# if: failure()
-# run: |
-# git status
-# git --no-pager diff
-# exit 1 # make it red to grab attention
+ - name: Check build changes
+ run: |
+ bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)"
+
+ - name: Show changes on failure
+ if: failure()
+ run: |
+ git status
+ git --no-pager diff
+ exit 1 # make it red to grab attention
summary:
permissions:
diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml
index 40f41ae5d..a7d98c9cf 100644
--- a/.github/workflows/phpunit-mysql.yml
+++ b/.github/workflows/phpunit-mysql.yml
@@ -18,33 +18,18 @@ concurrency:
cancel-in-progress: true
jobs:
- matrix:
- runs-on: ubuntu-latest-low
- outputs:
- matrix: ${{ steps.versions.outputs.sparse-matrix }}
- steps:
- - name: Checkout app
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- with:
- persist-credentials: false
-
- - name: Get version matrix
- id: versions
- uses: icewind1991/nextcloud-version-matrix@8a7bac6300b2f0f3100088b297995a229558ddba # v1.3.2
- with:
- matrix: '{"mysql-versions": ["8.4"]}'
-
- changes:
+ changes-and-matrix:
runs-on: ubuntu-latest-low
permissions:
contents: read
pull-requests: read
outputs:
- src: ${{ steps.changes.outputs.src}}
+ src: ${{ steps.changes.outputs.src }}
+ matrix: ${{ steps.versions.outputs.sparse-matrix }}
steps:
- - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
+ - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
@@ -61,15 +46,28 @@ jobs:
- 'composer.json'
- 'composer.lock'
+ - name: Checkout app
+ if: steps.changes.outputs.src != 'false'
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ with:
+ persist-credentials: false
+
+ - name: Get version matrix
+ if: steps.changes.outputs.src != 'false'
+ id: versions
+ uses: nextcloud-libraries/nextcloud-version-matrix@cd0211ffcef1065e2020cd579e4843b8746e7a58 # v1.3.3
+ with:
+ matrix: '{"mysql-versions": ["8.4"]}'
+
phpunit-mysql:
runs-on: ubuntu-latest
- needs: [changes, matrix]
- if: needs.changes.outputs.src != 'false'
+ needs: changes-and-matrix
+ if: needs.changes-and-matrix.outputs.src != 'false'
strategy:
fail-fast: false
- matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
+ matrix: ${{ fromJson(needs.changes-and-matrix.outputs.matrix) }}
name: MySQL ${{ matrix.mysql-versions }} PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
@@ -194,7 +192,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest-low
- needs: [changes, phpunit-mysql]
+ needs: [changes-and-matrix, phpunit-mysql]
if: always()
@@ -202,4 +200,4 @@ jobs:
steps:
- name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi
+ run: if ${{ needs.changes-and-matrix.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml
index 3363620c9..f3b17ff8f 100644
--- a/.github/workflows/phpunit-oci.yml
+++ b/.github/workflows/phpunit-oci.yml
@@ -18,22 +18,7 @@ concurrency:
cancel-in-progress: true
jobs:
- matrix:
- runs-on: ubuntu-latest-low
- outputs:
- php-version: ${{ steps.versions.outputs.php-available-list }}
- server-max: ${{ steps.versions.outputs.branches-max-list }}
- steps:
- - name: Checkout app
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- with:
- persist-credentials: false
-
- - name: Get version matrix
- id: versions
- uses: icewind1991/nextcloud-version-matrix@8a7bac6300b2f0f3100088b297995a229558ddba # v1.3.2
-
- changes:
+ changes-and-matrix:
runs-on: ubuntu-latest-low
permissions:
contents: read
@@ -41,9 +26,11 @@ jobs:
outputs:
src: ${{ steps.changes.outputs.src }}
+ php-version: ${{ steps.versions.outputs.php-available-list }}
+ server-max: ${{ steps.versions.outputs.branches-max-list }}
steps:
- - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
+ - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
@@ -60,17 +47,28 @@ jobs:
- 'composer.json'
- 'composer.lock'
+ - name: Checkout app
+ if: steps.changes.outputs.src != 'false'
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ with:
+ persist-credentials: false
+
+ - name: Get version matrix
+ if: steps.changes.outputs.src != 'false'
+ id: versions
+ uses: nextcloud-libraries/nextcloud-version-matrix@cd0211ffcef1065e2020cd579e4843b8746e7a58 # v1.3.3
+
phpunit-oci:
runs-on: ubuntu-latest
- needs: [changes, matrix]
- if: needs.changes.outputs.src != 'false'
+ needs: changes-and-matrix
+ if: needs.changes-and-matrix.outputs.src != 'false'
strategy:
fail-fast: false
matrix:
- php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }}
- server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
+ php-versions: ${{ fromJson(needs.changes-and-matrix.outputs.php-version) }}
+ server-versions: ${{ fromJson(needs.changes-and-matrix.outputs.server-max) }}
oci-versions: ['18', '21', '23']
name: OCI ${{ matrix.oci-versions }} PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
@@ -201,7 +199,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest-low
- needs: [changes, phpunit-oci]
+ needs: [changes-and-matrix, phpunit-oci]
if: always()
@@ -209,4 +207,4 @@ jobs:
steps:
- name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-oci.result != 'success' }}; then exit 1; fi
+ run: if ${{ needs.changes-and-matrix.outputs.src != 'false' && needs.phpunit-oci.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml
index 6f1ba6c92..0d63f7dad 100644
--- a/.github/workflows/phpunit-pgsql.yml
+++ b/.github/workflows/phpunit-pgsql.yml
@@ -18,22 +18,7 @@ concurrency:
cancel-in-progress: true
jobs:
- matrix:
- runs-on: ubuntu-latest-low
- outputs:
- php-version: ${{ steps.versions.outputs.php-available-list }}
- server-max: ${{ steps.versions.outputs.branches-max-list }}
- steps:
- - name: Checkout app
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- with:
- persist-credentials: false
-
- - name: Get version matrix
- id: versions
- uses: icewind1991/nextcloud-version-matrix@8a7bac6300b2f0f3100088b297995a229558ddba # v1.3.2
-
- changes:
+ changes-and-matrix:
runs-on: ubuntu-latest-low
permissions:
contents: read
@@ -41,9 +26,11 @@ jobs:
outputs:
src: ${{ steps.changes.outputs.src }}
+ php-version: ${{ steps.versions.outputs.php-available-list }}
+ server-max: ${{ steps.versions.outputs.branches-max-list }}
steps:
- - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
+ - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
@@ -60,17 +47,28 @@ jobs:
- 'composer.json'
- 'composer.lock'
+ - name: Checkout app
+ if: steps.changes.outputs.src != 'false'
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ with:
+ persist-credentials: false
+
+ - name: Get version matrix
+ if: steps.changes.outputs.src != 'false'
+ id: versions
+ uses: nextcloud-libraries/nextcloud-version-matrix@cd0211ffcef1065e2020cd579e4843b8746e7a58 # v1.3.3
+
phpunit-pgsql:
runs-on: ubuntu-latest
- needs: [changes, matrix]
- if: needs.changes.outputs.src != 'false'
+ needs: changes-and-matrix
+ if: needs.changes-and-matrix.outputs.src != 'false'
strategy:
fail-fast: false
matrix:
- php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }}
- server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
+ php-versions: ${{ fromJson(needs.changes-and-matrix.outputs.php-version) }}
+ server-versions: ${{ fromJson(needs.changes-and-matrix.outputs.server-max) }}
name: PostgreSQL PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
@@ -192,7 +190,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest-low
- needs: [changes, phpunit-pgsql]
+ needs: [changes-and-matrix, phpunit-pgsql]
if: always()
@@ -200,4 +198,4 @@ jobs:
steps:
- name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi
+ run: if ${{ needs.changes-and-matrix.outputs.src != 'false' && needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml
index cb994fc90..d6bcf8e7b 100644
--- a/.github/workflows/phpunit-sqlite.yml
+++ b/.github/workflows/phpunit-sqlite.yml
@@ -18,32 +18,19 @@ concurrency:
cancel-in-progress: true
jobs:
- matrix:
- runs-on: ubuntu-latest-low
- outputs:
- php-version: ${{ steps.versions.outputs.php-available-list }}
- server-max: ${{ steps.versions.outputs.branches-max-list }}
- steps:
- - name: Checkout app
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- with:
- persist-credentials: false
-
- - name: Get version matrix
- id: versions
- uses: icewind1991/nextcloud-version-matrix@8a7bac6300b2f0f3100088b297995a229558ddba # v1.3.2
-
- changes:
+ changes-and-matrix:
runs-on: ubuntu-latest-low
permissions:
contents: read
pull-requests: read
outputs:
- src: ${{ steps.changes.outputs.src}}
+ src: ${{ steps.changes.outputs.src }}
+ php-version: ${{ steps.versions.outputs.php-available-list }}
+ server-max: ${{ steps.versions.outputs.branches-max-list }}
steps:
- - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
+ - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
@@ -60,17 +47,28 @@ jobs:
- 'composer.json'
- 'composer.lock'
+ - name: Checkout app
+ if: steps.changes.outputs.src != 'false'
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ with:
+ persist-credentials: false
+
+ - name: Get version matrix
+ if: steps.changes.outputs.src != 'false'
+ id: versions
+ uses: nextcloud-libraries/nextcloud-version-matrix@cd0211ffcef1065e2020cd579e4843b8746e7a58 # v1.3.3
+
phpunit-sqlite:
runs-on: ubuntu-latest
- needs: [changes, matrix]
- if: needs.changes.outputs.src != 'false'
+ needs: changes-and-matrix
+ if: needs.changes-and-matrix.outputs.src != 'false'
strategy:
fail-fast: false
matrix:
- php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }}
- server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
+ php-versions: ${{ fromJson(needs.changes-and-matrix.outputs.php-version) }}
+ server-versions: ${{ fromJson(needs.changes-and-matrix.outputs.server-max) }}
name: SQLite PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
@@ -181,7 +179,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest-low
- needs: [changes, phpunit-sqlite]
+ needs: [changes-and-matrix, phpunit-sqlite]
if: always()
@@ -189,4 +187,4 @@ jobs:
steps:
- name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi
+ run: if ${{ needs.changes-and-matrix.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml
index 02fbb79ed..6156b86fb 100644
--- a/.github/workflows/playwright.yml
+++ b/.github/workflows/playwright.yml
@@ -1,3 +1,8 @@
+# This workflow is provided via the organization template repository
+#
+# https://github.com/nextcloud/.github
+# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
+#
# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
@@ -24,6 +29,7 @@ name: Playwright Tests
on:
pull_request:
branches:
+ - main
- master
- stable35
- stable34
@@ -31,6 +37,9 @@ on:
permissions:
contents: read
+concurrency:
+ group: playwright-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
jobs:
playwright-setup:
@@ -44,6 +53,16 @@ jobs:
- name: Read package.json
uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
+ - name: Check composer.json
+ id: check_composer
+ uses: andstor/file-existence-action@558493d6c74bf472d87c84eab196434afc2fa029 # v3.1.0
+ with:
+ files: 'composer.json'
+ - name: Install composer dependencies
+ if: steps.check_composer.outputs.files_exists == 'true'
+ uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0
+ with:
+ composer-options: '--no-dev'
- name: Set up node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
@@ -186,4 +205,4 @@ jobs:
steps:
- name: Summary status
- run: if ${{ needs.playwright-tests.result != 'success' }}; then exit 1; fi
\ No newline at end of file
+ run: if ${{ needs.playwright-tests.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/pr-feedback.yml b/.github/workflows/pr-feedback.yml
index 4420bf692..e93d2be9b 100644
--- a/.github/workflows/pr-feedback.yml
+++ b/.github/workflows/pr-feedback.yml
@@ -36,7 +36,7 @@ jobs:
blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -)
echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT"
- - uses: nextcloud/pr-feedback-action@5227c55be184087d0aef6338bee210d8620b6297 # v1.0.1
+ - uses: nextcloud-libraries/pr-feedback-action@4738cf661995d96df3512409ec17c900a4081d33 # v2.0.0
with:
feedback-message: |
Hello there,
@@ -50,6 +50,6 @@ jobs:
(If you believe you should not receive this message, you can add yourself to the [blocklist](https://github.com/nextcloud/.github/blob/master/non-community-usernames.txt).)
days-before-feedback: 14
- start-date: '2025-06-12'
+ max-days-overdue: 7
exempt-authors: '${{ steps.blocklist.outputs.blocklist }},${{ steps.scrape.outputs.users }}'
exempt-bots: true
diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml
index eafcfeb51..d6e2d52f3 100644
--- a/.github/workflows/psalm.yml
+++ b/.github/workflows/psalm.yml
@@ -30,7 +30,7 @@ jobs:
- name: Get php version
id: versions
- uses: icewind1991/nextcloud-version-matrix@8a7bac6300b2f0f3100088b297995a229558ddba # v1.3.2
+ uses: nextcloud-libraries/nextcloud-version-matrix@cd0211ffcef1065e2020cd579e4843b8746e7a58 # v1.3.3
- name: Check enforcement of minimum PHP version ${{ steps.versions.outputs.php-min }} in psalm.xml
run: grep 'phpVersion="${{ steps.versions.outputs.php-min }}' psalm.xml
diff --git a/.github/workflows/rector-apply.yml b/.github/workflows/rector-apply.yml
index 584cf078f..ed06dec83 100644
--- a/.github/workflows/rector-apply.yml
+++ b/.github/workflows/rector-apply.yml
@@ -33,7 +33,7 @@ jobs:
- name: Get php version
id: versions
- uses: icewind1991/nextcloud-version-matrix@8a7bac6300b2f0f3100088b297995a229558ddba # v1.3.2
+ uses: nextcloud-libraries/nextcloud-version-matrix@cd0211ffcef1065e2020cd579e4843b8746e7a58 # v1.3.3
- name: Set up php${{ steps.versions.outputs.php-min }}
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
@@ -45,10 +45,6 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Remove nextcloud/ocp
- run: |
- composer remove nextcloud/ocp --dev --no-scripts
-
- name: Install composer dependencies
uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0
diff --git a/.github/workflows/sync-workflow-templates.yml b/.github/workflows/sync-workflow-templates.yml
index 0e925bb86..40d39e1fa 100644
--- a/.github/workflows/sync-workflow-templates.yml
+++ b/.github/workflows/sync-workflow-templates.yml
@@ -26,9 +26,9 @@ jobs:
matrix:
branches:
- ${{ github.event.repository.default_branch }}
+ - 'stable35'
- 'stable34'
- 'stable33'
- - 'stable32'
name: Update workflows in ${{ matrix.branches }}
diff --git a/.github/workflows/update-nextcloud-ocp-approve-merge.yml b/.github/workflows/update-nextcloud-ocp-approve-merge.yml
index 88c54da0a..4d9f82a2b 100644
--- a/.github/workflows/update-nextcloud-ocp-approve-merge.yml
+++ b/.github/workflows/update-nextcloud-ocp-approve-merge.yml
@@ -6,17 +6,14 @@
# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
-name: Auto approve nextcloud/ocp
+# TODO: Remove this after a grace period of 6 months to give everyone the chance to remove the workflow
+# TODO: To be removed mid 2027.
+name: No-op please remove this workflow
-on:
- pull_request_target: # zizmor: ignore[dangerous-triggers]
- branches:
- - main
- - master
- - stable*
+on: pull_request
permissions:
- contents: read
+ contents: none
concurrency:
group: update-nextcloud-ocp-approve-merge-${{ github.head_ref || github.run_id }}
@@ -24,36 +21,12 @@ concurrency:
jobs:
auto-approve-merge:
- if: github.actor == 'nextcloud-command'
runs-on: ubuntu-latest-low
- permissions:
- # for auto-approve-action to approve PRs
- pull-requests: write
- # for alexwilson/enable-github-automerge-action to approve PRs
- contents: write
+ if: always()
- steps:
- - name: Disabled on forks
- if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
- run: |
- echo 'Can not approve PRs from forks'
- exit 1
-
- - uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
- id: branchname
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
+ # This is the summary, we just avoid to rename it so that branch protection rules still match
+ name: auto-approve-merge
- - name: GitHub actions bot approve
- if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
- run: gh pr review --approve "$PR_URL"
- env:
- PR_URL: ${{ github.event.pull_request.html_url }}
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- # Enable GitHub auto merge
- - name: Auto merge
- uses: alexwilson/enable-github-automerge-action@2c32e18a76e0726ffe7a573bfff2d42a20885126 # 3.0.0
- if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
+ steps:
+ - name: No-op please remove this workflow
+ run: echo "Approve and auto-merge has been folded into update-nextcloud-ocp.yml / update-nextcloud-ocp-matrix.yml, please remove this file"; exit 1;
diff --git a/.github/workflows/update-nextcloud-ocp.yml b/.github/workflows/update-nextcloud-ocp.yml
index 2d359af49..894bc13a7 100644
--- a/.github/workflows/update-nextcloud-ocp.yml
+++ b/.github/workflows/update-nextcloud-ocp.yml
@@ -14,8 +14,9 @@ on:
- cron: "5 2 * * 0"
permissions:
- contents: read
+ contents: write
issues: write
+ pull-requests: write
jobs:
update-nextcloud-ocp:
@@ -24,6 +25,10 @@ jobs:
# Only allowed to be run on nextcloud repositories
if: ${{ github.repository_owner == 'nextcloud' }}
+ env:
+ # env variable for maintainers: 'false' disables auto-merge for these pull requests
+ AUTOMERGE: true
+
strategy:
fail-fast: false
matrix:
@@ -32,7 +37,6 @@ jobs:
- 'stable35'
- 'stable34'
- 'stable33'
- - 'stable32'
name: update-nextcloud-ocp-${{ matrix.branches }}
@@ -101,6 +105,7 @@ jobs:
body: 'Please check the output of the GitHub action and manually resolve the issues
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
${{ steps.codeowners.outputs.codeowners }}'
- name: Create Pull Request
+ id: create-pull-request
if: steps.checkout.outcome == 'success'
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
@@ -111,13 +116,25 @@ jobs:
signoff: true
branch: 'automated/noid/${{ matrix.branches }}-update-nextcloud-ocp'
title: '[${{ matrix.branches }}] Update nextcloud/ocp dependency'
- add-path: |
- composer.json
- composer.lock
- vendor-bin/nextcloud-ocp/composer.json
- vendor-bin/nextcloud-ocp/composer.lock
+ add-paths: ${{ steps.check_composer_bin.outputs.files_exists == 'true' && 'vendor-bin/nextcloud-ocp/composer.json,vendor-bin/nextcloud-ocp/composer.lock' || 'composer.json,composer.lock' }}
body: |
Auto-generated update of [nextcloud/ocp](https://github.com/nextcloud-deps/ocp/) dependency
labels: |
dependencies
3. to review
+
+ # Approve using the default GITHUB_TOKEN, as the PR itself was created
+ # using COMMAND_BOT_PAT and GitHub does not allow an account to approve its own PR
+ - name: GitHub actions bot approve
+ if: steps.create-pull-request.outputs.pull-request-operation != 'none'
+ run: gh pr review --approve "$PR_URL"
+ env:
+ PR_URL: ${{ steps.create-pull-request.outputs.pull-request-url }}
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Enable auto merge
+ if: steps.create-pull-request.outputs.pull-request-operation != 'none' && fromJSON(env.AUTOMERGE)
+ uses: peter-evans/enable-pull-request-automerge@a660677d5469627102a1c1e11409dd063606628d # v3.0.0
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ pull-request-number: ${{ steps.create-pull-request.outputs.pull-request-number }}