mirror of
https://git.cloudron.io/cloudron/minio-app
synced 2025-09-13 08:19:12 +00:00
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2fbefac3a9 | ||
|
2bbf11f795 | ||
|
ca3aebef4a | ||
|
effb90c2ac | ||
|
e8972242ca | ||
|
e84ef0cddf | ||
|
594b45051d | ||
|
ed8e041180 | ||
|
f9c0870c59 | ||
|
550ea43e59 | ||
|
832f1f26a8 |
41
CHANGELOG
41
CHANGELOG
@@ -1801,3 +1801,44 @@ Improve replication performance. See (#12080, #12054, #12009) for more details.
|
|||||||
* helm-chart: Use minio service account for post-deploy job if available by @LinAnt in #17077
|
* helm-chart: Use minio service account for post-deploy job if available by @LinAnt in #17077
|
||||||
* put *msgp.Reader back to pool by @jiuker in #17156
|
* put *msgp.Reader back to pool by @jiuker in #17156
|
||||||
* add Err to BucketExists when NoSuchBucket by @jiuker in #17155
|
* add Err to BucketExists when NoSuchBucket by @jiuker in #17155
|
||||||
|
|
||||||
|
[3.5.1]
|
||||||
|
* Update minio to 2023-05-27T05-56-19Z
|
||||||
|
* [Changelog](https://github.com/minio/minio/releases/tag/RELEASE.2023-05-27T05-56-19Z)
|
||||||
|
* fix: leaking connections in JSON SQL with limited return by @klauspost in #17239
|
||||||
|
* before return make globalScannerMetrics.incTime call by @jiuker in #17230
|
||||||
|
* fix: return proper error if OIDC Discoverydoc fails to respond by @jiuker in #17242
|
||||||
|
* fix: increment counter when entry be skipped by @jiuker in #17237
|
||||||
|
* Freeze the s3 APIs until the notification sub-system initializes completely by @Praveenrajmani in #17182
|
||||||
|
* Add object parity in listing V2M and listing versions M by @vadmeste in #17238
|
||||||
|
* allow specification of path/virtual style bucket lookup in batch replication by @poornas in #17201
|
||||||
|
* fix: Avoid Income globalStats twice upon error by @jiuker in #17263
|
||||||
|
|
||||||
|
[3.5.2]
|
||||||
|
* Update minio to 2023-06-02T23-17-26Z
|
||||||
|
* [Changelog](https://github.com/minio/minio/releases/tag/RELEASE.2023-06-02T23-17-26Z)
|
||||||
|
* fix: on windows use FindClose close handler by @jiuker in #17306
|
||||||
|
* fix: cleanup empty multipart folders upon stale upload cleanup by @harshavardhana in #17312
|
||||||
|
* Revert s3 select simdjson reuse by @klauspost in #17310
|
||||||
|
* record err time when remote node is offline by @jiuker in #17262
|
||||||
|
* fix: proxy not set on subnet logger webhook sometimes by @anjalshireesh in #17320
|
||||||
|
* fix: time() returned function not being called as expected in globalSync() by @drivebyer in #17319
|
||||||
|
* fix: fail large content in DeleteMultipleObjects() early by @jiuker in #17321
|
||||||
|
|
||||||
|
[3.5.3]
|
||||||
|
* Update minio to 2023-06-09T07-32-12Z
|
||||||
|
* [Changelog](https://github.com/minio/minio/releases/tag/RELEASE.2023-06-09T07-32-12Z)
|
||||||
|
* fix: expMovingAvg is too small when startTime is zero by @jiuker in #17346
|
||||||
|
* log: Add a log when saving pool.bin fails by @vadmeste in #17338
|
||||||
|
* goroutines parser: Add --less flag to filter goroutines by @vadmeste in #17339
|
||||||
|
* only allow decryption of etag for only sse-s3 by @harshavardhana in #17335
|
||||||
|
* allow quota enforcement to rely on older values by @harshavardhana in #17351
|
||||||
|
|
||||||
|
[3.5.4]
|
||||||
|
* Update minio to 2023-06-16T02-41-06Z
|
||||||
|
* [Changelog](https://github.com/minio/minio/releases/tag/RELEASE.2023-06-16T02-41-06Z)
|
||||||
|
* return InvalidRequest when no parts are provided by @harshavardhana in #17395
|
||||||
|
* service accounts are allowed to have no expiration by @harshavardhana in #17397
|
||||||
|
* return 204 status code for DeleteBucketTagging by @harshavardhana in #17400
|
||||||
|
* listen: Only error out if not able to bind any interface by @vadmeste in #17353
|
||||||
|
* fix: protect ReplicationStats against concurrent map iteration and write crash by @klauspost in #17403
|
||||||
|
@@ -5,8 +5,8 @@
|
|||||||
"description": "file://DESCRIPTION.md",
|
"description": "file://DESCRIPTION.md",
|
||||||
"changelog": "file://CHANGELOG",
|
"changelog": "file://CHANGELOG",
|
||||||
"tagline": "Distributed object storage",
|
"tagline": "Distributed object storage",
|
||||||
"version": "3.5.0",
|
"version": "3.5.4",
|
||||||
"upstreamVersion": "2023-05-18T00-05-36Z",
|
"upstreamVersion": "2023-06-16T02-41-06Z",
|
||||||
"healthCheckPath": "/minio/login",
|
"healthCheckPath": "/minio/login",
|
||||||
"memoryLimit": 805306368,
|
"memoryLimit": 805306368,
|
||||||
"httpPort": 8000,
|
"httpPort": 8000,
|
||||||
|
@@ -3,7 +3,7 @@ FROM cloudron/base:4.0.0@sha256:31b195ed0662bdb06a6e8a5ddbedb6f191ce92e8bee04c03
|
|||||||
RUN mkdir -p /app/code
|
RUN mkdir -p /app/code
|
||||||
WORKDIR /app/code
|
WORKDIR /app/code
|
||||||
|
|
||||||
ARG VERSION=RELEASE.2023-05-04T21-44-30Z
|
ARG VERSION=RELEASE.2023-06-16T02-41-06Z
|
||||||
|
|
||||||
# sometimes here https://dl.min.io/server/minio/release/linux-amd64/archive/
|
# sometimes here https://dl.min.io/server/minio/release/linux-amd64/archive/
|
||||||
# RUN wget https://dl.min.io/server/minio/release/linux-amd64/minio.${VERSION} -O /app/code/minio && chmod +x /app/code/minio
|
# RUN wget https://dl.min.io/server/minio/release/linux-amd64/minio.${VERSION} -O /app/code/minio && chmod +x /app/code/minio
|
||||||
|
45
test/package-lock.json
generated
45
test/package-lock.json
generated
@@ -9,11 +9,10 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chromedriver": "^112.0.1",
|
"chromedriver": "^114.0.1",
|
||||||
"delay": "^5.0.0",
|
|
||||||
"expect.js": "^0.3.1",
|
"expect.js": "^0.3.1",
|
||||||
"mocha": "^10.2.0",
|
"mocha": "^10.2.0",
|
||||||
"selenium-webdriver": "^4.9.0",
|
"selenium-webdriver": "^4.10.0",
|
||||||
"superagent": "^8.0.9"
|
"superagent": "^8.0.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -229,9 +228,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/chromedriver": {
|
"node_modules/chromedriver": {
|
||||||
"version": "112.0.1",
|
"version": "114.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-112.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-114.0.1.tgz",
|
||||||
"integrity": "sha512-ieQzvellbtPY4MUrFzzayC1bZa/HoBsGXejUQJhAPWcYALxtkjUZNUYWbojMjIzf8iIhVda9VvdXiRKqdlN7ow==",
|
"integrity": "sha512-Srkyt7xv+RL9aSNVkmARm0tAfw84fIBKge9c1MCTiHfW0tjuNFdhKVlgD0TmPmwSKOeFJrTdd1Flf2hGWWKsUw==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@testim/chrome-version": "^1.1.3",
|
"@testim/chrome-version": "^1.1.3",
|
||||||
@@ -383,17 +382,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
|
||||||
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
|
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
|
||||||
},
|
},
|
||||||
"node_modules/delay": {
|
|
||||||
"version": "5.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz",
|
|
||||||
"integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/delayed-stream": {
|
"node_modules/delayed-stream": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
@@ -1202,9 +1190,9 @@
|
|||||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||||
},
|
},
|
||||||
"node_modules/selenium-webdriver": {
|
"node_modules/selenium-webdriver": {
|
||||||
"version": "4.9.0",
|
"version": "4.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.10.0.tgz",
|
||||||
"integrity": "sha512-QGaPoREo7sgOVhTiAvCasoi1f4ruTaJDtp0RKNFIbfyns5smK5+iCwnRTIPXb0R3CAYdaqUXd6BHduh37DorzQ==",
|
"integrity": "sha512-hSQPw6jgc+ej/UEcdQPG/iBwwMeCEgZr9HByY/J8ToyXztEqXzU9aLsIyrlj1BywBcStO4JQK/zMUWWrV8+riA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
"tmp": "^0.2.1",
|
"tmp": "^0.2.1",
|
||||||
@@ -1720,9 +1708,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"chromedriver": {
|
"chromedriver": {
|
||||||
"version": "112.0.1",
|
"version": "114.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-112.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-114.0.1.tgz",
|
||||||
"integrity": "sha512-ieQzvellbtPY4MUrFzzayC1bZa/HoBsGXejUQJhAPWcYALxtkjUZNUYWbojMjIzf8iIhVda9VvdXiRKqdlN7ow==",
|
"integrity": "sha512-Srkyt7xv+RL9aSNVkmARm0tAfw84fIBKge9c1MCTiHfW0tjuNFdhKVlgD0TmPmwSKOeFJrTdd1Flf2hGWWKsUw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@testim/chrome-version": "^1.1.3",
|
"@testim/chrome-version": "^1.1.3",
|
||||||
"axios": "^1.2.1",
|
"axios": "^1.2.1",
|
||||||
@@ -1837,11 +1825,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
|
||||||
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
|
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
|
||||||
},
|
},
|
||||||
"delay": {
|
|
||||||
"version": "5.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz",
|
|
||||||
"integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw=="
|
|
||||||
},
|
|
||||||
"delayed-stream": {
|
"delayed-stream": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
@@ -2417,9 +2400,9 @@
|
|||||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||||
},
|
},
|
||||||
"selenium-webdriver": {
|
"selenium-webdriver": {
|
||||||
"version": "4.9.0",
|
"version": "4.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.10.0.tgz",
|
||||||
"integrity": "sha512-QGaPoREo7sgOVhTiAvCasoi1f4ruTaJDtp0RKNFIbfyns5smK5+iCwnRTIPXb0R3CAYdaqUXd6BHduh37DorzQ==",
|
"integrity": "sha512-hSQPw6jgc+ej/UEcdQPG/iBwwMeCEgZr9HByY/J8ToyXztEqXzU9aLsIyrlj1BywBcStO4JQK/zMUWWrV8+riA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
"tmp": "^0.2.1",
|
"tmp": "^0.2.1",
|
||||||
|
@@ -9,11 +9,10 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chromedriver": "^112.0.1",
|
"chromedriver": "^114.0.1",
|
||||||
"delay": "^5.0.0",
|
|
||||||
"expect.js": "^0.3.1",
|
"expect.js": "^0.3.1",
|
||||||
"mocha": "^10.2.0",
|
"mocha": "^10.2.0",
|
||||||
"selenium-webdriver": "^4.9.0",
|
"selenium-webdriver": "^4.10.0",
|
||||||
"superagent": "^8.0.9"
|
"superagent": "^8.0.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
18
test/test.js
18
test/test.js
@@ -11,12 +11,12 @@
|
|||||||
|
|
||||||
require('chromedriver');
|
require('chromedriver');
|
||||||
|
|
||||||
const delay = require('delay'),
|
const execSync = require('child_process').execSync,
|
||||||
execSync = require('child_process').execSync,
|
|
||||||
expect = require('expect.js'),
|
expect = require('expect.js'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
path = require('path'),
|
path = require('path'),
|
||||||
superagent = require('superagent'),
|
superagent = require('superagent'),
|
||||||
|
timers = require('timers/promises'),
|
||||||
{ Builder, By, until } = require('selenium-webdriver'),
|
{ Builder, By, until } = require('selenium-webdriver'),
|
||||||
{ Options } = require('selenium-webdriver/chrome');
|
{ Options } = require('selenium-webdriver/chrome');
|
||||||
|
|
||||||
@@ -56,13 +56,13 @@ describe('Application life cycle test', function () {
|
|||||||
await browser.findElement(By.id('secretKey')).sendKeys(secretKey);
|
await browser.findElement(By.id('secretKey')).sendKeys(secretKey);
|
||||||
await browser.findElement(By.xpath('//button[@id="do-login"]')).click();
|
await browser.findElement(By.xpath('//button[@id="do-login"]')).click();
|
||||||
await waitForElement(By.xpath('//span[contains(text(), "Buckets")]'));
|
await waitForElement(By.xpath('//span[contains(text(), "Buckets")]'));
|
||||||
await delay(5000);
|
await timers.setTimeout(5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function logout() {
|
async function logout() {
|
||||||
await browser.get(`https://${app.fqdn}/`);
|
await browser.get(`https://${app.fqdn}/`);
|
||||||
await waitForElement(By.xpath('//span[contains(text(), "Buckets")]'));
|
await waitForElement(By.xpath('//span[contains(text(), "Buckets")]'));
|
||||||
const button = await browser.findElement(By.xpath('//div/span[contains(text(), "Sign Out")]'));
|
const button = await browser.findElement(By.xpath('//button[@id="sign-out"]'));
|
||||||
await browser.executeScript('arguments[0].scrollIntoView(false)', button);
|
await browser.executeScript('arguments[0].scrollIntoView(false)', button);
|
||||||
await button.click();
|
await button.click();
|
||||||
await waitForElement(By.id('accessKey'));
|
await waitForElement(By.id('accessKey'));
|
||||||
@@ -76,7 +76,7 @@ describe('Application life cycle test', function () {
|
|||||||
await browser.findElement(By.xpath('//input[@id="bucket-name"]')).sendKeys(BUCKET);
|
await browser.findElement(By.xpath('//input[@id="bucket-name"]')).sendKeys(BUCKET);
|
||||||
await browser.findElement(By.xpath('//button[@id="create-bucket"]')).click();
|
await browser.findElement(By.xpath('//button[@id="create-bucket"]')).click();
|
||||||
await waitForElement(By.xpath(`//h1[contains(text(), "${BUCKET}")]`));
|
await waitForElement(By.xpath(`//h1[contains(text(), "${BUCKET}")]`));
|
||||||
await delay(5000);
|
await timers.setTimeout(5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function checkBucket() {
|
async function checkBucket() {
|
||||||
@@ -99,7 +99,7 @@ describe('Application life cycle test', function () {
|
|||||||
xit('build app', function () { execSync('cloudron build', EXEC_ARGS); });
|
xit('build app', function () { execSync('cloudron build', EXEC_ARGS); });
|
||||||
it('install app', async function () {
|
it('install app', async function () {
|
||||||
execSync(`cloudron install --location ${LOCATION} --secondary-domains API_SERVER_DOMAIN=${LOCATION}-api`, EXEC_ARGS);
|
execSync(`cloudron install --location ${LOCATION} --secondary-domains API_SERVER_DOMAIN=${LOCATION}-api`, EXEC_ARGS);
|
||||||
await delay(10000);
|
await timers.setTimeout(10000);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can get app information', getAppInfo);
|
it('can get app information', getAppInfo);
|
||||||
@@ -118,7 +118,7 @@ describe('Application life cycle test', function () {
|
|||||||
fs.writeFileSync('/tmp/env.sh', data);
|
fs.writeFileSync('/tmp/env.sh', data);
|
||||||
execSync(`cloudron push --app ${app.id} /tmp/env.sh /app/data/env.sh`, EXEC_ARGS);
|
execSync(`cloudron push --app ${app.id} /tmp/env.sh /app/data/env.sh`, EXEC_ARGS);
|
||||||
execSync(`cloudron restart --app ${app.id}`, EXEC_ARGS);
|
execSync(`cloudron restart --app ${app.id}`, EXEC_ARGS);
|
||||||
await delay(10000);
|
await timers.setTimeout(10000);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can restart app', function () { execSync(`cloudron restart --app ${app.id}`, EXEC_ARGS); });
|
it('can restart app', function () { execSync(`cloudron restart --app ${app.id}`, EXEC_ARGS); });
|
||||||
@@ -136,7 +136,7 @@ describe('Application life cycle test', function () {
|
|||||||
execSync('cloudron install --location ' + LOCATION, EXEC_ARGS);
|
execSync('cloudron install --location ' + LOCATION, EXEC_ARGS);
|
||||||
getAppInfo();
|
getAppInfo();
|
||||||
execSync(`cloudron restore --backup ${backups[0].id} --app ${app.id}`, EXEC_ARGS);
|
execSync(`cloudron restore --backup ${backups[0].id} --app ${app.id}`, EXEC_ARGS);
|
||||||
await delay(10000);
|
await timers.setTimeout(10000);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can login', login.bind(null, 'minioakey', 'minioskey'));
|
it('can login', login.bind(null, 'minioakey', 'minioskey'));
|
||||||
@@ -148,7 +148,7 @@ describe('Application life cycle test', function () {
|
|||||||
it('move to different location', async function () {
|
it('move to different location', async function () {
|
||||||
browser.manage().deleteAllCookies();
|
browser.manage().deleteAllCookies();
|
||||||
execSync('cloudron configure --location ' + LOCATION + '2', EXEC_ARGS);
|
execSync('cloudron configure --location ' + LOCATION + '2', EXEC_ARGS);
|
||||||
await delay(10000);
|
await timers.setTimeout(10000);
|
||||||
});
|
});
|
||||||
it('can get app information', getAppInfo);
|
it('can get app information', getAppInfo);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user