You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							124 lines
						
					
					
						
							4.0 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							124 lines
						
					
					
						
							4.0 KiB
						
					
					
				| # SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors | |
| # SPDX-License-Identifier: MIT | |
| name: PHPUnit primary object store | |
| on: | |
|   pull_request: | |
|   schedule: | |
|     - cron: "15 2 * * *" | |
|  | |
| permissions: | |
|   contents: read | |
|  | |
| concurrency: | |
|   group: phpunit-object-store-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/**' | |
|               - '**/appinfo/**' | |
|               - '**/lib/**' | |
|               - '**/templates/**' | |
|               - '**/tests/**' | |
|               - 'vendor/**' | |
|               - 'vendor-bin/**' | |
|               - '.php-cs-fixer.dist.php' | |
|               - 'composer.json' | |
|               - 'composer.lock' | |
|               - '**.php'             | |
|  | |
|   object-store-primary-tests-minio: | |
|     runs-on: ubuntu-latest | |
|     needs: changes | |
|  | |
|     if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }} | |
|  | |
|     strategy: | |
|       fail-fast: false | |
|       matrix: | |
|         php-versions: ['8.1'] | |
|         key: ['s3', 's3-multibucket'] | |
|  | |
|     name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio | |
|  | |
|     services: | |
|       cache: | |
|         image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images] | |
|         ports: | |
|           - 6379:6379/tcp | |
|         options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
|  | |
|       minio: | |
|         image: bitnami/minio@sha256:50cec18ac4184af4671a78aedd5554942c8ae105d51a465fa82037949046da01 # v2025.4.22 | |
|         env: | |
|           MINIO_ROOT_USER: nextcloud | |
|           MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ= | |
|           MINIO_DEFAULT_BUCKETS: nextcloud | |
|         ports: | |
|           - "9000:9000" | |
|  | |
|     steps: | |
|       - name: Checkout server | |
|         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
|         with: | |
|           persist-credentials: false | |
|           submodules: true | |
|  | |
|       - name: Set up php ${{ matrix.php-versions }} | |
|         uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0 | |
|         with: | |
|           php-version: ${{ matrix.php-versions }} | |
|           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 | |
|         env: | |
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
|  | |
|       - name: Set up Nextcloud | |
|         env: | |
|           OBJECT_STORE: ${{ matrix.key }} | |
|           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           | |
|  | |
|       - 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:db | |
|  | |
|       - 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           | |
|  | |
|  | |
|   object-store-primary-summary: | |
|     runs-on: ubuntu-latest-low | |
|     needs: [changes,object-store-primary-tests-minio] | |
|  | |
|     if: always() | |
|  | |
|     steps: | |
|       - name: Summary status | |
|         run: if ${{ needs.changes.outputs.src != 'false' && needs.object-store-primary-tests-minio.result != 'success' }}; then exit 1; fi
 |