aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Müller <marcel-mueller@gmx.de>2024-07-15 22:06:31 +0200
committerMarcel Müller <marcel-mueller@gmx.de>2024-07-15 22:08:39 +0200
commit315dd178989f1e28212303047b6b930442c902ae (patch)
treeff6d56aae4005caddc731ec6d7de43775ff634fd
parent7be7cfa5fd971d284eccf5819457583c20f82b71 (diff)
downloadnextcloud-server-fix/noid/test-samba-with-self-hosted.tar.gz
nextcloud-server-fix/noid/test-samba-with-self-hosted.zip
-rw-r--r--.github/workflows/cypress.yml177
-rw-r--r--.github/workflows/dependabot-approve-merge.yml49
-rw-r--r--.github/workflows/files-external-ftp.yml121
-rw-r--r--.github/workflows/files-external-s3.yml187
-rw-r--r--.github/workflows/files-external-sftp.yml111
-rw-r--r--.github/workflows/files-external-smb-kerberos.yml16
-rw-r--r--.github/workflows/files-external-smb.yml110
-rw-r--r--.github/workflows/files-external-webdav.yml107
-rw-r--r--.github/workflows/files-external.yml95
-rw-r--r--.github/workflows/fixup.yml36
-rw-r--r--.github/workflows/integration-dav.yml125
-rw-r--r--.github/workflows/integration-litmus.yml112
-rw-r--r--.github/workflows/integration-s3-primary.yml119
-rw-r--r--.github/workflows/integration-sqlite.yml168
-rw-r--r--.github/workflows/lint-eslint.yml95
-rw-r--r--.github/workflows/lint-php-cs.yml82
-rw-r--r--.github/workflows/lint-php.yml82
-rw-r--r--.github/workflows/node-test.yml173
-rw-r--r--.github/workflows/node.yml105
-rw-r--r--.github/workflows/npm-audit-fix.yml75
-rw-r--r--.github/workflows/object-storage-azure.yml127
-rw-r--r--.github/workflows/object-storage-s3.yml133
-rw-r--r--.github/workflows/object-storage-swift.yml123
-rw-r--r--.github/workflows/openapi.yml45
-rw-r--r--.github/workflows/performance.yml120
-rw-r--r--.github/workflows/phpunit-32bits.yml66
-rw-r--r--.github/workflows/phpunit-mariadb.yml142
-rw-r--r--.github/workflows/phpunit-memcached.yml126
-rw-r--r--.github/workflows/phpunit-mysql.yml147
-rw-r--r--.github/workflows/phpunit-nodb.yml131
-rw-r--r--.github/workflows/phpunit-oci.yml149
-rw-r--r--.github/workflows/phpunit-pgsql.yml146
-rw-r--r--.github/workflows/phpunit-sqlite.yml130
-rw-r--r--.github/workflows/pr-feedback.yml50
-rw-r--r--.github/workflows/reuse.yml22
-rw-r--r--.github/workflows/stale.yml35
-rw-r--r--.github/workflows/static-code-analysis.yml103
-rw-r--r--.github/workflows/update-cacert-bundle.yml45
-rw-r--r--.github/workflows/update-code-signing-crl.yml48
-rw-r--r--.github/workflows/update-psalm-baseline-approve-merge.yml52
-rw-r--r--.github/workflows/update-psalm-baseline.yml69
41 files changed, 13 insertions, 4141 deletions
diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml
deleted file mode 100644
index 7c37accb465..00000000000
--- a/.github/workflows/cypress.yml
+++ /dev/null
@@ -1,177 +0,0 @@
-# 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: 2023-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Cypress
-
-on: pull_request
-
-concurrency:
- group: cypress-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-env:
- # Adjust APP_NAME if your repository name is different
- APP_NAME: ${{ github.event.repository.name }}
-
- # Server requires head_ref instead of base_ref, as we want to test the PR branch
- BRANCH: ${{ github.head_ref || github.ref_name }}
-
-jobs:
- init:
- runs-on: ubuntu-latest
- outputs:
- nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
- npmVersion: ${{ steps.versions.outputs.npmVersion }}
-
- env:
- PUPPETEER_SKIP_DOWNLOAD: true
-
- steps:
- - name: Disabled on forks
- if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
- run: |
- echo 'Can not run cypress on forks'
- exit 1
-
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- with:
- # We need to checkout submodules for 3rdparty
- submodules: true
-
- - name: Check composer.json
- id: check_composer
- uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
- with:
- files: "composer.json"
-
- - name: Install composer dependencies
- if: steps.check_composer.outputs.files_exists == 'true'
- run: composer install --no-dev
-
- - name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
- id: versions
- with:
- fallbackNode: "^20"
- fallbackNpm: "^10"
-
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
- with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
-
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
-
- - name: Install node dependencies & build app
- run: |
- npm ci
- TESTING=true npm run build --if-present
-
- - name: Show cypress version
- run: npm run cypress:version
-
- - name: Save context
- uses: buildjet/cache/save@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
- with:
- key: cypress-context-${{ github.run_id }}
- path: ./
-
- cypress:
- runs-on: ubuntu-latest
- needs: init
-
- strategy:
- fail-fast: false
- matrix:
- # Run multiple copies of the current job in parallel
- # Please increase the number or runners as your tests suite grows (0 based index for e2e tests)
- containers: ["component", '0', '1', '2', '3', '4', '5']
- # Hack as strategy.job-total includes the component and GitHub does not allow math expressions
- # Always align this number with the total of e2e runners (max. index + 1)
- total-containers: [6]
-
- name: runner ${{ matrix.containers }}
-
- steps:
- - name: Restore context
- uses: buildjet/cache/restore@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
- with:
- fail-on-cache-miss: true
- key: cypress-context-${{ github.run_id }}
- path: ./
-
- - name: Set up node ${{ needs.init.outputs.nodeVersion }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
- with:
- node-version: ${{ needs.init.outputs.nodeVersion }}
-
- - name: Set up npm ${{ needs.init.outputs.npmVersion }}
- run: npm i -g 'npm@${{ needs.init.outputs.npmVersion }}'
-
- - name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
- uses: cypress-io/github-action@8d3918616d8ac34caa2b49afc8b408b6a872a6f5 # v6.7.1
- with:
- component: ${{ matrix.containers == 'component' }}
- group: ${{ matrix.use-cypress-cloud && matrix.containers == 'component' && 'Run component' || matrix.use-cypress-cloud && 'Run E2E' || '' }}
- # cypress env
- ci-build-id: ${{ matrix.use-cypress-cloud && format('{0}-{1}', github.sha, github.run_number) || '' }}
- tag: ${{ matrix.use-cypress-cloud && github.event_name || '' }}
- env:
- # Needs to be prefixed with CYPRESS_
- CYPRESS_BRANCH: ${{ env.BRANCH }}
- # https://github.com/cypress-io/github-action/issues/124
- COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
- # Needed for some specific code workarounds
- TESTING: true
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
- SPLIT: ${{ matrix.total-containers }}
- SPLIT_INDEX: ${{ matrix.containers == 'component' && 0 || matrix.containers }}
-
- - name: Upload snapshots
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
- if: always()
- with:
- name: snapshots_${{ matrix.containers }}
- path: cypress/snapshots
-
- - name: Extract NC logs
- if: failure() && matrix.containers != 'component'
- run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log
-
- - name: Upload NC logs
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
- if: failure() && matrix.containers != 'component'
- with:
- name: nc_logs_${{ matrix.containers }}
- path: nextcloud.log
-
- - name: Create data dir archive
- if: failure() && matrix.containers != 'component'
- run: docker exec nextcloud-cypress-tests-server tar -cvjf - data > data.tar
-
- - name: Upload data dir archive
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
- if: failure() && matrix.containers != 'component'
- with:
- name: nc_data_${{ matrix.containers }}
- path: data.tar
-
- summary:
- runs-on: ubuntu-latest-low
- needs: [init, cypress]
-
- if: always()
-
- name: cypress-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.init.result != 'success' || ( needs.cypress.result != 'success' && needs.cypress.result != 'skipped' ) }}; then exit 1; fi
diff --git a/.github/workflows/dependabot-approve-merge.yml b/.github/workflows/dependabot-approve-merge.yml
deleted file mode 100644
index efe8bfe37f7..00000000000
--- a/.github/workflows/dependabot-approve-merge.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-# 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: 2021-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Dependabot
-
-on:
- pull_request_target:
- branches:
- - main
- - master
- - stable*
-
-permissions:
- contents: read
-
-concurrency:
- group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- auto-approve-merge:
- if: github.actor == 'dependabot[bot]' || github.actor == 'renovate[bot]'
- runs-on: ubuntu-latest-low
- permissions:
- # for hmarr/auto-approve-action to approve PRs
- pull-requests: write
-
- 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
-
- # GitHub actions bot approve
- - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
-
- # Nextcloud bot approve and merge request
- - uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2
- with:
- target: minor
- github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
diff --git a/.github/workflows/files-external-ftp.yml b/.github/workflows/files-external-ftp.yml
deleted file mode 100644
index c75823b8feb..00000000000
--- a/.github/workflows/files-external-ftp.yml
+++ /dev/null
@@ -1,121 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: PHPUnit files_external FTP
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-concurrency:
- group: files-external-ftp-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - 'apps/files_external/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- files-external-ftp:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- # do not stop on another job's failure
- fail-fast: false
- matrix:
- php-versions: ['8.1', '8.3']
- ftpd: ['proftpd', 'vsftpd', 'pure-ftpd']
- include:
- - php-versions: '8.1'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: php${{ matrix.php-versions }}-${{ matrix.ftpd }}
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up ftpd
- run: |
- sudo mkdir /tmp/ftp
- sudo chmod -R 0777 /tmp/ftp
- if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then echo '$6$Q7V2n3q2GRVv5YeQ$/AhLu07H76Asojy7bxGXMY1caKLAbp5Vt82LOZYMkD/8uDzyMAEXwk0c1Bdz1DkBsk2Vh/9SF130mOPavRGMo.' > /tmp/secret.txt; fi
- if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then echo 'FTP_ROOT=/home/test' > $GITHUB_ENV; fi
- if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then docker run --name ftp -d --net host -e PASV_ADDRESS=127.0.0.1 -e FTPUSER_NAME=test -v /tmp/secret.txt:/run/secrets/ftp-user-password-secret -v /tmp/ftp:/home/test instantlinux/proftpd; fi
- if [[ "${{ matrix.ftpd }}" == 'vsftpd' ]]; then docker run --name ftp -d --net host -e FTP_USER=test -e FTP_PASS=test -e PASV_ADDRESS=127.0.0.1 -v /tmp/ftp:/home/vsftpd/test fauria/vsftpd; fi
- if [[ "${{ matrix.ftpd }}" == 'pure-ftpd' ]]; then docker run --name ftp -d --net host -e "PUBLICHOST=localhost" -e FTP_USER_NAME=test -e FTP_USER_PASS=test -e FTP_USER_HOME=/home/test -v /tmp/ftp:/home/test -v /tmp/ftp:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- run: |
- composer install
- mkdir data
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- ./occ app:enable --force files_external
- echo "<?php return ['run' => true,'host' => 'localhost','user' => 'test','password' => 'test', 'root' => '${{ env.FTP_ROOT }}'];" > apps/files_external/tests/config.ftp.php
-
- - name: smoketest ftp
- run: |
- php -r 'var_dump(file_put_contents("ftp://test:test@localhost${{ env.FTP_ROOT }}/ftp.txt", "asd"));'
- php -r 'var_dump(file_get_contents("ftp://test:test@localhost${{ env.FTP_ROOT }}/ftp.txt"));'
- php -r 'var_dump(mkdir("ftp://test:test@localhost${{ env.FTP_ROOT }}/asdads"));'
- ls -l /tmp/ftp
- [ -f /tmp/ftp/ftp.txt ]
-
- - name: PHPUnit
- run: composer run test:files_external -- \
- apps/files_external/tests/Storage/FtpTest.php \
- ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-files-external-ftp
-
- - name: ftpd logs
- if: always()
- run: |
- docker logs ftp
-
- ftp-summary:
- runs-on: ubuntu-latest-low
- needs: [changes, files-external-ftp]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.files-external-ftp.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/files-external-s3.yml b/.github/workflows/files-external-s3.yml
deleted file mode 100644
index 07d8187b1d4..00000000000
--- a/.github/workflows/files-external-s3.yml
+++ /dev/null
@@ -1,187 +0,0 @@
-# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: PHPUnit files_external S3
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-concurrency:
- group: files-external-s3-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - 'apps/files_external/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- files-external-s3-minio:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.2'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: php${{ matrix.php-versions }}-s3
-
- services:
- minio:
- image: bitnami/minio
- env:
- MINIO_ROOT_USER: nextcloud
- MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
- MINIO_DEFAULT_BUCKETS: nextcloud
- ports:
- - '9000:9000'
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- env:
- OBJECT_STORE_KEY: nextcloud
- OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
- run: |
- composer install
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- ./occ app:enable --force files_external
- echo "<?php return ['run' => true, 'secret' => 'actually-not-secret', 'passwordsalt' => 'actually-not-secret', 'hostname' => 'localhost','key' => '$OBJECT_STORE_KEY','secret' => '$OBJECT_STORE_SECRET', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/files_external/tests/config.amazons3.php
-
- - name: Wait for S3
- run: |
- sleep 10
- curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
-
- - name: PHPUnit
- run: composer run test:files_external -- \
- apps/files_external/tests/Storage/Amazons3Test.php \
- apps/files_external/tests/Storage/VersionedAmazonS3Test.php \
- ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-files-external-s3
-
- - name: S3 logs
- if: always()
- run: |
- docker ps -a
- docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
-
- files-external-s3-localstack:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.3'
- coverage: true
-
- name: php${{ matrix.php-versions }}-s3
-
- services:
- localstack:
- env:
- SERVICES: s3
- DEBUG: 1
- image: localstack/localstack
- ports:
- - "4566:4566"
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- run: |
- composer install
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- ./occ app:enable --force files_external
- echo "<?php return ['run' => true,'hostname' => 'localhost','key' => 'ignored','secret' => 'ignored', 'bucket' => 'bucket', 'port' => 4566, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/files_external/tests/config.amazons3.php
-
- - name: PHPUnit
- run: composer run test:files_external -- \
- apps/files_external/tests/Storage/Amazons3Test.php \
- apps/files_external/tests/Storage/VersionedAmazonS3Test.php \
- ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-files-external-s3
-
- - name: S3 logs
- if: always()
- run: |
- docker ps -a
- docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
-
- s3-external-summary:
- runs-on: ubuntu-latest-low
- needs: [changes, files-external-s3-minio, files-external-s3-localstack]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.files-external-s3-minio.result != 'success' && needs.files-external-s3-localstack.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/files-external-sftp.yml b/.github/workflows/files-external-sftp.yml
deleted file mode 100644
index d7a15e27da2..00000000000
--- a/.github/workflows/files-external-sftp.yml
+++ /dev/null
@@ -1,111 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: PHPUnit files_external sFTP
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-concurrency:
- group: files-external-sftp-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - 'apps/files_external/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- files-external-sftp:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- # do not stop on another job's failure
- fail-fast: false
- matrix:
- php-versions: ['8.1', '8.3']
- sftpd: ['openssh']
- include:
- - php-versions: '8.1'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: php${{ matrix.php-versions }}-${{ matrix.sftpd }}
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up sftpd
- run: |
- sudo mkdir /tmp/sftp
- sudo chown -R 0777 /tmp/sftp
- if [[ '${{ matrix.sftpd }}' == 'openssh' ]]; then docker run -p 2222:22 --name sftp -d -v /tmp/sftp:/home/test atmoz/sftp 'test:test:::data'; fi
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- run: |
- composer install
- mkdir data
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- ./occ app:enable --force files_external
- echo "<?php return ['run' => true, 'host' => 'localhost:2222','user' => 'test','password' => 'test', 'root' => 'data'];" > apps/files_external/tests/config.sftp.php
-
- - name: PHPUnit
- run: composer run test:files_external -- \
- apps/files_external/tests/Storage/SftpTest.php \
- apps/files_external/tests/Storage/SFTP_KeyTest.php \
- ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-files-external-sftp
-
- - name: sftpd logs
- if: always()
- run: |
- ls -l /tmp/sftp
- docker logs sftp
-
- sftp-summary:
- runs-on: ubuntu-latest-low
- needs: [changes, files-external-sftp]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.files-external-sftp.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/files-external-smb-kerberos.yml b/.github/workflows/files-external-smb-kerberos.yml
index 2e09d3386d8..ddadd2a5a31 100644
--- a/.github/workflows/files-external-smb-kerberos.yml
+++ b/.github/workflows/files-external-smb-kerberos.yml
@@ -34,7 +34,7 @@ jobs:
- '**.php'
files-external-smb-kerberos:
- runs-on: ubuntu-22.04
+ runs-on: self-hosted
needs: changes
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
@@ -53,12 +53,22 @@ jobs:
repository: nextcloud/user_saml
path: apps/user_saml
+
+ - name: Checkout SystemKeeper samba-krb-test
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
+ with:
+ repository: SystemKeeper/samba-krb-test
+ path: krb-test
+ ref: samba-acl-name
+
+ - name: Build image
+ working-directory: krb-test/dc
+ run: docker build -t icewind1991/samba-krb-test-dc .
+
- name: Pull images
run: |
- docker pull ghcr.io/icewind1991/samba-krb-test-dc
docker pull ghcr.io/icewind1991/samba-krb-test-apache
docker pull ghcr.io/icewind1991/samba-krb-test-client
- docker tag ghcr.io/icewind1991/samba-krb-test-dc icewind1991/samba-krb-test-dc
docker tag ghcr.io/icewind1991/samba-krb-test-apache icewind1991/samba-krb-test-apache
docker tag ghcr.io/icewind1991/samba-krb-test-client icewind1991/samba-krb-test-client
diff --git a/.github/workflows/files-external-smb.yml b/.github/workflows/files-external-smb.yml
deleted file mode 100644
index e47730b33ac..00000000000
--- a/.github/workflows/files-external-smb.yml
+++ /dev/null
@@ -1,110 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: PHPUnit files_external SMB
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-concurrency:
- group: files-external-smb-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - 'apps/files_external/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- files-external-smb:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.3']
- include:
- - php-versions: '8.1'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: php${{ matrix.php-versions }}-smb
-
- services:
- samba:
- image: ghcr.io/nextcloud/continuous-integration-samba:latest
- ports:
- - 445:445
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, smbclient, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up smbclient
- # This is needed as icewind/smb php library for notify
- run: sudo apt-get install -y smbclient
-
- - name: Set up Nextcloud
- run: |
- composer install
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- ./occ config:system:set --value true --type boolean allow_local_remote_servers
- ./occ app:enable --force files_external
- echo "<?php return ['run'=>true, 'host'=>'localhost', 'user'=>'test', 'password'=>'test', 'root'=>'', 'share'=>'public'];" > apps/files_external/tests/config.smb.php
-
- - name: Wait for smb
- run: |
- apps/files_external/tests/env/wait-for-connection 127.0.0.1 445 60
-
- - name: PHPUnit
- run: composer run test:files_external -- --verbose \
- apps/files_external/tests/Storage/SmbTest.php \
- ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@c16abc29c95fcf9174b58eb7e1abf4c866893bc8 # v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-files-external-smb
-
- files-external-smb-summary:
- runs-on: ubuntu-latest-low
- needs: [changes, files-external-smb]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.files-external-smb.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/files-external-webdav.yml b/.github/workflows/files-external-webdav.yml
deleted file mode 100644
index 281cb35eb70..00000000000
--- a/.github/workflows/files-external-webdav.yml
+++ /dev/null
@@ -1,107 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: PHPUnit files_external WebDAV
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-concurrency:
- group: files-external-webdav-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - 'apps/files_external/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- files-external-webdav-apache:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.2'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: php${{ matrix.php-versions }}-webdav
-
- services:
- apache:
- image: ghcr.io/nextcloud/continuous-integration-webdav-apache:latest
- ports:
- - 8081:80
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- run: |
- composer install
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- ./occ config:system:set --value true --type boolean allow_local_remote_servers
- ./occ app:enable --force files_external
- echo "<?php return ['run' => true, 'host' => 'localhost:8081/webdav/', 'user' => 'test', 'password'=>'pass', 'root' => '', 'wait' => 0];" > apps/files_external/tests/config.webdav.php
-
- - name: Wait for WebDAV
- run: |
- sleep 5
- curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://test:pass@localhost:8081/webdav/
-
- - name: PHPUnit
- run: composer run test:files_external -- --verbose \
- apps/files_external/tests/Storage/WebdavTest.php \
- ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@c16abc29c95fcf9174b58eb7e1abf4c866893bc8 # v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-files-external-webdav
-
- files-external-webdav-summary:
- runs-on: ubuntu-latest-low
- needs: [changes, files-external-webdav-apache]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.files-external-webdav-apache.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/files-external.yml b/.github/workflows/files-external.yml
deleted file mode 100644
index b108df6b1df..00000000000
--- a/.github/workflows/files-external.yml
+++ /dev/null
@@ -1,95 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: PHPUnit files_external generic
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-concurrency:
- group: files-external-generic-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - 'apps/files_external/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - 'composer.json'
- - 'composer.lock'
-
- files-external-generic:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.2'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: php${{ matrix.php-versions }}-generic
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- env:
- OBJECT_STORE_KEY: nextcloud
- OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
- run: |
- composer install
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- ./occ app:enable --force files_external
-
- - name: PHPUnit
- run: composer run test:files_external \
- ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-files-external-generic
-
- files-external-summary:
- runs-on: ubuntu-latest-low
- needs: [changes, files-external-generic ]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.files-external-generic.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/fixup.yml b/.github/workflows/fixup.yml
deleted file mode 100644
index 69da2bbb039..00000000000
--- a/.github/workflows/fixup.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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: 2021-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Block fixup and squash commits
-
-on:
- pull_request:
- types: [opened, ready_for_review, reopened, synchronize]
-
-permissions:
- contents: read
-
-concurrency:
- group: fixup-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- commit-message-check:
- if: github.event.pull_request.draft == false
-
- permissions:
- pull-requests: write
- name: Block fixup and squash commits
-
- runs-on: ubuntu-latest-low
-
- steps:
- - name: Run check
- uses: skjnldsv/block-fixup-merge-action@c138ea99e45e186567b64cf065ce90f7158c236a # v2
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/integration-dav.yml b/.github/workflows/integration-dav.yml
deleted file mode 100644
index 2f146c9e31d..00000000000
--- a/.github/workflows/integration-dav.yml
+++ /dev/null
@@ -1,125 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: DAV integration tests
-on:
- pull_request:
-
-concurrency:
- group: integration-caldav-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/*.php'
- - '**/lib/**'
- - '**/tests/**'
- - '**/vendor-bin/**'
- - 'build/integration/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
-
- integration-caldav:
- runs-on: ubuntu-latest
- needs: changes
-
- if: needs.changes.outputs.src != 'false' && github.repository_owner != 'nextcloud-gmbh'
-
- strategy:
- # do not stop on another job's failure
- fail-fast: false
- matrix:
- php-versions: ['8.3']
- endpoint: ['old', 'new']
- service: ['CalDAV', 'CardDAV']
-
- name: ${{ matrix.service }} (${{ matrix.endpoint }} endpoint) php${{ matrix.php-versions }}
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: 'none'
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Python
- uses: LizardByte/setup-python-action@master
- with:
- python-version: '2.7'
-
- - name: Set up CalDAVTester
- run: |
- git clone --depth=1 https://github.com/apple/ccs-caldavtester.git CalDAVTester
- git clone --depth=1 https://github.com/apple/ccs-pycalendar.git pycalendar
-
- - name: Set up Nextcloud
- run: |
- mkdir data
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- # disable the trashbin, so recurrent deletion of the same object works
- ./occ config:app:set dav calendarRetentionObligation --value=0
- # Prepare users
- OC_PASS=user01 ./occ user:add --password-from-env user01
- OC_PASS=user02 ./occ user:add --password-from-env user02
- # Prepare calendars
- ./occ dav:create-calendar user01 calendar
- ./occ dav:create-calendar user01 shared
- ./occ dav:create-calendar user02 calendar
- # Prepare address books
- ./occ dav:create-addressbook user01 addressbook
- ./occ dav:create-addressbook user02 addressbook
-
- - name: Run Nextcloud
- run: |
- php -S localhost:8888 &
-
- - name: Run CalDAVTester
- run: |
- cp "apps/dav/tests/travis/caldavtest/serverinfo-${{ matrix.endpoint }}${{ matrix.endpoint == 'old' && (matrix.service == 'CardDAV' && '-carddav' || '-caldav') || '' }}-endpoint.xml" "apps/dav/tests/travis/caldavtest/serverinfo.xml"
- pushd CalDAVTester
- PYTHONPATH="../pycalendar/src" python testcaldav.py --print-details-onfail --basedir "../apps/dav/tests/travis/caldavtest" -o cdt.txt \
- "${{ matrix.service }}/current-user-principal.xml" \
- "${{ matrix.service }}/sync-report.xml" \
- ${{ matrix.endpoint == 'new' && format('{0}/sharing-{1}.xml', matrix.service, matrix.service == 'CalDAV' && 'calendars' || 'addressbooks') || ';' }}
- popd
-
- - name: Print Nextcloud logs
- if: always()
- run: |
- cat data/nextcloud.log
-
- caldav-integration-summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, integration-caldav]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-caldav.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/integration-litmus.yml b/.github/workflows/integration-litmus.yml
deleted file mode 100644
index 85d585d3281..00000000000
--- a/.github/workflows/integration-litmus.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Litmus integration tests
-on:
- pull_request:
-
-concurrency:
- group: integration-litmus-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/*.php'
- - '**/lib/**'
- - '**/tests/**'
- - '**/vendor-bin/**'
- - 'build/integration/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
-
- integration-litmus:
- runs-on: ubuntu-latest
- needs: changes
-
- if: needs.changes.outputs.src != 'false' && github.repository_owner != 'nextcloud-gmbh'
-
- strategy:
- # do not stop on another job's failure
- fail-fast: false
- matrix:
- php-versions: ['8.3']
- endpoint: ['webdav', 'dav']
-
- name: Litmus WebDAV ${{ matrix.endpoint }}
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: 'none'
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- run: |
- mkdir data
- ./occ maintenance:install \
- --verbose \
- --database=sqlite \
- --database-name=nextcloud \
- --database-user=root \
- --database-pass=rootpassword \
- --admin-user admin \
- --admin-pass admin
- ./occ config:system:set trusted_domains 2 --value=host.docker.internal:8080
-
- - name: Run Nextcloud
- run: |
- php -S 0.0.0.0:8080 &
-
- - name: Run Litmus test
- run: |
- docker run \
- --rm \
- --add-host=host.docker.internal:host-gateway \
- ghcr.io/nextcloud/continuous-integration-litmus-php8.3:latest \
- bash -c '\
- cd /tmp/litmus/litmus-0.13;
- make URL=http://host.docker.internal:8080/remote.php/${{ matrix.endpoint }}${{ matrix.endpoint == 'dav' && '/files/admin' || ''}} CREDS="admin admin" TESTS="basic copymove props largefile" check;
- status=$?;
- cat debug.log;
- exit $status;'
-
- - name: Print Nextcloud logs
- if: always()
- run: cat data/nextcloud.log
-
- integration-litmus-summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, integration-litmus]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-litmus.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/integration-s3-primary.yml b/.github/workflows/integration-s3-primary.yml
deleted file mode 100644
index aeedcddb9c5..00000000000
--- a/.github/workflows/integration-s3-primary.yml
+++ /dev/null
@@ -1,119 +0,0 @@
-# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: S3 primary storage integration tests
-on:
- pull_request:
-
-concurrency:
- group: integration-s3-primary-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/*.php'
- - '**/lib/**'
- - '**/tests/**'
- - '**/vendor-bin/**'
- - 'build/integration/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
-
- integration-s3-primary:
- runs-on: ubuntu-latest
- needs: changes
-
- if: needs.changes.outputs.src != 'false' && github.repository_owner != 'nextcloud-gmbh'
-
- strategy:
- # do not stop on another job's failure
- fail-fast: false
- matrix:
- php-versions: ['8.1']
- key: ['objectstore', 'objectstore_multibucket']
-
- name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio
-
- services:
- redis:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
- ports:
- - 6379:6379/tcp
- minio:
- image: bitnami/minio
- env:
- MINIO_ROOT_USER: nextcloud
- MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
- MINIO_DEFAULT_BUCKETS: nextcloud
- ports:
- - "9000:9000"
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: 'none'
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Wait for S3
- run: |
- sleep 10
- curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
-
- - name: Set up Nextcloud
- run: |
- mkdir data
- echo '<?php $CONFIG=["${{ matrix.key }}" => ["class" => "OC\Files\ObjectStore\S3", "arguments" => ["bucket" => "nextcloud", "autocreate" => true, "key" => "nextcloud", "secret" => "bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=", "hostname" => "localhost", "port" => 9000, "use_ssl" => false, "use_path_style" => true, "uploadPartSize" => 52428800]]];' > config/config.php
- echo '<?php $CONFIG=["redis" => ["host" => "localhost", "port" => 6379], "memcache.local" => "\OC\Memcache\Redis", "memcache.distributed" => "\OC\Memcache\Redis"];' > config/redis.config.php
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- php -f index.php
-
- - name: Integration
- run: |
- cd build/integration
- bash run.sh --tags "~@failure-s3" dav_features/webdav-related.feature
-
- - name: S3 logs
- if: always()
- run: |
- cat data/nextcloud.log
- docker ps -a
- docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
-
-
- s3-primary-integration-summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, integration-s3-primary]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-s3-primary.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/integration-sqlite.yml b/.github/workflows/integration-sqlite.yml
deleted file mode 100644
index 32b7f908f7d..00000000000
--- a/.github/workflows/integration-sqlite.yml
+++ /dev/null
@@ -1,168 +0,0 @@
-# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Integration sqlite
-
-on:
- pull_request:
- push:
- branches:
- - main
- - master
- - stable*
-
-permissions:
- contents: read
-
-concurrency:
- group: integration-sqlite-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/*.php'
- - '**/lib/**'
- - '**/tests/**'
- - '**/vendor-bin/**'
- - 'build/integration/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
-
- integration-sqlite:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- strategy:
- fail-fast: false
- matrix:
- test-suite:
- - 'capabilities_features'
- - 'collaboration_features'
- - 'comments_features'
- - 'dav_features'
- - 'features'
- - 'federation_features'
- - '--tags ~@large files_features'
- - 'filesdrop_features'
- - 'openldap_features'
- - 'openldap_numerical_features'
- - 'ldap_features'
- - 'remoteapi_features'
- - 'setup_features'
- - 'sharees_features'
- - 'sharing_features'
- - 'videoverification_features'
-
- php-versions: ['8.2']
- spreed-versions: ['main']
-
- services:
- redis:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
- ports:
- - 6379:6379/tcp
- openldap:
- image: ghcr.io/nextcloud/continuous-integration-openldap:openldap-7
- ports:
- - 389:389
- env:
- SLAPD_DOMAIN: nextcloud.ci
- SLAPD_ORGANIZATION: Nextcloud
- SLAPD_PASSWORD: admin
- SLAPD_ADDITIONAL_MODULES: memberof
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- with:
- submodules: true
-
- - name: Checkout Talk app
- if: ${{ matrix.test-suite == 'videoverification_features' }}
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- with:
- repository: nextcloud/spreed
- path: apps/spreed
- ref: ${{ matrix.spreed-versions }}
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, ldap, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: none
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up production dependencies
- run: composer i --no-dev
-
- - name: Set up behat dependencies
- working-directory: build/integration
- run: composer i
-
- - name: Set up Talk dependencies
- if: ${{ matrix.test-suite == 'videoverification_features' }}
- working-directory: apps/spreed
- run: composer i --no-dev
-
- - name: Set up Nextcloud
- run: |
- mkdir data
- ./occ maintenance:install --verbose ${{ contains(matrix.test-suite,'ldap') && '--data-dir=/dev/shm/nc_int' || '' }} --database=sqlite --database-name=nextcloud --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- ./occ config:system:set hashing_default_password --value=true --type=boolean
-
- - name: Configure caching
- if: ${{ contains(matrix.test-suite,'ldap') }}
- run: |
- ./occ config:system:set redis host --value=localhost
- ./occ config:system:set redis port --value=6379 --type=integer
- ./occ config:system:set redis timeout --value=0 --type=integer
- ./occ config:system:set memcache.local --value='\OC\Memcache\Redis'
- ./occ config:system:set memcache.distributed --value='\OC\Memcache\Redis'
-
- - name: Run integration
- working-directory: build/integration
- env:
- LDAP_HOST: localhost
- run: bash run.sh ${{ matrix.test-suite }} no-tail-log
-
- - name: Print logs
- if: always()
- run: |
- cat data/nextcloud.log
- docker ps -a
- docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, integration-sqlite]
-
- if: always()
-
- name: integration-sqlite-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-sqlite.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/lint-eslint.yml b/.github/workflows/lint-eslint.yml
deleted file mode 100644
index 1a5127a2845..00000000000
--- a/.github/workflows/lint-eslint.yml
+++ /dev/null
@@ -1,95 +0,0 @@
-# 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: 2021-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Lint eslint
-
-on: pull_request
-
-permissions:
- contents: read
-
-concurrency:
- group: lint-eslint-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '**/src/**'
- - '**/appinfo/info.xml'
- - 'package.json'
- - 'package-lock.json'
- - 'tsconfig.json'
- - '.eslintrc.*'
- - '.eslintignore'
- - '**.js'
- - '**.ts'
- - '**.vue'
-
- lint:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- name: NPM lint
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
- id: versions
- with:
- fallbackNode: '^20'
- fallbackNpm: '^10'
-
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
- with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
-
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
-
- - name: Install dependencies
- env:
- CYPRESS_INSTALL_BINARY: 0
- PUPPETEER_SKIP_DOWNLOAD: true
- run: npm ci
-
- - name: Lint
- run: npm run lint
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, lint]
-
- if: always()
-
- # This is the summary, we just avoid to rename it so that branch protection rules still match
- name: eslint
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml
deleted file mode 100644
index 2713441d019..00000000000
--- a/.github/workflows/lint-php-cs.yml
+++ /dev/null
@@ -1,82 +0,0 @@
-# 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: 2021-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Lint php-cs
-
-on: pull_request
-
-permissions:
- contents: read
-
-concurrency:
- group: lint-php-cs-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/lib/**'
- - '**/tests/**'
- - '**/vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- lint:
- runs-on: ubuntu-latest
-
- name: PHP CS fixer lint
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Set up php8.1
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: 8.1
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: none
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Install dependencies
- run: composer i
-
- - name: Lint
- run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, lint]
-
- if: always()
-
- # This is the summary, we just avoid to rename it so that branch protection rules still match
- name: php-cs
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml
deleted file mode 100644
index b73ce184ce0..00000000000
--- a/.github/workflows/lint-php.yml
+++ /dev/null
@@ -1,82 +0,0 @@
-# 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: 2021-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Lint php
-
-on: pull_request
-
-permissions:
- contents: read
-
-concurrency:
- group: lint-php-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
- outputs:
- src: ${{ steps.changes.outputs.src}}
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/lib/**'
- - '**/tests/**'
- - '**/vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- lint:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- strategy:
- matrix:
- php-versions: [ '8.1', '8.2', '8.3' ]
-
- name: php-lint
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- coverage: none
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Lint
- run: composer run lint
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, lint]
-
- if: always()
-
- name: php-lint-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/node-test.yml b/.github/workflows/node-test.yml
deleted file mode 100644
index 2bdeec4f065..00000000000
--- a/.github/workflows/node-test.yml
+++ /dev/null
@@ -1,173 +0,0 @@
-# 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: 2023-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Node tests
-
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-permissions:
- contents: read
-
-concurrency:
- group: node-tests-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '**/__tests__/**'
- - '**/__mocks__/**'
- - 'apps/*/src/**'
- - 'apps/*/appinfo/info.xml'
- - 'core/src/**'
- - 'package.json'
- - 'package-lock.json'
- - 'tsconfig.json'
- - '**.js'
- - '**.ts'
- - '**.vue'
-
- versions:
- runs-on: ubuntu-latest-low
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- outputs:
- nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
- npmVersion: ${{ steps.versions.outputs.npmVersion }}
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
- id: versions
- with:
- fallbackNode: '^20'
- fallbackNpm: '^10'
-
- test:
- runs-on: ubuntu-latest
- needs: [versions, changes]
-
- if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}
-
- env:
- CYPRESS_INSTALL_BINARY: 0
- PUPPETEER_SKIP_DOWNLOAD: true
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Set up node ${{ needs.versions.outputs.nodeVersion }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
- with:
- node-version: ${{ needs.versions.outputs.nodeVersion }}
-
- - name: Set up npm ${{ needs.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ needs.versions.outputs.npmVersion }}'
-
- - name: Install dependencies & build
- run: |
- npm ci
- npm run build --if-present
-
- - name: Test and process coverage
- run: npm run test:coverage --if-present
-
- - name: Collect coverage
- uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be # v4.3.1
- with:
- files: ./coverage/lcov.info
-
- jsunit:
- runs-on: ubuntu-latest
- needs: [versions, changes]
-
- if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}
-
- env:
- CYPRESS_INSTALL_BINARY: 0
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Set up node ${{ needs.versions.outputs.nodeVersion }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
- with:
- node-version: ${{ needs.versions.outputs.nodeVersion }}
-
- - name: Set up npm ${{ needs.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ needs.versions.outputs.npmVersion }}'
-
- - name: Install dependencies
- run: npm ci
-
- - name: Test
- run: npm run test:jsunit
-
- handlebars:
- runs-on: ubuntu-latest
- needs: [versions, changes]
-
- if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}
-
- env:
- CYPRESS_INSTALL_BINARY: 0
- PUPPETEER_SKIP_DOWNLOAD: true
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Set up node ${{ needs.versions.outputs.nodeVersion }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
- with:
- node-version: ${{ needs.versions.outputs.nodeVersion }}
-
- - name: Set up npm ${{ needs.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ needs.versions.outputs.npmVersion }}'
-
- - name: Install dependencies
- run: npm ci
-
- - name: Run compile
- run: ./build/compile-handlebars-templates.sh
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, test, jsunit, handlebars]
-
- if: always()
-
- name: node-test-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.test.result != 'success' && needs.jsunit.result != 'success' && needs.handlebars.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml
deleted file mode 100644
index 23963da7b75..00000000000
--- a/.github/workflows/node.yml
+++ /dev/null
@@ -1,105 +0,0 @@
-# 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: 2021-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Node
-
-on: pull_request
-
-permissions:
- contents: read
-
-concurrency:
- group: node-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '**/src/**'
- - '**/appinfo/info.xml'
- - 'package.json'
- - 'package-lock.json'
- - 'tsconfig.json'
- - '**.js'
- - '**.ts'
- - '**.vue'
- - 'core/css/*'
- - 'core/img/**'
- - 'version.php'
-
- build:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- name: NPM build
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
- id: versions
- with:
- fallbackNode: '^20'
- fallbackNpm: '^10'
-
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
- with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
-
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
-
- - name: Install dependencies & build
- env:
- CYPRESS_INSTALL_BINARY: 0
- PUPPETEER_SKIP_DOWNLOAD: true
- run: |
- npm ci
- npm run build --if-present
-
- - name: Check webpack 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:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, build]
-
- if: always()
-
- # This is the summary, we just avoid to rename it so that branch protection rules still match
- name: node
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.build.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/npm-audit-fix.yml b/.github/workflows/npm-audit-fix.yml
deleted file mode 100644
index 0e7ba4b5d98..00000000000
--- a/.github/workflows/npm-audit-fix.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-# 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: 2023-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: Npm audit fix and compile
-
-on:
- workflow_dispatch:
- schedule:
- # At 2:30 on Sundays
- - cron: '30 2 * * 0'
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- strategy:
- fail-fast: false
- matrix:
- branches: ['main', 'master', 'stable29', 'stable28', 'stable27']
-
- name: npm-audit-fix-${{ matrix.branches }}
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- with:
- ref: ${{ matrix.branches }}
-
- - name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
- id: versions
- with:
- fallbackNode: '^20'
- fallbackNpm: '^10'
-
- - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
- with:
- node-version: ${{ steps.versions.outputs.nodeVersion }}
-
- - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
- run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
-
- - name: Fix npm audit
- id: npm-audit
- uses: nextcloud-libraries/npm-audit-action@2a60bd2e79cc77f2cc4d9a3fe40f1a69896f3a87 # v0.1.0
-
- - name: Run npm ci and npm run build
- if: always()
- env:
- CYPRESS_INSTALL_BINARY: 0
- run: |
- npm ci
- npm run build --if-present
-
- - name: Create Pull Request
- if: always()
- uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
- with:
- token: ${{ secrets.COMMAND_BOT_PAT }}
- commit-message: 'fix(deps): Fix npm audit'
- committer: GitHub <noreply@github.com>
- author: nextcloud-command <nextcloud-command@users.noreply.github.com>
- signoff: true
- branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
- title: '[${{ matrix.branches }}] Fix npm audit'
- body: ${{ steps.npm-audit.outputs.markdown }}
- labels: |
- dependencies
- 3. to review
diff --git a/.github/workflows/object-storage-azure.yml b/.github/workflows/object-storage-azure.yml
deleted file mode 100644
index 5ffad740c42..00000000000
--- a/.github/workflows/object-storage-azure.yml
+++ /dev/null
@@ -1,127 +0,0 @@
-# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Object storage azure
-on:
- pull_request:
- schedule:
- - cron: "15 2 * * *"
-
-concurrency:
- group: object-storage-azure-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- azure-primary-tests:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.3'
- coverage: true
-
- name: php${{ matrix.php-versions }}-azure
-
- services:
- azurite:
- image: mcr.microsoft.com/azure-storage/azurite
- env:
- AZURITE_ACCOUNTS: nextcloud:bmV4dGNsb3Vk
- ports:
- - 10000:10000
- options: --health-cmd="nc 127.0.0.1 10000 -z" --health-interval=1s --health-retries=30
-
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- env:
- OBJECT_STORE: azure
- OBJECT_STORE_KEY: nextcloud
- OBJECT_STORE_SECRET: bmV4dGNsb3Vk
- run: |
- composer install
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: PHPUnit
- env:
- OBJECT_STORE: azure
- OBJECT_STORE_KEY: nextcloud
- OBJECT_STORE_SECRET: bmV4dGNsb3Vk
- run: composer run test -- --group PRIMARY-azure ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-azure
-
- - name: Azurite logs
- if: always()
- run: |
- docker ps -a
- docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
-
- azure-primary-summary:
- runs-on: ubuntu-latest-low
- needs: [changes, azure-primary-tests]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.azure-primary-tests.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/object-storage-s3.yml b/.github/workflows/object-storage-s3.yml
deleted file mode 100644
index 7c27b468c25..00000000000
--- a/.github/workflows/object-storage-s3.yml
+++ /dev/null
@@ -1,133 +0,0 @@
-# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Object storage S3
-on:
- pull_request:
- schedule:
- - cron: "15 2 * * *"
-
-concurrency:
- group: object-storage-s3-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- s3-primary-tests-minio:
- runs-on: ubuntu-22.04
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.3'
- coverage: true
-
- name: php${{ matrix.php-versions }}-s3
-
- services:
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- minio:
- image: bitnami/minio
- env:
- MINIO_ROOT_USER: nextcloud
- MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
- MINIO_DEFAULT_BUCKETS: nextcloud
- ports:
- - "9000:9000"
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- env:
- OBJECT_STORE: s3
- OBJECT_STORE_KEY: nextcloud
- OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
- run: |
- composer install
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: Wait for S3
- run: |
- sleep 10
- curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
-
- - name: PHPUnit
- env:
- OBJECT_STORE: s3
- OBJECT_STORE_KEY: nextcloud
- OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
- run: composer run test -- --group PRIMARY-s3 ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-s3
-
- - name: S3 logs
- if: always()
- run: |
- docker ps -a
- docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
-
- s3-primary-summary:
- runs-on: ubuntu-latest-low
- needs: [changes,s3-primary-tests-minio]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.s3-primary-tests-minio.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/object-storage-swift.yml b/.github/workflows/object-storage-swift.yml
deleted file mode 100644
index f96869aca84..00000000000
--- a/.github/workflows/object-storage-swift.yml
+++ /dev/null
@@ -1,123 +0,0 @@
-# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Object storage Swift
-on:
- pull_request:
- schedule:
- - cron: "15 2 * * *"
-
-concurrency:
- group: object-storage-swift-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- swift-primary-tests:
- runs-on: ubuntu-latest
- needs: changes
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.3'
- coverage: true
-
- name: php${{ matrix.php-versions }}-swift
-
- services:
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- swift:
- image: ghcr.io/cscfi/docker-keystone-swift
- ports:
- - 5000:5000
- - 8080:8080
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- env:
- OBJECT_STORE: swift
- OBJECT_STORE_SECRET: veryfast
- run: |
- composer install
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: PHPUnit
- env:
- OBJECT_STORE: swift
- OBJECT_STORE_SECRET: veryfast
- run: composer run test -- --group PRIMARY-swift ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-swift
-
- - name: Swift logs
- if: always()
- run: |
- docker ps -a
- docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
-
- swift-primary-summary:
- runs-on: ubuntu-latest-low
- needs: [changes,swift-primary-tests]
-
- if: always()
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.swift-primary-tests.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/openapi.yml b/.github/workflows/openapi.yml
deleted file mode 100644
index 9536fb1d98e..00000000000
--- a/.github/workflows/openapi.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-FileCopyrightText: 2024 Arthur Schiwon <blizzz@arthur-schiwon.de>
-# SPDX-License-Identifier: MIT
-
-name: OpenAPI
-
-on: pull_request
-
-permissions:
- contents: read
-
-concurrency:
- group: openapi-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- openapi:
- runs-on: ubuntu-latest
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Set up php
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: '8.2'
- extensions: ctype, curl, dom, fileinfo, gd, json, libxml, mbstring, openssl, pcntl, pdo, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlib
- coverage: none
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up dependencies
- run: composer i
-
- - name: OpenAPI checker
- run: build/openapi-checker.sh
diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml
deleted file mode 100644
index 0b1f4acb3b8..00000000000
--- a/.github/workflows/performance.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-# SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Performance testing
-on:
- pull_request:
-
-concurrency:
- group: performance-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- performance-testing:
- runs-on: ubuntu-latest
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
-
- strategy:
- fail-fast: false
- matrix:
- php-versions: ['8.1']
-
- name: performance-${{ matrix.php-versions }}
-
- steps:
- - name: Disabled on forks
- if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
- run: |
- echo 'Can not run performance tests on forks'
- exit 1
-
- - name: Checkout server before PR
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
- ref: ${{ github.event.pull_request.base.ref }}
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- run: |
- mkdir data
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
-
- php -S localhost:8080 &
- - name: Apply blueprint
- uses: icewind1991/blueprint@v0.1.2
- with:
- blueprint: tests/blueprints/basic.toml
- ref: ${{ github.event.pull_request.head.ref }}
-
- - name: Run before measurements
- uses: nextcloud/profiler@6801ee10fc80f10b444388fb6ca9b36ad8a2ea83
- with:
- run: |
- curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test
- curl -s -u test:test http://localhost:8080/remote.php/dav/files/test/test.txt
- curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test/many_files
- curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
- curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
- output: before.json
- profiler-branch: master
-
- - name: Apply PR
- run: |
- git remote add pr '${{ github.event.pull_request.head.repo.clone_url }}'
- git fetch pr '${{ github.event.pull_request.head.ref }}'
- git checkout -b 'pr/${{ github.event.pull_request.head.ref }}'
- git submodule update
-
- ./occ upgrade
-
- - name: Run after measurements
- id: compare
- uses: nextcloud/profiler@6801ee10fc80f10b444388fb6ca9b36ad8a2ea83
- with:
- run: |
- curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test
- curl -s -u test:test http://localhost:8080/remote.php/dav/files/test/test.txt
- curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test/many_files
- curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
- curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
- output: after.json
- profiler-branch: master
- compare-with: before.json
-
- - name: Upload profiles
- if: always()
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808
- with:
- name: profiles
- path: |
- before.json
- after.json
-
- - uses: actions/github-script@v7
- if: failure() && steps.compare.outcome == 'failure'
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- let comment = `Possible performance regression detected\n`;
- comment += `<details><summary>Show Output</summary>
-
- \`\`\`
- ${{ steps.compare.outputs.compare }}
- \`\`\`
-
- </details>`;
-
- github.rest.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: comment
- })
diff --git a/.github/workflows/phpunit-32bits.yml b/.github/workflows/phpunit-32bits.yml
deleted file mode 100644
index 3a5c84579bf..00000000000
--- a/.github/workflows/phpunit-32bits.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: PHPUnit 32bits
-
-on:
- pull_request:
- paths:
- - 'version.php'
- - '.github/workflows/phpunit-32bits.yml'
- workflow_dispatch:
- schedule:
- - cron: "15 1 * * 1-6"
-
-permissions:
- contents: read
-
-concurrency:
- group: phpunit-32bits-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- phpunit-32bits:
- runs-on: ubuntu-latest
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
-
- container: shivammathur/node:latest-i386
-
- strategy:
- matrix:
- php-versions: ['8.1','8.3']
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Install tools
- run: |
- sudo apt-get update
- sudo apt-get install -y ffmpeg imagemagick libmagickcore-6.q16-3-extra
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, openssl, pdo_sqlite, posix, sqlite, xml, zip, apcu
- coverage: none
- ini-file: development
- ini-values:
- apc.enabled=on, apc.enable_cli=on, disable_functions= # https://github.com/shivammathur/setup-php/discussions/573
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up Nextcloud
- env:
- DB_PORT: 4444
- run: |
- composer install
- mkdir data
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=autotest --database-pass=rootpassword --admin-user admin --admin-pass admin
- php -f index.php
-
- - name: PHPUnit
- run: composer run test -- --exclude-group PRIMARY-azure,PRIMARY-s3,PRIMARY-swift,Memcached,Redis,RoutingWeirdness
diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml
deleted file mode 100644
index 21575462274..00000000000
--- a/.github/workflows/phpunit-mariadb.yml
+++ /dev/null
@@ -1,142 +0,0 @@
-# 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: 2023-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: PHPUnit MariaDB
-
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-permissions:
- contents: read
-
-concurrency:
- group: phpunit-mariadb-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- phpunit-mariadb:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- strategy:
- matrix:
- php-versions: ['8.1']
- mariadb-versions: ['10.3', '10.6', '10.11', '11.4']
- include:
- - php-versions: '8.3'
- mariadb-versions: '10.11'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: MariaDB ${{ matrix.mariadb-versions }} (PHP ${{ matrix.php-versions }}) - database tests
-
- services:
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- mariadb:
- image: mariadb:${{ matrix.mariadb-versions }}
- ports:
- - 4444:3306/tcp
- env:
- MYSQL_ROOT_PASSWORD: rootpassword
- MYSQL_USER: oc_autotest
- MYSQL_PASSWORD: nextcloud
- MYSQL_DATABASE: oc_autotest
- options: --health-cmd="${{ matrix.mariadb-versions <= 10.4 && 'mysqladmin' || 'mariadb-admin'}} ping" --health-interval 5s --health-timeout 2s --health-retries 5
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up dependencies
- run: composer i
-
- - name: Enable ONLY_FULL_GROUP_BY MariaDB option
- run: |
- echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
- echo 'SELECT @@sql_mode;' | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
-
- - name: Set up Nextcloud
- env:
- DB_PORT: 4444
- run: |
- mkdir data
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: PHPUnit
- run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
-
- - name: Upload db code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.db.xml
- flags: phpunit-mariadb
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, phpunit-mariadb]
-
- if: always()
-
- name: phpunit-mariadb-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mariadb.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/phpunit-memcached.yml b/.github/workflows/phpunit-memcached.yml
deleted file mode 100644
index 93b6f5e0fe4..00000000000
--- a/.github/workflows/phpunit-memcached.yml
+++ /dev/null
@@ -1,126 +0,0 @@
-# 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: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: PHPUnit memcached
-
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-permissions:
- contents: read
-
-concurrency:
- group: phpunit-memcached-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src}}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- phpunit-memcached:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.2'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: Memcached (PHP ${{ matrix.php-versions }})
-
- services:
- memcached:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 11212:11212/tcp
- - 11212:11212/udp
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, memcached, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up dependencies
- run: composer i
-
- - name: Set up Nextcloud
- run: |
- mkdir data
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: PHPUnit memcached tests
- run: composer run test -- --group Memcache,Memcached ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
-
- - name: Upload code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.xml
- flags: phpunit-memcached
-
- - name: Print logs
- if: always()
- run: |
- cat data/nextcloud.log
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, phpunit-memcached]
-
- if: always()
-
- name: phpunit-memcached-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-memcached.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml
deleted file mode 100644
index 4f49646ab51..00000000000
--- a/.github/workflows/phpunit-mysql.yml
+++ /dev/null
@@ -1,147 +0,0 @@
-# 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: 2022-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: PHPUnit mysql
-
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-permissions:
- contents: read
-
-concurrency:
- group: phpunit-mysql-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src }}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- phpunit-mysql:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- strategy:
- matrix:
- php-versions: ['8.1']
- mysql-versions: ['8.0', '8.4']
- include:
- - mysql-versions: '8.0'
- php-versions: '8.3'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: MySQL ${{ matrix.mysql-versions }} (PHP ${{ matrix.php-versions }}) - database tests
-
- services:
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- mysql:
- image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
- ports:
- - 4444:3306/tcp
- env:
- MYSQL_ROOT_PASSWORD: rootpassword
- MYSQL_USER: oc_autotest
- MYSQL_PASSWORD: nextcloud
- MYSQL_DATABASE: oc_autotest
- options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up dependencies
- run: composer i
-
- - name: Enable ONLY_FULL_GROUP_BY MySQL option
- run: |
- echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
- echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
-
- - name: Set up Nextcloud
- env:
- DB_PORT: 4444
- run: |
- mkdir data
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: PHPUnit
- run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
-
- - name: Upload db code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.db.xml
- flags: phpunit-mysql
-
- - name: Print logs
- if: always()
- run: |
- cat data/nextcloud.log
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, phpunit-mysql]
-
- if: always()
-
- name: phpunit-mysql-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/phpunit-nodb.yml b/.github/workflows/phpunit-nodb.yml
deleted file mode 100644
index b05f3f4fc70..00000000000
--- a/.github/workflows/phpunit-nodb.yml
+++ /dev/null
@@ -1,131 +0,0 @@
-# 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: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-#
-# This is the testsuite running all non-database agnostic unit tests
-
-name: PHPUnit nodb
-
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-permissions:
- contents: read
-
-concurrency:
- group: phpunit-nodb-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src }}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- phpunit-nodb:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.2'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: No DB unit tests (PHP ${{ matrix.php-versions }})
-
- services:
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- # Required for tests that use pcntl
- ini-values: disable_functions=""
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up dependencies
- run: composer i
-
- - name: Set up Nextcloud
- run: |
- mkdir data
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: PHPUnit nodb testsuite
- run: composer run test -- --exclude-group DB,SLOWDB ${{ matrix.coverage && ' --coverage-clover ./clover.nodb.xml' || '' }}
-
- - name: Upload nodb code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.nodb.xml
- flags: phpunit-nodb
-
- - name: Print logs
- if: always()
- run: |
- cat data/nextcloud.log
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, phpunit-nodb]
-
- if: always()
-
- name: phpunit-nodb-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-nodb.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml
deleted file mode 100644
index 041d2175271..00000000000
--- a/.github/workflows/phpunit-oci.yml
+++ /dev/null
@@ -1,149 +0,0 @@
-# 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: 2022-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: PHPUnit OCI
-
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-permissions:
- contents: read
-
-concurrency:
- group: phpunit-oci-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src }}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- phpunit-oci:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false' && ${{ github.repository_owner != 'nextcloud-gmbh' }}
-
- strategy:
- matrix:
- oracle-versions: ['11']
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.3'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: Oracle ${{ matrix.oracle-versions }} (PHP ${{ matrix.php-versions }}) - database tests
-
- services:
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- oracle:
- image: ghcr.io/gvenzl/oracle-xe:${{ matrix.oracle-versions }}
-
- # Provide passwords and other environment variables to container
- env:
- ORACLE_RANDOM_PASSWORD: true
- APP_USER: oc_autotest
- APP_USER_PASSWORD: nextcloud
-
- # Forward Oracle port
- ports:
- - 4444:1521/tcp
-
- # Provide healthcheck script options for startup
- options: >-
- --health-cmd healthcheck.sh
- --health-interval 10s
- --health-timeout 5s
- --health-retries 10
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, oci8
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up dependencies
- run: composer i
-
- - name: Set up Nextcloud
- env:
- DB_PORT: 4444
- run: |
- mkdir data
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=oc_autotest --database-pass=nextcloud --admin-user admin --admin-pass admin
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: PHPUnit
- run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
-
- - name: Upload db code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.db.xml
- flags: phpunit-oci
-
- - name: Run repair steps
- run: |
- ./occ maintenance:repair --include-expensive
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, phpunit-oci]
-
- if: always()
-
- name: phpunit-oci-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.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
deleted file mode 100644
index b6d4436033f..00000000000
--- a/.github/workflows/phpunit-pgsql.yml
+++ /dev/null
@@ -1,146 +0,0 @@
-# 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: 2022-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: PHPUnit PostgreSQL
-
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-permissions:
- contents: read
-
-concurrency:
- group: phpunit-pgsql-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src }}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- phpunit-pgsql:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- strategy:
- matrix:
- php-versions: ['8.1']
- # To keep the matrix smaller we ignore PostgreSQL '13', '14', and '15' as we already test 12 and 16 as lower and upper bound
- postgres-versions: ['12', '16']
- include:
- - php-versions: '8.3'
- postgres-versions: '16'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: PostgreSQL ${{ matrix.postgres-versions }} (PHP ${{ matrix.php-versions }}) - database tests
-
- services:
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- postgres:
- image: ghcr.io/nextcloud/continuous-integration-postgres-${{ matrix.postgres-versions }}:latest
- ports:
- - 4444:5432/tcp
- env:
- POSTGRES_USER: root
- POSTGRES_PASSWORD: rootpassword
- POSTGRES_DB: nextcloud
- options: --mount type=tmpfs,destination=/var/lib/postgresql/data --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up dependencies
- run: composer i
-
- - name: Set up Nextcloud
- env:
- DB_PORT: 4444
- run: |
- mkdir data
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=pgsql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: PHPUnit database tests
- run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
-
- - name: Upload db code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.db.xml
- flags: phpunit-postgres
-
- - name: Run repair steps
- run: |
- ./occ maintenance:repair --include-expensive
-
- - name: Print logs
- if: always()
- run: |
- cat data/nextcloud.log
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, phpunit-pgsql]
-
- if: always()
-
- name: phpunit-pgsql-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.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
deleted file mode 100644
index 57d06c0c23a..00000000000
--- a/.github/workflows/phpunit-sqlite.yml
+++ /dev/null
@@ -1,130 +0,0 @@
-# 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: 2022-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-
-name: PHPUnit SQLite
-
-on:
- pull_request:
- schedule:
- - cron: "5 2 * * *"
-
-permissions:
- contents: read
-
-concurrency:
- group: phpunit-sqlite-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest-low
-
- outputs:
- src: ${{ steps.changes.outputs.src }}
-
- steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: changes
- continue-on-error: true
- with:
- filters: |
- src:
- - '.github/workflows/**'
- - '3rdparty/**'
- - '**/appinfo/**'
- - '**/lib/**'
- - '**/templates/**'
- - '**/tests/**'
- - 'vendor/**'
- - 'vendor-bin/**'
- - '.php-cs-fixer.dist.php'
- - 'composer.json'
- - 'composer.lock'
- - '**.php'
-
- phpunit-sqlite:
- runs-on: ubuntu-latest
-
- needs: changes
- if: needs.changes.outputs.src != 'false'
-
- strategy:
- matrix:
- php-versions: ['8.1', '8.2', '8.3']
- include:
- - php-versions: '8.1'
- coverage: ${{ github.event_name != 'pull_request' }}
-
- name: SQLite (PHP ${{ matrix.php-versions }})
-
- services:
- cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
- ports:
- - 6379:6379/tcp
- options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
-
- steps:
- - name: Checkout server
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- with:
- submodules: true
-
- - name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: ${{ matrix.php-versions }}
- # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
- extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
- coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
- ini-file: development
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Set up dependencies
- run: composer i
-
- - name: Set up Nextcloud
- run: |
- mkdir data
- cp tests/redis.config.php config/
- cp tests/preseed-config.php config/config.php
- ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
- php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
-
- - name: Nextcloud debug information
- run: ./occ app:list && echo "======= System config =======" && ./occ config:list system
-
- - name: PHPUnit database tests
- run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
-
- - name: Upload db code coverage
- if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@v4.1.1
- with:
- files: ./clover.db.xml
- flags: phpunit-sqlite
-
- - name: Print logs
- if: always()
- run: |
- cat data/nextcloud.log
-
- summary:
- permissions:
- contents: none
- runs-on: ubuntu-latest-low
- needs: [changes, phpunit-sqlite]
-
- if: always()
-
- name: phpunit-sqlite-summary
-
- steps:
- - name: Summary status
- run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi
diff --git a/.github/workflows/pr-feedback.yml b/.github/workflows/pr-feedback.yml
deleted file mode 100644
index 7b68226f89d..00000000000
--- a/.github/workflows/pr-feedback.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-# 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: 2023-2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-FileCopyrightText: 2023 Marcel Klehr <mklehr@gmx.net>
-# SPDX-FileCopyrightText: 2023 Joas Schilling <213943+nickvergessen@users.noreply.github.com>
-# SPDX-FileCopyrightText: 2023 Daniel Kesselberg <mail@danielkesselberg.de>
-# SPDX-FileCopyrightText: 2023 Florian Steffens <florian.steffens@nextcloud.com>
-# SPDX-License-Identifier: MIT
-
-name: 'Ask for feedback on PRs'
-on:
- schedule:
- - cron: '30 1 * * *'
-
-jobs:
- pr-feedback:
- runs-on: ubuntu-latest
- steps:
- - name: The get-github-handles-from-website action
- uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0
- id: scrape
- with:
- website: 'https://nextcloud.com/team/'
-
- - name: Get blocklist
- id: blocklist
- run: |
- blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -)
- echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT"
-
- - uses: marcelklehr/pr-feedback-action@1883b38a033fb16f576875e0cf45f98b857655c4
- with:
- feedback-message: |
- Hello there,
- Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.
-
- We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.
-
- Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6
-
- Thank you for contributing to Nextcloud and we hope to hear from you soon!
-
- (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: '2024-04-30'
- exempt-authors: '${{ steps.blocklist.outputs.blocklist }},${{ steps.scrape.outputs.users }},nextcloud-command,nextcloud-android-bot'
- exempt-bots: true
diff --git a/.github/workflows/reuse.yml b/.github/workflows/reuse.yml
deleted file mode 100644
index 031e80a8355..00000000000
--- a/.github/workflows/reuse.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-# 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: 2022 Free Software Foundation Europe e.V. <https://fsfe.org>
-#
-# SPDX-License-Identifier: CC0-1.0
-
-name: REUSE Compliance Check
-
-on: [pull_request]
-
-jobs:
- reuse-compliance-check:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: REUSE Compliance Check
- uses: fsfe/reuse-action@3ae3c6bdf1257ab19397fab11fd3312144692083 # v4.0.0
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
deleted file mode 100644
index cced0a2d468..00000000000
--- a/.github/workflows/stale.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Close stale issues
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "0 0 * * *"
-
-jobs:
- stale:
- runs-on: ubuntu-latest
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
-
- permissions:
- issues: write
-
- steps:
- - uses: actions/stale@v9
- with:
- repo-token: ${{ secrets.COMMAND_BOT_PAT }}
- stale-issue-message: >
- This issue has been automatically marked as stale because it has not had
- recent activity and seems to be missing some essential information.
- It will be closed if no further activity occurs. Thank you
- for your contributions.
- stale-issue-label: 'stale'
- only-labels: 'needs info'
- labels-to-remove-when-unstale: 'needs info,stale'
- exempt-issue-labels: '1. to develop,2. developing,3. to review,4. to release,security'
- days-before-stale: 30
- days-before-close: 14
- # debug-only: true
-
diff --git a/.github/workflows/static-code-analysis.yml b/.github/workflows/static-code-analysis.yml
deleted file mode 100644
index 729f5e75952..00000000000
--- a/.github/workflows/static-code-analysis.yml
+++ /dev/null
@@ -1,103 +0,0 @@
-# SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Psalm static code analysis
-
-on:
- pull_request:
-
-concurrency:
- group: static-code-analysis-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- static-code-analysis:
- runs-on: ubuntu-latest
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: '8.1'
- extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
- coverage: none
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Composer install
- run: composer i
-
- - name: Psalm
- run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --update-baseline --report=results.sarif
-
- - name: Show potential changes in Psalm baseline
- if: always()
- run: git diff -- . ':!lib/composer'
-
- - name: Upload Analysis results to GitHub
- if: always()
- uses: github/codeql-action/upload-sarif@v3
- with:
- sarif_file: results.sarif
-
- static-code-analysis-security:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: '8.1'
- extensions: ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
- coverage: none
-
- - name: Composer install
- run: composer i
-
- - name: Psalm taint analysis
- run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --report=results.sarif --taint-analysis
-
- - name: Upload Security Analysis results to GitHub
- if: always()
- uses: github/codeql-action/upload-sarif@v3
- with:
- sarif_file: results.sarif
-
- static-code-analysis-ocp:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- submodules: true
-
- - name: Set up php
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: '8.1'
- extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
- coverage: none
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Composer install
- run: composer i
-
- - name: Psalm
- run: composer run psalm:ci -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
-
- - name: Show potential changes in Psalm baseline
- if: always()
- run: git diff -- . ':!lib/composer'
diff --git a/.github/workflows/update-cacert-bundle.yml b/.github/workflows/update-cacert-bundle.yml
deleted file mode 100644
index bd268ed838d..00000000000
--- a/.github/workflows/update-cacert-bundle.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-# SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Update CA certificate bundle
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "5 2 * * *"
-
-jobs:
- update-ca-certificate-bundle:
- runs-on: ubuntu-latest
-
- strategy:
- fail-fast: false
- matrix:
- branches: ['master', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
-
- name: update-ca-certificate-bundle-${{ matrix.branches }}
-
- steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- ref: ${{ matrix.branches }}
- submodules: true
-
- - name: Download CA certificate bundle from curl
- run: curl --etag-compare build/ca-bundle-etag.txt --etag-save build/ca-bundle-etag.txt --output resources/config/ca-bundle.crt https://curl.se/ca/cacert.pem
-
- - name: Create Pull Request
- uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
- with:
- token: ${{ secrets.COMMAND_BOT_PAT }}
- commit-message: 'fix(security): Update CA certificate bundle'
- committer: GitHub <noreply@github.com>
- author: nextcloud-command <nextcloud-command@users.noreply.github.com>
- signoff: true
- branch: 'automated/noid/${{ matrix.branches }}-update-ca-cert-bundle'
- title: '[${{ matrix.branches }}] fix(security): Update CA certificate bundle'
- body: |
- Auto-generated update of CA certificate bundle from [https://curl.se/docs/caextract.html](https://curl.se/docs/caextract.html)
- labels: |
- dependencies
- 3. to review
- reviewers: ChristophWurst, miaulalala, nickvergessen
diff --git a/.github/workflows/update-code-signing-crl.yml b/.github/workflows/update-code-signing-crl.yml
deleted file mode 100644
index c19f471eab9..00000000000
--- a/.github/workflows/update-code-signing-crl.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Update code signing revocation list
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "5 2 * * *"
-
-jobs:
- update-code-signing-crl:
- runs-on: ubuntu-latest
-
- strategy:
- fail-fast: false
- matrix:
- branches: ['master', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
-
- name: update-code-signing-crl-${{ matrix.branches }}
-
- steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- ref: ${{ matrix.branches }}
- submodules: true
-
- - name: Download CRL file from Appstore repository
- run: curl --output resources/codesigning/root.crl https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/certificate/nextcloud.crl
-
- - name: Verify CRL is from CRT
- run: openssl crl -verify -in resources/codesigning/root.crl -CAfile resources/codesigning/root.crt -noout
-
- - name: Create Pull Request
- uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
- with:
- token: ${{ secrets.COMMAND_BOT_PAT }}
- commit-message: 'fix(security): Update code signing revocation list'
- committer: GitHub <noreply@github.com>
- author: nextcloud-command <nextcloud-command@users.noreply.github.com>
- signoff: true
- branch: 'automated/noid/${{ matrix.branches }}-update-code-signing-crl'
- title: '[${{ matrix.branches }}] fix(security): Update code signing revocation list'
- body: |
- Auto-generated update of code signing revocation list from [Appstore](https://github.com/nextcloud/appstore/commits/master/nextcloudappstore/certificate/nextcloud.crl)
- labels: |
- dependencies
- 3. to review
- reviewers: mgallien, miaulalala, nickvergessen
diff --git a/.github/workflows/update-psalm-baseline-approve-merge.yml b/.github/workflows/update-psalm-baseline-approve-merge.yml
deleted file mode 100644
index 980e0f78d8c..00000000000
--- a/.github/workflows/update-psalm-baseline-approve-merge.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Auto approve psalm baseline update
-
-on:
- pull_request_target:
- branches:
- - main
- - master
- - stable*
-
-permissions:
- contents: read
-
-concurrency:
- group: update-psalm-baseline-approve-merge-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- auto-approve-merge:
- if: github.actor == 'nextcloud-command'
- runs-on: ubuntu-latest-low
- permissions:
- # for hmarr/auto-approve-action to approve PRs
- pull-requests: write
- # for alexwilson/enable-github-automerge-action to approve PRs
- contents: write
-
- 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@bab4c71506bcd299fb350af63bb8e53f2940a599 # v2.0.0
- id: branchname
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
-
- # GitHub actions bot approve
- - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
- if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-psalm-baseline')
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
-
- # Enable GitHub auto merge
- - name: Auto merge
- uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # main
- if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-psalm-baseline')
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/update-psalm-baseline.yml b/.github/workflows/update-psalm-baseline.yml
deleted file mode 100644
index affcfe748b0..00000000000
--- a/.github/workflows/update-psalm-baseline.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-# SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: MIT
-name: Update Psalm baseline
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "5 2 * * *"
-
-jobs:
- update-psalm-baseline:
- runs-on: ubuntu-latest
-
- if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
-
- strategy:
- fail-fast: false
- matrix:
- branches: ['master', 'stable29', 'stable28', 'stable27']
-
- name: update-psalm-baseline-${{ matrix.branches }}
-
- steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- with:
- ref: ${{ matrix.branches }}
- submodules: true
-
- - name: Set up php
- uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
- with:
- php-version: '8.1'
- extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
- coverage: none
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Composer install
- run: composer install
-
- - name: Psalm
- run: composer run psalm:ci -- --monochrome --no-progress --output-format=text --update-baseline
- continue-on-error: true
-
- - name: Psalm OCP
- run: composer run psalm:ci -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
- continue-on-error: true
-
- - name: Reset composer
- run: |
- git clean -f lib/composer
- git checkout composer.json composer.lock lib/composer
-
- - name: Create Pull Request
- uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
- with:
- token: ${{ secrets.COMMAND_BOT_PAT }}
- commit-message: 'chore(tests): Update psalm baseline'
- committer: GitHub <noreply@github.com>
- author: nextcloud-command <nextcloud-command@users.noreply.github.com>
- signoff: true
- branch: 'automated/noid/${{ matrix.branches }}-update-psalm-baseline'
- title: '[${{ matrix.branches }}] Update psalm-baseline.xml'
- body: |
- Auto-generated update psalm-baseline.xml with fixed psalm warnings
- labels: |
- automated pr
- 3. to review
- team-reviewers: server-backend