committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 371 additions and 146 deletions
-
124.github/workflows/s3-external.yml
-
330apps/files_external/lib/Lib/Storage/AmazonS3.php
-
6apps/files_external/tests/Storage/Amazons3Test.php
-
43apps/files_external/tests/Storage/VersionedAmazonS3Test.php
-
9lib/private/Files/Cache/Watcher.php
-
2lib/private/Files/ObjectStore/S3ObjectTrait.php
-
3tests/lib/Files/Storage/Storage.php
@ -0,0 +1,124 @@ |
|||
name: S3 External storage |
|||
on: |
|||
push: |
|||
branches: |
|||
- master |
|||
- stable* |
|||
paths: |
|||
- 'apps/files_external/**' |
|||
pull_request: |
|||
paths: |
|||
- 'apps/files_external/**' |
|||
|
|||
env: |
|||
APP_NAME: files_external |
|||
|
|||
jobs: |
|||
s3-external-tests-minio: |
|||
runs-on: ubuntu-latest |
|||
|
|||
strategy: |
|||
# do not stop on another job's failure |
|||
fail-fast: false |
|||
matrix: |
|||
php-versions: ['7.4', '8.0'] |
|||
|
|||
name: php${{ matrix.php-versions }}-minio |
|||
|
|||
services: |
|||
minio: |
|||
env: |
|||
MINIO_ACCESS_KEY: minio |
|||
MINIO_SECRET_KEY: minio123 |
|||
image: bitnami/minio:2021.10.6 |
|||
ports: |
|||
- "9000:9000" |
|||
|
|||
steps: |
|||
- name: Checkout server |
|||
uses: actions/checkout@v2 |
|||
with: |
|||
submodules: true |
|||
|
|||
- name: Set up php ${{ matrix.php-versions }} |
|||
uses: shivammathur/setup-php@v2 |
|||
with: |
|||
php-version: ${{ matrix.php-versions }} |
|||
tools: phpunit |
|||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd |
|||
|
|||
- 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 |
|||
./occ app:enable --force ${{ env.APP_NAME }} |
|||
php -S localhost:8080 & |
|||
- name: PHPUnit |
|||
run: | |
|||
echo "<?php return ['run' => true,'hostname' => 'localhost','key' => 'minio','secret' => 'minio123', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php |
|||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/Amazons3Test.php |
|||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/VersionedAmazonS3Test.php |
|||
- name: S3 logs |
|||
if: always() |
|||
run: | |
|||
docker ps -a |
|||
docker logs $(docker ps -aq) |
|||
s3-external-tests-localstack: |
|||
runs-on: ubuntu-latest |
|||
|
|||
strategy: |
|||
# do not stop on another job's failure |
|||
fail-fast: false |
|||
matrix: |
|||
php-versions: ['7.4', '8.0'] |
|||
|
|||
name: php${{ matrix.php-versions }}-localstack |
|||
|
|||
services: |
|||
minio: |
|||
env: |
|||
SERVICES: s3 |
|||
DEBUG: 1 |
|||
image: localstack/localstack:0.12.7 |
|||
ports: |
|||
- "4566:4566" |
|||
|
|||
steps: |
|||
- name: Checkout server |
|||
uses: actions/checkout@v2 |
|||
with: |
|||
submodules: true |
|||
|
|||
- name: Set up php ${{ matrix.php-versions }} |
|||
uses: shivammathur/setup-php@v2 |
|||
with: |
|||
php-version: ${{ matrix.php-versions }} |
|||
tools: phpunit |
|||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd |
|||
|
|||
- 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 |
|||
./occ app:enable --force ${{ env.APP_NAME }} |
|||
php -S localhost:8080 & |
|||
- name: PHPUnit |
|||
run: | |
|||
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/${{ env.APP_NAME }}/tests/config.amazons3.php |
|||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/Amazons3Test.php |
|||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/VersionedAmazonS3Test.php |
|||
- name: S3 logs |
|||
if: always() |
|||
run: | |
|||
docker ps -a |
|||
docker logs $(docker ps -aq) |
|||
|
|||
s3-external-summary: |
|||
runs-on: ubuntu-latest |
|||
needs: [s3-external-tests-minio, s3-external-tests-localstack] |
|||
|
|||
if: always() |
|||
|
|||
steps: |
|||
- name: Summary status |
|||
run: if ${{ needs.s3-external-tests-minio.result != 'success' }} || ${{ needs.s3-external-tests-localstack.result != 'success' }}; then exit 1; fi |
|||
@ -0,0 +1,43 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
/** |
|||
* @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
*/ |
|||
|
|||
namespace OCA\Files_External\Tests\Storage; |
|||
|
|||
/** |
|||
* @group DB |
|||
*/ |
|||
class VersionedAmazonS3Test extends Amazons3Test { |
|||
protected function setUp(): void { |
|||
parent::setUp(); |
|||
try { |
|||
$this->instance->getConnection()->putBucketVersioning([ |
|||
'Bucket' => $this->instance->getBucket(), |
|||
'VersioningConfiguration' => [ |
|||
'Status' => 'Enabled', |
|||
], |
|||
]); |
|||
} catch (\Exception $e) { |
|||
$this->markTestSkipped("s3 backend doesn't seem to support versioning"); |
|||
} |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue