mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-12 14:30:19 -05:00
Merge branch 'master' into space-id
This commit is contained in:
+1
-1
@@ -3,5 +3,5 @@ CORE_COMMITID=f1e0bf08b898c7300d4b294c8371f4025d9d99b8
|
||||
CORE_BRANCH=master
|
||||
|
||||
# The test runner source for UI tests
|
||||
WEB_COMMITID=06c1383810b710925149b3b51f426315cca8ed67
|
||||
WEB_COMMITID=e85420c0e3f9e165832474331ff5797e471d2bc7
|
||||
WEB_BRANCH=master
|
||||
|
||||
+137
-107
@@ -40,6 +40,12 @@ THEGEEKLAB_DRONE_GITHUB_COMMENT = "thegeeklab/drone-github-comment:1"
|
||||
DEFAULT_PHP_VERSION = "7.4"
|
||||
DEFAULT_NODEJS_VERSION = "14"
|
||||
|
||||
dirs = {
|
||||
# relative paths from /drone/src
|
||||
"core": "oc10/testrunner",
|
||||
"testing_app": "oc10/testing",
|
||||
}
|
||||
|
||||
# configuration
|
||||
config = {
|
||||
"modules": [
|
||||
@@ -147,18 +153,6 @@ pipelineVolumeGo = \
|
||||
"temp": {},
|
||||
}
|
||||
|
||||
stepVolumeOC10Tests = \
|
||||
{
|
||||
"name": "oC10Tests",
|
||||
"path": "/srv/app",
|
||||
}
|
||||
|
||||
pipelineVolumeOC10Tests = \
|
||||
{
|
||||
"name": "oC10Tests",
|
||||
"temp": {},
|
||||
}
|
||||
|
||||
def pipelineDependsOn(pipeline, dependant_pipelines):
|
||||
if "depends_on" in pipeline.keys():
|
||||
pipeline["depends_on"] = pipeline["depends_on"] + getPipelineNames(dependant_pipelines)
|
||||
@@ -203,6 +197,7 @@ def main(ctx):
|
||||
cancelPreviousBuilds() + \
|
||||
yarnCache(ctx) + \
|
||||
[buildOcisBinaryForTesting(ctx)] + \
|
||||
cacheCoreReposForTesting(ctx) + \
|
||||
testOcisModules(ctx) + \
|
||||
testPipelines(ctx)
|
||||
|
||||
@@ -223,6 +218,18 @@ def main(ctx):
|
||||
testPipelines(ctx),
|
||||
),
|
||||
)
|
||||
test_pipelines.append(
|
||||
pipelineDependsOn(
|
||||
purgeBuildArtifactCache(ctx, "testrunner"),
|
||||
testPipelines(ctx),
|
||||
),
|
||||
)
|
||||
test_pipelines.append(
|
||||
pipelineDependsOn(
|
||||
purgeBuildArtifactCache(ctx, "testing_app"),
|
||||
testPipelines(ctx),
|
||||
),
|
||||
)
|
||||
|
||||
pipelines = test_pipelines + build_release_pipelines + build_release_helpers
|
||||
|
||||
@@ -441,6 +448,28 @@ def buildOcisBinaryForTesting(ctx):
|
||||
"volumes": [pipelineVolumeGo],
|
||||
}
|
||||
|
||||
def cacheCoreReposForTesting(ctx):
|
||||
return [{
|
||||
"kind": "pipeline",
|
||||
"type": "docker",
|
||||
"name": "cache_core_repos_for_testing",
|
||||
"platform": {
|
||||
"os": "linux",
|
||||
"arch": "amd64",
|
||||
},
|
||||
"steps": skipIfUnchanged(ctx, "acceptance-tests") + # skip for those pipelines where core repos are not needed
|
||||
cloneCoreRepos() +
|
||||
rebuildBuildArtifactCache(ctx, "testrunner", dirs["core"]) +
|
||||
rebuildBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]),
|
||||
"trigger": {
|
||||
"ref": [
|
||||
"refs/heads/master",
|
||||
"refs/tags/v*",
|
||||
"refs/pull/**",
|
||||
],
|
||||
},
|
||||
}]
|
||||
|
||||
def uploadScanResults(ctx):
|
||||
sonar_env = {
|
||||
"SONAR_TOKEN": {
|
||||
@@ -546,36 +575,41 @@ def localApiTests(ctx, storage, suite, accounts_hash_difficulty = 4):
|
||||
"os": "linux",
|
||||
"arch": "amd64",
|
||||
},
|
||||
"steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
|
||||
ocisServer(storage, accounts_hash_difficulty, [stepVolumeOC10Tests]) +
|
||||
cloneCoreRepos() + [
|
||||
{
|
||||
"name": "localApiTests-%s-%s" % (suite, storage),
|
||||
"image": OC_CI_PHP % DEFAULT_PHP_VERSION,
|
||||
"environment": {
|
||||
"TEST_WITH_GRAPH_API": "true",
|
||||
"PATH_TO_OCIS": "/drone/src",
|
||||
"PATH_TO_CORE": "/srv/app/testrunner",
|
||||
"TEST_SERVER_URL": "https://ocis-server:9200",
|
||||
"OCIS_REVA_DATA_ROOT": "%s" % ("/srv/app/tmp/ocis/owncloud/data/" if storage == "owncloud" else ""),
|
||||
"SKELETON_DIR": "/srv/app/tmp/testing/data/apiSkeleton",
|
||||
"OCIS_SKELETON_STRATEGY": "%s" % ("copy" if storage == "owncloud" else "upload"),
|
||||
"TEST_OCIS": "true",
|
||||
"SEND_SCENARIO_LINE_REFERENCES": "true",
|
||||
"STORAGE_DRIVER": storage,
|
||||
"BEHAT_SUITE": suite,
|
||||
"BEHAT_FILTER_TAGS": "~@skip&&~@skipOnGraph&&~@skipOnOcis-%s-Storage" % ("OC" if storage == "owncloud" else "OCIS"),
|
||||
"EXPECTED_FAILURES_FILE": "/drone/src/tests/acceptance/expected-failures-localAPI-on-%s-storage.md" % (storage.upper()),
|
||||
"UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0,
|
||||
},
|
||||
"commands": [
|
||||
"make test-acceptance-api",
|
||||
],
|
||||
"volumes": [stepVolumeOC10Tests],
|
||||
},
|
||||
] + failEarly(ctx, early_fail),
|
||||
"steps": skipIfUnchanged(ctx, "acceptance-tests") +
|
||||
restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
|
||||
ocisServer(storage, accounts_hash_difficulty) +
|
||||
restoreBuildArtifactCache(ctx, "testrunner", dirs["core"]) +
|
||||
restoreBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]) +
|
||||
[
|
||||
{
|
||||
"name": "localApiTests-%s-%s" % (suite, storage),
|
||||
"image": OC_CI_PHP % DEFAULT_PHP_VERSION,
|
||||
"environment": {
|
||||
"TEST_WITH_GRAPH_API": "true",
|
||||
"PATH_TO_OCIS": "/drone/src",
|
||||
"PATH_TO_CORE": "/drone/src/%s" % dirs["core"],
|
||||
"TEST_SERVER_URL": "https://ocis-server:9200",
|
||||
"OCIS_REVA_DATA_ROOT": "%s" % ("/srv/app/tmp/ocis/owncloud/data/" if storage == "owncloud" else ""),
|
||||
"SKELETON_DIR": "%s/data/apiSkeleton" % dirs["testing_app"],
|
||||
"OCIS_SKELETON_STRATEGY": "%s" % ("copy" if storage == "owncloud" else "upload"),
|
||||
"TEST_OCIS": "true",
|
||||
"SEND_SCENARIO_LINE_REFERENCES": "true",
|
||||
"STORAGE_DRIVER": storage,
|
||||
"BEHAT_SUITE": suite,
|
||||
"BEHAT_FILTER_TAGS": "~@skip&&~@skipOnGraph&&~@skipOnOcis-%s-Storage" % ("OC" if storage == "owncloud" else "OCIS"),
|
||||
"EXPECTED_FAILURES_FILE": "/drone/src/tests/acceptance/expected-failures-localAPI-on-%s-storage.md" % (storage.upper()),
|
||||
"UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0,
|
||||
},
|
||||
"commands": [
|
||||
"pwd",
|
||||
"ls -la",
|
||||
"make test-acceptance-api",
|
||||
],
|
||||
},
|
||||
] + failEarly(ctx, early_fail),
|
||||
"services": redisForOCStorage(storage),
|
||||
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]),
|
||||
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]) +
|
||||
getPipelineNames(cacheCoreReposForTesting(ctx)),
|
||||
"trigger": {
|
||||
"ref": [
|
||||
"refs/heads/master",
|
||||
@@ -583,7 +617,6 @@ def localApiTests(ctx, storage, suite, accounts_hash_difficulty = 4):
|
||||
"refs/pull/**",
|
||||
],
|
||||
},
|
||||
"volumes": [pipelineVolumeOC10Tests],
|
||||
}
|
||||
|
||||
def cs3ApiTests(ctx, storage, accounts_hash_difficulty = 4):
|
||||
@@ -631,37 +664,40 @@ def coreApiTests(ctx, part_number = 1, number_of_parts = 1, storage = "ocis", ac
|
||||
"os": "linux",
|
||||
"arch": "amd64",
|
||||
},
|
||||
"steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
|
||||
ocisServer(storage, accounts_hash_difficulty, [stepVolumeOC10Tests]) +
|
||||
cloneCoreRepos() + [
|
||||
{
|
||||
"name": "oC10ApiTests-%s-storage-%s" % (storage, part_number),
|
||||
"image": OC_CI_PHP % DEFAULT_PHP_VERSION,
|
||||
"environment": {
|
||||
"TEST_WITH_GRAPH_API": "true",
|
||||
"PATH_TO_OCIS": "/drone/src",
|
||||
"PATH_TO_CORE": "/srv/app/testrunner",
|
||||
"TEST_SERVER_URL": "https://ocis-server:9200",
|
||||
"OCIS_REVA_DATA_ROOT": "%s" % ("/srv/app/tmp/ocis/owncloud/data/" if storage == "owncloud" else ""),
|
||||
"SKELETON_DIR": "/srv/app/tmp/testing/data/apiSkeleton",
|
||||
"OCIS_SKELETON_STRATEGY": "%s" % ("copy" if storage == "owncloud" else "upload"),
|
||||
"TEST_OCIS": "true",
|
||||
"SEND_SCENARIO_LINE_REFERENCES": "true",
|
||||
"STORAGE_DRIVER": storage,
|
||||
"BEHAT_FILTER_TAGS": filterTags,
|
||||
"DIVIDE_INTO_NUM_PARTS": number_of_parts,
|
||||
"RUN_PART": part_number,
|
||||
"EXPECTED_FAILURES_FILE": expectedFailuresFile,
|
||||
"UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0,
|
||||
},
|
||||
"commands": [
|
||||
"make -C /srv/app/testrunner test-acceptance-api",
|
||||
],
|
||||
"volumes": [stepVolumeOC10Tests],
|
||||
},
|
||||
] + failEarly(ctx, early_fail),
|
||||
"steps": skipIfUnchanged(ctx, "acceptance-tests") +
|
||||
restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
|
||||
ocisServer(storage, accounts_hash_difficulty) +
|
||||
restoreBuildArtifactCache(ctx, "testrunner", dirs["core"]) +
|
||||
restoreBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]) +
|
||||
[
|
||||
{
|
||||
"name": "oC10ApiTests-%s-storage-%s" % (storage, part_number),
|
||||
"image": OC_CI_PHP % DEFAULT_PHP_VERSION,
|
||||
"environment": {
|
||||
"TEST_WITH_GRAPH_API": "true",
|
||||
"PATH_TO_OCIS": "/drone/src",
|
||||
"PATH_TO_CORE": "/drone/src/%s" % dirs["core"],
|
||||
"TEST_SERVER_URL": "https://ocis-server:9200",
|
||||
"OCIS_REVA_DATA_ROOT": "%s" % ("/srv/app/tmp/ocis/owncloud/data/" if storage == "owncloud" else ""),
|
||||
"SKELETON_DIR": "/drone/src/%s/data/apiSkeleton" % dirs["testing_app"],
|
||||
"OCIS_SKELETON_STRATEGY": "%s" % ("copy" if storage == "owncloud" else "upload"),
|
||||
"TEST_OCIS": "true",
|
||||
"SEND_SCENARIO_LINE_REFERENCES": "true",
|
||||
"STORAGE_DRIVER": storage,
|
||||
"BEHAT_FILTER_TAGS": filterTags,
|
||||
"DIVIDE_INTO_NUM_PARTS": number_of_parts,
|
||||
"RUN_PART": part_number,
|
||||
"EXPECTED_FAILURES_FILE": expectedFailuresFile,
|
||||
"UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0,
|
||||
},
|
||||
"commands": [
|
||||
"make -C /drone/src/%s test-acceptance-api" % dirs["core"],
|
||||
],
|
||||
},
|
||||
] + failEarly(ctx, early_fail),
|
||||
"services": redisForOCStorage(storage),
|
||||
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]),
|
||||
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]) +
|
||||
getPipelineNames(cacheCoreReposForTesting(ctx)),
|
||||
"trigger": {
|
||||
"ref": [
|
||||
"refs/heads/master",
|
||||
@@ -669,7 +705,6 @@ def coreApiTests(ctx, part_number = 1, number_of_parts = 1, storage = "ocis", ac
|
||||
"refs/pull/**",
|
||||
],
|
||||
},
|
||||
"volumes": [pipelineVolumeOC10Tests],
|
||||
}
|
||||
|
||||
def apiTests(ctx):
|
||||
@@ -747,7 +782,8 @@ def uiTestPipeline(ctx, filterTags, early_fail, runPart = 1, numberOfParts = 1,
|
||||
},
|
||||
"steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") + installWebTestRunner() +
|
||||
restoreBuildArtifactCache(ctx, "tests-yarn", "webTestRunner/tests/acceptance/.yarn") + yarnInstallUITests() +
|
||||
ocisServer(storage, accounts_hash_difficulty, [stepVolumeOC10Tests]) + waitForSeleniumService() + waitForMiddlewareService() +
|
||||
ocisServer(storage, accounts_hash_difficulty) + waitForSeleniumService() + waitForMiddlewareService() +
|
||||
restoreBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]) +
|
||||
[
|
||||
{
|
||||
"name": "webUITests",
|
||||
@@ -757,7 +793,7 @@ def uiTestPipeline(ctx, filterTags, early_fail, runPart = 1, numberOfParts = 1,
|
||||
"BACKEND_HOST": "https://ocis-server:9200",
|
||||
"RUN_ON_OCIS": "true",
|
||||
"OCIS_REVA_DATA_ROOT": "/srv/app/tmp/ocis/owncloud/data",
|
||||
"TESTING_DATA_DIR": "/srv/app/testing/data",
|
||||
"TESTING_DATA_DIR": "/drone/src/%s" % dirs["testing_app"],
|
||||
"WEB_UI_CONFIG": "/drone/src/tests/config/drone/ocis-config.json",
|
||||
"TEST_TAGS": finalFilterTags,
|
||||
"LOCAL_UPLOAD_DIR": "/uploads",
|
||||
@@ -768,18 +804,16 @@ def uiTestPipeline(ctx, filterTags, early_fail, runPart = 1, numberOfParts = 1,
|
||||
"MIDDLEWARE_HOST": "http://middleware:3000",
|
||||
},
|
||||
"commands": [
|
||||
"git clone -b master --depth=1 https://github.com/owncloud/testing.git /srv/app/testing",
|
||||
"cd webTestRunner/tests/acceptance",
|
||||
"./run.sh",
|
||||
],
|
||||
},
|
||||
] + failEarly(ctx, early_fail),
|
||||
"services": selenium() + middlewareService(),
|
||||
"volumes": [pipelineVolumeOC10Tests] +
|
||||
[{
|
||||
"name": "uploads",
|
||||
"temp": {},
|
||||
}],
|
||||
"volumes": [{
|
||||
"name": "uploads",
|
||||
"temp": {},
|
||||
}],
|
||||
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]),
|
||||
"trigger": {
|
||||
"ref": [
|
||||
@@ -802,7 +836,7 @@ def settingsUITests(ctx, storage = "ocis", accounts_hash_difficulty = 4):
|
||||
"arch": "amd64",
|
||||
},
|
||||
"steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
|
||||
ocisServer(storage, accounts_hash_difficulty, [stepVolumeOC10Tests]) + waitForSeleniumService() + waitForMiddlewareService() + [
|
||||
ocisServer(storage, accounts_hash_difficulty) + waitForSeleniumService() + waitForMiddlewareService() + [
|
||||
{
|
||||
"name": "WebUIAcceptanceTests",
|
||||
"image": OC_CI_NODEJS % DEFAULT_NODEJS_VERSION,
|
||||
@@ -831,11 +865,10 @@ def settingsUITests(ctx, storage = "ocis", accounts_hash_difficulty = 4):
|
||||
"yarn install --immutable",
|
||||
"make test-acceptance-webui",
|
||||
],
|
||||
"volumes": [stepVolumeOC10Tests] +
|
||||
[{
|
||||
"name": "uploads",
|
||||
"path": "/uploads",
|
||||
}],
|
||||
"volumes": [{
|
||||
"name": "uploads",
|
||||
"path": "/uploads",
|
||||
}],
|
||||
},
|
||||
] + failEarly(ctx, early_fail),
|
||||
"services": [
|
||||
@@ -844,11 +877,10 @@ def settingsUITests(ctx, storage = "ocis", accounts_hash_difficulty = 4):
|
||||
"image": REDIS,
|
||||
},
|
||||
] + selenium() + middlewareService(),
|
||||
"volumes": [stepVolumeOC10Tests] +
|
||||
[{
|
||||
"name": "uploads",
|
||||
"temp": {},
|
||||
}],
|
||||
"volumes": [{
|
||||
"name": "uploads",
|
||||
"temp": {},
|
||||
}],
|
||||
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]),
|
||||
"trigger": {
|
||||
"ref": [
|
||||
@@ -1615,7 +1647,6 @@ def ocisServer(storage, accounts_hash_difficulty = 4, volumes = [], depends_on =
|
||||
user = "0:0"
|
||||
environment = {
|
||||
"OCIS_URL": OCIS_URL,
|
||||
"FRONTEND_ENABLE_RESHARING": "true",
|
||||
"GATEWAY_GRPC_ADDR": "0.0.0.0:9142", # cs3api-validator needs the cs3api gatway exposed
|
||||
"STORAGE_USERS_DRIVER": "%s" % (storage),
|
||||
"STORAGE_USERS_DRIVER_LOCAL_ROOT": "/srv/app/tmp/ocis/local/root",
|
||||
@@ -1683,7 +1714,6 @@ def ocisServer(storage, accounts_hash_difficulty = 4, volumes = [], depends_on =
|
||||
"OCIS_RUN_SERVICES": "app-registry,app-provider,auth-basic,auth-bearer,auth-machine,frontend,gateway,graph,graph-explorer,groups,nats,notifications,ocdav,ocs,proxy,search,settings,sharing,storage-system,storage-publiclink,storage-shares,storage-users,store,thumbnails,users,web,webdav",
|
||||
"OCIS_LOG_LEVEL": "info",
|
||||
"OCIS_URL": OCIS_URL,
|
||||
"FRONTEND_ENABLE_RESHARING": "true",
|
||||
"OCIS_BASE_DATA_PATH": "/mnt/data/ocis",
|
||||
"OCIS_CONFIG_DIR": "/etc/ocis",
|
||||
"PROXY_ENABLE_BASIC_AUTH": "true",
|
||||
@@ -1759,13 +1789,14 @@ def cloneCoreRepos():
|
||||
"name": "clone-core-repos",
|
||||
"image": OC_CI_ALPINE,
|
||||
"commands": [
|
||||
"source /drone/src/.drone.env",
|
||||
"git clone -b master --depth=1 https://github.com/owncloud/testing.git /srv/app/tmp/testing",
|
||||
"git clone -b $CORE_BRANCH --single-branch --no-tags https://github.com/owncloud/core.git /srv/app/testrunner",
|
||||
"cd /srv/app/testrunner",
|
||||
"source .drone.env",
|
||||
"git clone -b master --depth=1 https://github.com/owncloud/testing.git %s" % dirs["testing_app"],
|
||||
"ls -la %s" % dirs["testing_app"],
|
||||
"git clone -b $CORE_BRANCH --single-branch --no-tags https://github.com/owncloud/core.git %s" % dirs["core"],
|
||||
"ls -la %s" % dirs["core"],
|
||||
"cd %s" % dirs["core"],
|
||||
"git checkout $CORE_COMMITID",
|
||||
],
|
||||
"volumes": [stepVolumeOC10Tests],
|
||||
},
|
||||
]
|
||||
|
||||
@@ -2241,7 +2272,8 @@ def parallelDeployAcceptancePipeline(ctx):
|
||||
},
|
||||
"steps": skipIfUnchanged(ctx, "acceptance-tests") +
|
||||
restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
|
||||
cloneCoreRepos() +
|
||||
restoreBuildArtifactCache(ctx, "testrunner", dirs["core"]) +
|
||||
restoreBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]) +
|
||||
copyConfigs() +
|
||||
parallelDeploymentOC10Server() +
|
||||
owncloudLog() +
|
||||
@@ -2264,9 +2296,9 @@ def parallelDeployAcceptancePipeline(ctx):
|
||||
pipeOC10AppsVol,
|
||||
pipeOC10OCISSharedVol,
|
||||
pipeOCISConfigVol,
|
||||
pipelineVolumeOC10Tests,
|
||||
],
|
||||
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]),
|
||||
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]) +
|
||||
getPipelineNames(cacheCoreReposForTesting(ctx)),
|
||||
"trigger": {},
|
||||
}
|
||||
|
||||
@@ -2294,14 +2326,13 @@ def parallelAcceptance(env):
|
||||
"REVA_LDAP_BASE_DN": "dc=owncloud,dc=com",
|
||||
"REVA_LDAP_HOSTNAME": "openldap",
|
||||
"REVA_LDAP_BIND_DN": "cn=admin,dc=owncloud,dc=com",
|
||||
"SKELETON_DIR": "/var/www/owncloud/apps/testing/data/apiSkeleton",
|
||||
"PATH_TO_CORE": "/srv/app/testrunner",
|
||||
"SKELETON_DIR": "/drone/src/%s/data/apiSkeleton" % dirs["testing_app"],
|
||||
"PATH_TO_CORE": "/drone/src/%s" % dirs["core"],
|
||||
"OCIS_REVA_DATA_ROOT": "/mnt/data/",
|
||||
"EXPECTED_FAILURES_FILE": "/drone/src/tests/parallelDeployAcceptance/expected-failures-API.md",
|
||||
"OCIS_SKELETON_STRATEGY": "copy",
|
||||
"SEND_SCENARIO_LINE_REFERENCES": "true",
|
||||
"UPLOAD_DELETE_WAIT_TIME": "1",
|
||||
"FRONTEND_ENABLE_RESHARING": "true",
|
||||
}
|
||||
environment.update(env)
|
||||
|
||||
@@ -2312,10 +2343,9 @@ def parallelAcceptance(env):
|
||||
"commands": [
|
||||
"make test-paralleldeployment-api",
|
||||
],
|
||||
"depends_on": ["clone-core-repos", "wait-for-oc10", "wait-for-ocis-server"],
|
||||
"depends_on": ["wait-for-oc10", "wait-for-ocis-server"],
|
||||
"volumes": [
|
||||
stepVolumeOC10Apps,
|
||||
stepVolumeOC10Tests,
|
||||
stepVolumeOC10OCISData,
|
||||
],
|
||||
}]
|
||||
|
||||
@@ -7,6 +7,7 @@ The following sections list the changes for unreleased.
|
||||
## Summary
|
||||
|
||||
* Bugfix - CSP rules for silent token refresh in iframe: [#4031](https://github.com/owncloud/ocis/pull/4031)
|
||||
* Bugfix - Fix logging levels: [#4102](https://github.com/owncloud/ocis/pull/4102)
|
||||
* Bugfix - Fix `OCIS_RUN_SERVICES`: [#4133](https://github.com/owncloud/ocis/pull/4133)
|
||||
* Bugfix - Fix unused config option `GRAPH_SPACES_INSECURE`: [#55555](https://github.com/owncloud/ocis/pull/55555)
|
||||
* Bugfix - Remove unused configuration options: [#3973](https://github.com/owncloud/ocis/pull/3973)
|
||||
@@ -20,6 +21,7 @@ The following sections list the changes for unreleased.
|
||||
* Enhancement - Update IdP UI: [#3493](https://github.com/owncloud/ocis/issues/3493)
|
||||
* Enhancement - Refactor extensions to services: [#3980](https://github.com/owncloud/ocis/pull/3980)
|
||||
* Enhancement - Update reva: [#4115](https://github.com/owncloud/ocis/pull/4115)
|
||||
* Enhancement - Update ownCloud Web to v5.7.0-rc.4: [#4140](https://github.com/owncloud/ocis/pull/4140)
|
||||
* Enhancement - Search service at the old webdav endpoint: [#4118](https://github.com/owncloud/ocis/pull/4118)
|
||||
|
||||
## Details
|
||||
@@ -33,6 +35,22 @@ The following sections list the changes for unreleased.
|
||||
https://github.com/owncloud/web/issues/7030
|
||||
https://github.com/owncloud/ocis/pull/4031
|
||||
|
||||
* Bugfix - Fix logging levels: [#4102](https://github.com/owncloud/ocis/pull/4102)
|
||||
|
||||
We've fixed the configuration of logging levels. Previously it was not possible to configure a
|
||||
service with a more or less verbose log level then all other services when running in the
|
||||
supervised / runtime mode `ocis server`.
|
||||
|
||||
For example `OCIS_LOG_LEVEL=error PROXY_LOG_LEVEL=debug ocis server` did not configure
|
||||
error logging for all services except the proxy, which should be on debug logging. This is now
|
||||
fixed and working properly.
|
||||
|
||||
Also we fixed the format of go-micro logs to always default to error level. Previously this was
|
||||
only ensured in the supervised / runtime mode.
|
||||
|
||||
https://github.com/owncloud/ocis/issues/4089
|
||||
https://github.com/owncloud/ocis/pull/4102
|
||||
|
||||
* Bugfix - Fix `OCIS_RUN_SERVICES`: [#4133](https://github.com/owncloud/ocis/pull/4133)
|
||||
|
||||
`OCIS_RUN_SERVICES` was introduced as successor to `OCIS_RUN_EXTENSIONS` because we
|
||||
@@ -138,6 +156,38 @@ The following sections list the changes for unreleased.
|
||||
|
||||
https://github.com/owncloud/ocis/pull/4115
|
||||
|
||||
* Enhancement - Update ownCloud Web to v5.7.0-rc.4: [#4140](https://github.com/owncloud/ocis/pull/4140)
|
||||
|
||||
Tags: web
|
||||
|
||||
We updated ownCloud Web to v5.7.0-rc.4. Please refer to the changelog (linked) for details on
|
||||
the web release.
|
||||
|
||||
* Bugfix [owncloud/web#7230](https://github.com/owncloud/web/pull/7230): Context menu misplaced when triggered by keyboard navigation
|
||||
* Bugfix [owncloud/web#7214](https://github.com/owncloud/web/pull/7214): Prevent error when pasting with empty clipboard
|
||||
* Bugfix [owncloud/web#7173](https://github.com/owncloud/web/pull/7173): Re-introduce dynamic app name in document title
|
||||
* Bugfix [owncloud/web#7166](https://github.com/owncloud/web/pull/7166): External apps fixes
|
||||
* Bugfix [owncloud/web#4677](https://github.com/owncloud/web/issues/4677): Logout deleted user on page reload
|
||||
* Bugfix [owncloud/web#7216](https://github.com/owncloud/web/pull/7216): Filename hovers over the image in the preview app
|
||||
* Bugfix [owncloud/web#7228](https://github.com/owncloud/web/pull/7228): Shared with others page apps not working with oc10 as backend
|
||||
* Bugfix [owncloud/web#7197](https://github.com/owncloud/web/pull/7197): Create space and access user management permission
|
||||
* Bugfix [owncloud/web#6921](https://github.com/owncloud/web/pull/6921): Space sidebar sharing indicators
|
||||
* Bugfix [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Access token renewal
|
||||
* Enhancement [owncloud/web#7217](https://github.com/owncloud/web/pull/7217): Add app top bar component
|
||||
* Enhancement [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Loading context blocks application bootstrap
|
||||
* Enhancement [owncloud/web#7206](https://github.com/owncloud/web/pull/7206): Add change own password dialog to the account info page
|
||||
* Enhancement [owncloud/web#7086](https://github.com/owncloud/web/pull/7086): Re-sharing for ocis
|
||||
* Enhancement [owncloud/web#7201](https://github.com/owncloud/web/pull/7201): Added a toolbar to pdf-viewer app
|
||||
* Enhancement [owncloud/web#7139](https://github.com/owncloud/web/pull/7139): Reposition notifications
|
||||
* Enhancement [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Resolve bookmarked public links with password protection
|
||||
* Enhancement [owncloud/web#7038](https://github.com/owncloud/web/issues/7038): Improve performance of share indicators
|
||||
* Enhancement [owncloud/web#6661](https://github.com/owncloud/web/issues/6661): Option to block file extensions from text-editor app
|
||||
* Enhancement [owncloud/web#7139](https://github.com/owncloud/web/pull/7139): Update ODS to v14.0.0-alpha.4
|
||||
* Enhancement [owncloud/web#7176](https://github.com/owncloud/web/pull/7176): Introduce group assignments
|
||||
|
||||
https://github.com/owncloud/ocis/pull/4140
|
||||
https://github.com/owncloud/web/releases/tag/v5.7.0-rc.4
|
||||
|
||||
* Enhancement - Search service at the old webdav endpoint: [#4118](https://github.com/owncloud/ocis/pull/4118)
|
||||
|
||||
We made the search service available for legacy clients at the old webdav endpoint.
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
# `make -C ocis dev-docker`
|
||||
# It will build a `owncloud/ocis:dev` image for you
|
||||
# and use your local Yarn and Go caches and therefore
|
||||
# is a lot faster than the below build steps.
|
||||
# is a lot faster than the build steps below.
|
||||
|
||||
|
||||
FROM owncloudci/nodejs:14 as generate
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
Bugfix: Fix logging levels
|
||||
|
||||
We've fixed the configuration of logging levels. Previously it was not possible
|
||||
to configure a service with a more or less verbose log level then all other services
|
||||
when running in the supervised / runtime mode `ocis server`.
|
||||
|
||||
For example `OCIS_LOG_LEVEL=error PROXY_LOG_LEVEL=debug ocis server` did not configure
|
||||
error logging for all services except the proxy, which should be on debug logging. This is now fixed
|
||||
and working properly.
|
||||
|
||||
Also we fixed the format of go-micro logs to always default to error level.
|
||||
Previously this was only ensured in the supervised / runtime mode.
|
||||
|
||||
https://github.com/owncloud/ocis/pull/4102
|
||||
https://github.com/owncloud/ocis/issues/4089
|
||||
@@ -0,0 +1,30 @@
|
||||
Enhancement: Update ownCloud Web to v5.7.0-rc.4
|
||||
|
||||
Tags: web
|
||||
|
||||
We updated ownCloud Web to v5.7.0-rc.4. Please refer to the changelog (linked) for details on the web release.
|
||||
|
||||
* Bugfix [owncloud/web#7230](https://github.com/owncloud/web/pull/7230): Context menu misplaced when triggered by keyboard navigation
|
||||
* Bugfix [owncloud/web#7214](https://github.com/owncloud/web/pull/7214): Prevent error when pasting with empty clipboard
|
||||
* Bugfix [owncloud/web#7173](https://github.com/owncloud/web/pull/7173): Re-introduce dynamic app name in document title
|
||||
* Bugfix [owncloud/web#7166](https://github.com/owncloud/web/pull/7166): External apps fixes
|
||||
* Bugfix [owncloud/web#4677](https://github.com/owncloud/web/issues/4677): Logout deleted user on page reload
|
||||
* Bugfix [owncloud/web#7216](https://github.com/owncloud/web/pull/7216): Filename hovers over the image in the preview app
|
||||
* Bugfix [owncloud/web#7228](https://github.com/owncloud/web/pull/7228): Shared with others page apps not working with oc10 as backend
|
||||
* Bugfix [owncloud/web#7197](https://github.com/owncloud/web/pull/7197): Create space and access user management permission
|
||||
* Bugfix [owncloud/web#6921](https://github.com/owncloud/web/pull/6921): Space sidebar sharing indicators
|
||||
* Bugfix [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Access token renewal
|
||||
* Enhancement [owncloud/web#7217](https://github.com/owncloud/web/pull/7217): Add app top bar component
|
||||
* Enhancement [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Loading context blocks application bootstrap
|
||||
* Enhancement [owncloud/web#7206](https://github.com/owncloud/web/pull/7206): Add change own password dialog to the account info page
|
||||
* Enhancement [owncloud/web#7086](https://github.com/owncloud/web/pull/7086): Re-sharing for ocis
|
||||
* Enhancement [owncloud/web#7201](https://github.com/owncloud/web/pull/7201): Added a toolbar to pdf-viewer app
|
||||
* Enhancement [owncloud/web#7139](https://github.com/owncloud/web/pull/7139): Reposition notifications
|
||||
* Enhancement [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Resolve bookmarked public links with password protection
|
||||
* Enhancement [owncloud/web#7038](https://github.com/owncloud/web/issues/7038): Improve performance of share indicators
|
||||
* Enhancement [owncloud/web#6661](https://github.com/owncloud/web/issues/6661): Option to block file extensions from text-editor app
|
||||
* Enhancement [owncloud/web#7139](https://github.com/owncloud/web/pull/7139): Update ODS to v14.0.0-alpha.4
|
||||
* Enhancement [owncloud/web#7176](https://github.com/owncloud/web/pull/7176): Introduce group assignments
|
||||
|
||||
https://github.com/owncloud/ocis/pull/4140
|
||||
https://github.com/owncloud/web/releases/tag/v5.7.0-rc.4
|
||||
+2
-2
@@ -15,7 +15,7 @@ Welcome to oCIS, the modern file-sync and share platform, which is based on our
|
||||
### The idea of federated storage
|
||||
To create a truly federated storage architecture oCIS breaks down the old ownCloud 10 user specific namespace, which is assembled on the server side, and makes the individual parts accessible to clients as storage spaces and storage space registries.
|
||||
|
||||
The below diagram shows the core concepts that are the foundation for the new architecture:
|
||||
The diagram below shows the core concepts that are the foundation for the new architecture:
|
||||
- End user devices can fetch the list of *storage spaces* a user has access to, by querying one or multiple *storage space registries*. The list contains a unique endpoint for every *storage space*.
|
||||
- [*Storage space registries*]({{< ref "./storage/terminology#storage-space-registries" >}}) manage the list of storage spaces a user has access to. They may subscribe to *storage spaces* in order to receive notifications about changes on behalf of an end users mobile or desktop client.
|
||||
- [*Storage spaces*]({{< ref "./storage/terminology#storage-spaces" >}}) represent a collection of files and folders. A users personal files are contained in a *storage space*, a group or project drive is a *storage space*, and even incoming shares are treated and implemented as *storage spaces*. Each with properties like owners, permissions, quota and type.
|
||||
@@ -61,6 +61,6 @@ We run a huge [test suite](https://github.com/owncloud/core/tree/master/tests),
|
||||
|
||||
### Architecture Overview
|
||||
|
||||
Running `bin/ocis server` will start the below services, all of which can be scaled and deployed on a single node or in a cloud native environment, as needed.
|
||||
Running `bin/ocis server` will start the following services, all of which can be scaled and deployed on a single node or in a cloud native environment, as needed.
|
||||
|
||||
{{< figure src="/ocis/static/architecture-overview.drawio.svg" >}}
|
||||
|
||||
@@ -71,7 +71,7 @@ $ make -C ocis build
|
||||
This should give you an `ocis/bin/ocis` binary. Try listing the help with `ocis/bin/ocis --help`.
|
||||
|
||||
{{< hint >}}
|
||||
You can check out a custom branch and build a custom binary which can then be used for the below steps.
|
||||
You can check out a custom branch and build a custom binary which can then be used for the steps below.
|
||||
{{< /hint >}}
|
||||
|
||||
### Start ocis glauth
|
||||
|
||||
@@ -46,7 +46,7 @@ For the format of the users.json have a look at the [reva examples](https://gith
|
||||
|
||||
This is the default user driver.
|
||||
|
||||
If the below defaults don't match your environment change them accordingly:
|
||||
If the following defaults don't match your environment then change them accordingly:
|
||||
```
|
||||
export STORAGE_LDAP_HOSTNAME=localhost
|
||||
export STORAGE_LDAP_PORT=9126
|
||||
|
||||
@@ -61,9 +61,9 @@ ocis init
|
||||
OCIS_URL=https://host.docker.internal:9200 OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true WEB_UI_CONFIG=../../web/dev/docker/ocis.web.config.json ./bin/ocis server
|
||||
```
|
||||
|
||||
If you've built the web bundle locally in its repository, you also need to reference the bundle output in the above command: `WEB_ASSET_PATH=../../web/dist`
|
||||
If you've built the web bundle locally in its repository, you also need to reference the bundle output in the command above: `WEB_ASSET_PATH=../../web/dist`
|
||||
|
||||
If you've built the settings UI bundle locally, you also need to reference the bundle output in the above command: `SETTINGS_ASSET_PATH=../settings/assets/`
|
||||
If you've built the settings UI bundle locally, you also need to reference the bundle output in the command above: `SETTINGS_ASSET_PATH=../settings/assets/`
|
||||
|
||||
#### Run settings acceptance tests
|
||||
|
||||
|
||||
@@ -62,11 +62,11 @@ require (
|
||||
github.com/urfave/cli/v2 v2.10.3
|
||||
go-micro.dev/v4 v4.7.0
|
||||
go.opencensus.io v0.23.0
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0
|
||||
go.opentelemetry.io/otel v1.7.0
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0
|
||||
go.opentelemetry.io/otel v1.8.0
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.7.0
|
||||
go.opentelemetry.io/otel/sdk v1.7.0
|
||||
go.opentelemetry.io/otel/trace v1.7.0
|
||||
go.opentelemetry.io/otel/trace v1.8.0
|
||||
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29
|
||||
golang.org/x/exp v0.0.0-20220518171630-0b5c67f07fdf
|
||||
golang.org/x/image v0.0.0-20220321031419-a8550c1d254a
|
||||
|
||||
@@ -1304,12 +1304,13 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||
go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=
|
||||
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.31.0/go.mod h1:SY9qHHUES6W3oZnO1H2W8NvsSovIoXRg/A1AH9px8+I=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 h1:WenoaOMNP71oq3KkMZ/jnxI9xU/JSCLw8yZILSI2lfU=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0/go.mod h1:J0dBVrt7dPS/lKJyQoW0xzQiUr4r2Ik1VwPjAUWnofI=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0 h1:z6rnla1Asjzn0FrhohzIbDi4bxbtc6EMmQ7f5ZPn+pA=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0/go.mod h1:y/SlJpJQPd2UzfBCj0E9Flk9FDCtTyqUmaCB41qFrWI=
|
||||
go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ=
|
||||
go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI=
|
||||
go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM=
|
||||
go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk=
|
||||
go.opentelemetry.io/otel v1.8.0 h1:zcvBFizPbpa1q7FehvFiHbQwGzmPILebO0tyqIR5Djg=
|
||||
go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM=
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.6.3/go.mod h1:YgX3eZWbJzgrNyNHCK0otGreAMBTIAcObtZS2VRi6sU=
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.7.0 h1:wXgjiRldljksZkZrldGVe6XrG9u3kYDyQmkZwmm5dI0=
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.7.0/go.mod h1:PwQAOqBgqbLQRKlj466DuD2qyMjbtcPpfPfj+AqbSBs=
|
||||
@@ -1318,8 +1319,9 @@ go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1
|
||||
go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU=
|
||||
go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0=
|
||||
go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs=
|
||||
go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o=
|
||||
go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU=
|
||||
go.opentelemetry.io/otel/trace v1.8.0 h1:cSy0DF9eGI5WIfNwZ1q2iUyGj00tGzP24dE1lOlHrfY=
|
||||
go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4=
|
||||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
|
||||
@@ -57,7 +57,7 @@ All parse errors will fail fast and return an error in this mode.
|
||||
## Supported types
|
||||
|
||||
- Structs (and pointer to structs)
|
||||
- Slices of below defined types, separated by semicolon
|
||||
- Slices of defined types below, separated by semicolon
|
||||
- `bool`
|
||||
- `float32`, `float64`
|
||||
- `int`, `int8`, `int16`, `int32`, `int64`
|
||||
|
||||
+39
-117
@@ -6,15 +6,37 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
mzlog "github.com/go-micro/plugins/v4/logger/zerolog"
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/shared"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
mdlog "go-micro.dev/v4/debug/log"
|
||||
mlog "go-micro.dev/v4/util/log"
|
||||
"go-micro.dev/v4/util/ring"
|
||||
"go-micro.dev/v4/logger"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// this is ugly, but "logger.DefaultLogger" is a global variable and we need to set it _before_ anybody uses it
|
||||
setMicroLogger()
|
||||
}
|
||||
|
||||
// for logging reasons we don't want the same logging level on both oCIS and micro. As a framework builder we do not
|
||||
// want to expose to the end user the internal framework logs unless explicitly specified.
|
||||
func setMicroLogger() {
|
||||
if os.Getenv("MICRO_LOG_LEVEL") == "" {
|
||||
_ = os.Setenv("MICRO_LOG_LEVEL", "error")
|
||||
}
|
||||
|
||||
lev, err := zerolog.ParseLevel(os.Getenv("MICRO_LOG_LEVEL"))
|
||||
if err != nil {
|
||||
lev = zerolog.ErrorLevel
|
||||
}
|
||||
logger.DefaultLogger = mzlog.NewLogger(
|
||||
logger.WithLevel(logger.Level(lev)),
|
||||
logger.WithFields(map[string]interface{}{
|
||||
"system": "go-micro",
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
// Logger simply wraps the zerolog logger.
|
||||
type Logger struct {
|
||||
zerolog.Logger
|
||||
@@ -35,31 +57,27 @@ func LoggerFromConfig(name string, cfg *shared.Log) Logger {
|
||||
func NewLogger(opts ...Option) Logger {
|
||||
options := newOptions(opts...)
|
||||
|
||||
// set GlobalLevel() to the minimum value -1 = TraceLevel, so that only the services' log level matter
|
||||
zerolog.SetGlobalLevel(zerolog.TraceLevel)
|
||||
|
||||
var logLevel zerolog.Level
|
||||
switch strings.ToLower(options.Level) {
|
||||
case "panic":
|
||||
zerolog.SetGlobalLevel(zerolog.PanicLevel)
|
||||
mlog.SetLevel(mlog.LevelFatal)
|
||||
logLevel = zerolog.PanicLevel
|
||||
case "fatal":
|
||||
zerolog.SetGlobalLevel(zerolog.FatalLevel)
|
||||
mlog.SetLevel(mlog.LevelFatal)
|
||||
logLevel = zerolog.FatalLevel
|
||||
case "error":
|
||||
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
|
||||
mlog.SetLevel(mlog.LevelError)
|
||||
logLevel = zerolog.ErrorLevel
|
||||
case "warn":
|
||||
zerolog.SetGlobalLevel(zerolog.WarnLevel)
|
||||
mlog.SetLevel(mlog.LevelWarn)
|
||||
logLevel = zerolog.WarnLevel
|
||||
case "info":
|
||||
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
||||
mlog.SetLevel(mlog.LevelInfo)
|
||||
logLevel = zerolog.InfoLevel
|
||||
case "debug":
|
||||
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
||||
mlog.SetLevel(mlog.LevelDebug)
|
||||
logLevel = zerolog.DebugLevel
|
||||
case "trace":
|
||||
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
||||
mlog.SetLevel(mlog.LevelTrace)
|
||||
logLevel = zerolog.TraceLevel
|
||||
default:
|
||||
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
|
||||
mlog.SetLevel(mlog.LevelError)
|
||||
logLevel = zerolog.ErrorLevel
|
||||
}
|
||||
|
||||
var logger zerolog.Logger
|
||||
@@ -88,105 +106,9 @@ func NewLogger(opts ...Option) Logger {
|
||||
logger = logger.With().
|
||||
Str("service", options.Name).
|
||||
Timestamp().
|
||||
Logger()
|
||||
|
||||
mlog.SetLogger(
|
||||
microZerolog{
|
||||
logger: logger,
|
||||
buffer: ring.New(mdlog.DefaultSize),
|
||||
},
|
||||
)
|
||||
Logger().Level(logLevel)
|
||||
|
||||
return Logger{
|
||||
logger,
|
||||
}
|
||||
}
|
||||
|
||||
// microZerolog implements the required interface for the go-micro logger.
|
||||
type microZerolog struct {
|
||||
logger zerolog.Logger
|
||||
buffer *ring.Buffer
|
||||
}
|
||||
|
||||
func (mz microZerolog) Read(opts ...mdlog.ReadOption) ([]mdlog.Record, error) {
|
||||
options := mdlog.ReadOptions{}
|
||||
for _, o := range opts {
|
||||
o(&options)
|
||||
}
|
||||
|
||||
var entries []*ring.Entry
|
||||
|
||||
if !options.Since.IsZero() {
|
||||
entries = mz.buffer.Since(options.Since)
|
||||
}
|
||||
|
||||
if options.Count > 0 {
|
||||
switch len(entries) > 0 {
|
||||
case true:
|
||||
if options.Count > len(entries) {
|
||||
entries = entries[0:options.Count]
|
||||
}
|
||||
default:
|
||||
entries = mz.buffer.Get(options.Count)
|
||||
}
|
||||
}
|
||||
|
||||
records := make([]mdlog.Record, 0, len(entries))
|
||||
for _, entry := range entries {
|
||||
record := mdlog.Record{
|
||||
Timestamp: entry.Timestamp,
|
||||
Message: entry.Value,
|
||||
}
|
||||
records = append(records, record)
|
||||
}
|
||||
|
||||
return records, nil
|
||||
}
|
||||
|
||||
func (mz microZerolog) Write(record mdlog.Record) error {
|
||||
level := record.Metadata["level"]
|
||||
mz.log(level, fmt.Sprint(record.Message))
|
||||
mz.buffer.Put(record.Message)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mz microZerolog) Stream() (mdlog.Stream, error) {
|
||||
stream, stop := mz.buffer.Stream()
|
||||
records := make(chan mdlog.Record, 128)
|
||||
last10 := mz.buffer.Get(10)
|
||||
|
||||
go func() {
|
||||
for _, entry := range last10 {
|
||||
records <- mdlog.Record{
|
||||
Timestamp: entry.Timestamp,
|
||||
Message: entry.Value,
|
||||
Metadata: make(map[string]string),
|
||||
}
|
||||
}
|
||||
for entry := range stream {
|
||||
records <- mdlog.Record{
|
||||
Timestamp: entry.Timestamp,
|
||||
Message: entry.Value,
|
||||
Metadata: make(map[string]string),
|
||||
}
|
||||
}
|
||||
}()
|
||||
return &logStream{
|
||||
stream: records,
|
||||
stop: stop,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (mz microZerolog) log(level string, msg string) {
|
||||
l, err := zerolog.ParseLevel(level)
|
||||
if err != nil {
|
||||
l = zerolog.InfoLevel
|
||||
}
|
||||
|
||||
mz.logger.WithLevel(l).Msg(msg)
|
||||
|
||||
// Invoke os.Exit because unlike zerolog.Logger.Fatal zerolog.Logger.WithLevel won't stop the execution.
|
||||
if l == zerolog.FatalLevel {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,4 +65,4 @@ func main() {
|
||||
}
|
||||
```
|
||||
|
||||
Run the above example with `RUNTIME_KEEP_ALIVE=true` and with no `RUNTIME_KEEP_ALIVE` set to see its behavior. It requires an [oCIS binary](https://github.com/owncloud/ocis/releases) present in your `$PATH` for it to work.
|
||||
Run the example above with `RUNTIME_KEEP_ALIVE=true` and with no `RUNTIME_KEEP_ALIVE` set to see its behavior. It requires an [oCIS binary](https://github.com/owncloud/ocis/releases) present in your `$PATH` for it to work.
|
||||
|
||||
@@ -15,7 +15,6 @@ import (
|
||||
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/shared"
|
||||
|
||||
mzlog "github.com/go-micro/plugins/v4/logger/zerolog"
|
||||
"github.com/mohae/deepcopy"
|
||||
"github.com/olekukonko/tablewriter"
|
||||
|
||||
@@ -50,9 +49,7 @@ import (
|
||||
users "github.com/owncloud/ocis/v2/services/users/pkg/command"
|
||||
web "github.com/owncloud/ocis/v2/services/web/pkg/command"
|
||||
webdav "github.com/owncloud/ocis/v2/services/webdav/pkg/command"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/thejerf/suture/v4"
|
||||
"go-micro.dev/v4/logger"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -157,8 +154,6 @@ func Start(o ...Option) error {
|
||||
halt := make(chan os.Signal, 1)
|
||||
signal.Notify(halt, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGHUP)
|
||||
|
||||
setMicroLogger()
|
||||
|
||||
// tolerance controls backoff cycles from the supervisor.
|
||||
tolerance := 5
|
||||
totalBackoff := 0
|
||||
@@ -301,17 +296,3 @@ func trap(s *Service, halt chan os.Signal) {
|
||||
s.Log.Debug().Str("service", "runtime service").Msgf("terminating with signal: %v", s)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
// for logging reasons we don't want the same logging level on both oCIS and micro. As a framework builder we do not
|
||||
// want to expose to the end user the internal framework logs unless explicitly specified.
|
||||
func setMicroLogger() {
|
||||
if os.Getenv("MICRO_LOG_LEVEL") == "" {
|
||||
_ = os.Setenv("MICRO_LOG_LEVEL", "error")
|
||||
}
|
||||
|
||||
lev, err := zerolog.ParseLevel(os.Getenv("MICRO_LOG_LEVEL"))
|
||||
if err != nil {
|
||||
lev = zerolog.ErrorLevel
|
||||
}
|
||||
logger.DefaultLogger = mzlog.NewLogger(logger.WithLevel(logger.Level(lev)))
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ type Archiver struct {
|
||||
}
|
||||
|
||||
type DataGateway struct {
|
||||
Prefix string `yaml:"prefix" env:"FRONTEND_DATA_GATEWAY_PREFIX"`
|
||||
Prefix string `yaml:"prefix" env:"FRONTEND_DATA_GATEWAY_PREFIX" desc:"Path prefix for the data gateway."`
|
||||
}
|
||||
|
||||
type OCS struct {
|
||||
|
||||
@@ -38,7 +38,7 @@ func DefaultConfig() *config.Config {
|
||||
UploadMaxChunkSize: 1e+8,
|
||||
UploadHTTPMethodOverride: "",
|
||||
DefaultUploadProtocol: "tus",
|
||||
EnableResharing: false,
|
||||
EnableResharing: true,
|
||||
Checksums: config.Checksums{
|
||||
SupportedTypes: []string{"sha1", "md5", "adler32"},
|
||||
PreferredUploadType: "",
|
||||
|
||||
@@ -5,7 +5,7 @@ type HTTP struct {
|
||||
Addr string `yaml:"addr" env:"IDP_HTTP_ADDR" desc:"The bind address of the HTTP service."`
|
||||
Root string `yaml:"root" env:"IDP_HTTP_ROOT" desc:"Subdirectory that serves as the root for this HTTP service."`
|
||||
Namespace string `yaml:"-"`
|
||||
TLSCert string `yaml:"tls_cert" env:"IDP_TRANSPORT_TLS_CERT"`
|
||||
TLSKey string `yaml:"tls_key" env:"IDP_TRANSPORT_TLS_KEY"`
|
||||
TLS bool `yaml:"tls" env:"IDP_TLS"`
|
||||
TLSCert string `yaml:"tls_cert" env:"IDP_TRANSPORT_TLS_CERT" desc:"File name of the TLS server certificate for the HTTPS server."`
|
||||
TLSKey string `yaml:"tls_key" env:"IDP_TRANSPORT_TLS_KEY" desc:"File name of the TLS server certificate key for the HTTPS server."`
|
||||
TLS bool `yaml:"tls" env:"IDP_TLS" desc:"Use the HTTPS server instead of the HTTP server."`
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ type Config struct {
|
||||
PublicURL string `yaml:"public_url" env:"OCIS_URL;OCDAV_PUBLIC_URL" desc:"URL where oCIS is reachable for users."`
|
||||
|
||||
// Insecure certificates allowed when making requests to the gateway
|
||||
Insecure bool `yaml:"insecure" env:"OCIS_INSECURE;OCDAV_INSECURE"`
|
||||
Insecure bool `yaml:"insecure" env:"OCIS_INSECURE;OCDAV_INSECURE" desc:"Allow insecure connections to the GATEWAY service."`
|
||||
// Timeout in seconds when making requests to the gateway
|
||||
Timeout int64 `yaml:"gateway_request_timeout" env:"OCDAV_GATEWAY_REQUEST_TIMEOUT" desc:"Request timeout in seconds for requests from the oCDAV service to the GATEWAY service."`
|
||||
Middleware Middleware `yaml:"middleware"`
|
||||
|
||||
@@ -5,7 +5,7 @@ type HTTP struct {
|
||||
Addr string `yaml:"addr" env:"PROXY_HTTP_ADDR" desc:"The bind address of the HTTP service."`
|
||||
Root string `yaml:"root" env:"PROXY_HTTP_ROOT" desc:"Subdirectory that serves as the root for this HTTP service."`
|
||||
Namespace string `yaml:"-"`
|
||||
TLSCert string `yaml:"tls_cert" env:"PROXY_TRANSPORT_TLS_CERT"`
|
||||
TLSKey string `yaml:"tls_key" env:"PROXY_TRANSPORT_TLS_KEY"`
|
||||
TLS bool `yaml:"tls" env:"PROXY_TLS"`
|
||||
TLSCert string `yaml:"tls_cert" env:"PROXY_TRANSPORT_TLS_CERT" desc:"File name of the TLS server certificate for the HTTPS server."`
|
||||
TLSKey string `yaml:"tls_key" env:"PROXY_TRANSPORT_TLS_KEY" desc:"File name of the TLS server certificate key for the HTTPS server."`
|
||||
TLS bool `yaml:"tls" env:"PROXY_TLS" desc:"Use the HTTPS server instead of the HTTP server."`
|
||||
}
|
||||
|
||||
@@ -49,14 +49,14 @@
|
||||
"@babel/plugin-syntax-dynamic-import": "^7.7.4",
|
||||
"@babel/plugin-transform-runtime": "^7.15.0",
|
||||
"@babel/polyfill": "^7.10.1",
|
||||
"@babel/preset-env": "^7.16.11",
|
||||
"@babel/preset-env": "^7.18.6",
|
||||
"@babel/register": "^7.17.7",
|
||||
"@cucumber/cucumber": "^7.3.2",
|
||||
"@cucumber/pretty-formatter": "^1.0.0",
|
||||
"@erquhart/rollup-plugin-node-builtins": "^2.1.5",
|
||||
"@rollup/plugin-commonjs": "^17.1.0",
|
||||
"@rollup/plugin-json": "^4.0.1",
|
||||
"@rollup/plugin-replace": "^2.4.2",
|
||||
"@rollup/plugin-replace": "^4.0.0",
|
||||
"archiver": "^5.3.0",
|
||||
"chromedriver": "^93.0.1",
|
||||
"cross-env": "^7.0.3",
|
||||
@@ -75,7 +75,6 @@
|
||||
"license-checker-rseidelsohn": "^3.1.0",
|
||||
"nightwatch": "1.7.11",
|
||||
"nightwatch-api": "3.0.2",
|
||||
"nightwatch-vrt": "^0.2.10",
|
||||
"node-fetch": "^2.6.7",
|
||||
"rollup": "^2.75.7",
|
||||
"rollup-plugin-babel": "^4.3.3",
|
||||
|
||||
@@ -115,7 +115,7 @@ export default {
|
||||
function injectAuthToken (rootGetters) {
|
||||
axios.interceptors.request.use(config => {
|
||||
if (typeof config.headers.Authorization === 'undefined') {
|
||||
const token = rootGetters.user.token
|
||||
const token = rootGetters['runtime/auth/accessToken']
|
||||
if (token) {
|
||||
config.headers.Authorization = `Bearer ${token}`
|
||||
}
|
||||
|
||||
+462
-760
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
SHELL := bash
|
||||
NAME := web
|
||||
WEB_ASSETS_VERSION = v5.7.0-rc.1
|
||||
WEB_ASSETS_VERSION = v5.7.0-rc.4
|
||||
|
||||
include ../../.make/recursion.mk
|
||||
|
||||
|
||||
@@ -21,3 +21,7 @@ The expected failures in this file are from features in the owncloud/ocis repo.
|
||||
|
||||
### [Search by shares jail works incorrect](https://github.com/owncloud/ocis/issues/4014)
|
||||
- [apiSpaces/search.feature:43](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/search.feature#L43)
|
||||
|
||||
### [Space Admin still has access to the project despite being removed from it](https://github.com/owncloud/ocis/issues/4127)
|
||||
- [apiSpaces/shareSpaces.feature:77](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/shareSpaces.feature#L77)
|
||||
- [apiSpaces/shareSpaces.feature:78](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/shareSpaces.feature#L78)
|
||||
|
||||
@@ -45,8 +45,6 @@ Other free text and markdown formatting can be used elsewhere in the document if
|
||||
- [webUISharingInternalUsers/shareWithUsers.feature:276](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsers/shareWithUsers.feature#L276)
|
||||
- [webUISharingInternalUsers/shareWithUsers.feature:277](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsers/shareWithUsers.feature#L277)
|
||||
- [webUISharingInternalUsersShareWithPage/shareWithUsers.feature:140](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsersShareWithPage/shareWithUsers.feature#L140)
|
||||
- [webUISharingPermissionsUsers/sharePermissionsUsers.feature:187](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingPermissionsUsers/sharePermissionsUsers.feature#L196)
|
||||
- [webUISharingPermissionsUsers/sharePermissionsUsers.feature:200](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingPermissionsUsers/sharePermissionsUsers.feature#L209)
|
||||
- [webUISharingPermissionsUsers/sharePermissionsUsers.feature:214](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingPermissionsUsers/sharePermissionsUsers.feature#L223)
|
||||
- [webUIResharing2/reshareUsers.feature:41](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIResharing2/reshareUsers.feature#L41)
|
||||
- [webUIResharing2/reshareUsers.feature:69](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIResharing2/reshareUsers.feature#L69)
|
||||
@@ -129,7 +127,6 @@ Other free text and markdown formatting can be used elsewhere in the document if
|
||||
- [webUIPrivateLinks/accessingPrivateLinks.feature:17](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L17)
|
||||
- [webUIPrivateLinks/accessingPrivateLinks.feature:25](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L25)
|
||||
- [webUIPrivateLinks/accessingPrivateLinks.feature:35](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L35)
|
||||
- [webUIPrivateLinks/accessingPrivateLinks.feature:45](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L45)
|
||||
|
||||
### [various sharing settings cannot be set](https://github.com/owncloud/ocis/issues/1328)
|
||||
- [webUIRestrictSharing/disableSharing.feature:16](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIRestrictSharing/disableSharing.feature#L16)
|
||||
|
||||
@@ -62,6 +62,22 @@ Feature: Share spaces
|
||||
Then the user "Brian" should not have a space called "share space"
|
||||
|
||||
|
||||
Scenario Outline: Owner of a space cannot see the space after removing his access to the space
|
||||
Given user "Alice" has shared a space "share space" to user "Brian" with role "manager"
|
||||
When user "<user>" unshares a space "share space" to user "Alice"
|
||||
Then the HTTP status code should be "200"
|
||||
And the user "Brian" should have a space called "share space" owned by "Alice" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| id | %space_id% |
|
||||
| name | share space |
|
||||
But the user "Alice" should not have a space called "share space"
|
||||
Examples:
|
||||
| user |
|
||||
| Alice |
|
||||
| Brian |
|
||||
|
||||
|
||||
Scenario: A user can add another user to the space managers to enable him
|
||||
Given user "Alice" has uploaded a file inside space "share space" with content "Test" to "test.txt"
|
||||
When user "Alice" shares a space "share space" to user "Brian" with role "manager"
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
"scope": "openid profile email"
|
||||
},
|
||||
"options": {
|
||||
"topCenterNotifications": true,
|
||||
"disablePreviews": true,
|
||||
"displayResourcesLazy": false,
|
||||
"sidebar": {
|
||||
"shares": {
|
||||
|
||||
Reference in New Issue
Block a user