Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 4.0.0 #6838

Closed
67 of 68 tasks
ScharfViktor opened this issue Jul 18, 2023 · 46 comments
Closed
67 of 68 tasks

Release 4.0.0 #6838

ScharfViktor opened this issue Jul 18, 2023 · 46 comments

Comments

@ScharfViktor
Copy link
Contributor

ScharfViktor commented Jul 18, 2023

Template

Release Template

Prerequisites

  • DEV/QA: Kickoff meeting [Kickoff meeting] (https://confluence.owncloud.com/display/QA/Technical+release+3.1.0+Overview)
  • DEV/QA: Define client versions and provide a list of new features https://confluence.owncloud.com/display/PROD/Infinite+Scale+3.1.0+Featureset
  • DEV/QA: check transifex
    • DEV/QA: coverage is for German
    • DEV/QA: last sync run if the pull/push worked
  • DEV: Create branch release-3.1.0-beta.1 -> CODEFREEZE
    • DEV: bump ocis version in necessary files
    • DEV: changelog/CHANGELOG.tmpl
    • DEV: ocis-pkg/version/version.go
    • DEV: sonar-project.properties
    • DEV: prepare changelog folder in changelog/x.x.x_????_??_??
  • DEV: Check successful CI run on release branch
  • DEV: Create signed tag vx.y.z-rc.x
  • DEV: Check successful CI run on vx.y.z-rc.x tag / BLOCKING for all further activity
  • DEV: Merge back release branch
  • DEV: bump released deployments to vx.y.z-rc.x
  • DEV: update ocis.released.owncloud.works
  • DEV: https://ocis.team.owncloud.works/
    • DEV: needs snapshot and migration
  • DEV/QA: inform the desktop team of changes that may affect them

QA Phase

After QA Phase

  • Brief company-wide heads up via mail @tbsbdr

  • DEV: Create branch release-x.x.x

    • DEV: bump ocis version in necessary files
    • DEV: ocis-pkg/version/version.go
    • DEV: sonar-project.properties
    • DEV: released deployment versions
    • DEV: prepare changelog folder in changelog/x.x.x_???
  • Release Notes + Breaking Changes @tbsbdr

  • Migration + Breaking Changes Admin Doc @mmattel

  • DEV: Create final signed tag

  • DEV: Check successful CI run on vx.y.z tag / BLOCKING for all further activity

  • Merge release notes

Post-release communication

  • DEV: Create a docs-stable-x.y branch based on the docs folder in the ocis repo @micbar
  • DEV/QA: Ping documentation in RC about the new release tag (for ocis/helm chart version bump in docs)
  • DEV/QA: Ping marketing to update all download links (download mirrors are updated at the full hour, wait with ping until download is actually available)
  • DEV/QA: Ping @hodyroff once the demo instances are running this release
  • DEV: Merge back release branch
  • DEV: Create stable-x.y branch in the ocis repo from final tag
@wkloucek
Copy link
Contributor

@ScharfViktor Current master of the oCIS Helm Chart is on 3.1.0-beta.1 now. The only problem I'm aware of right now is owncloud/ocis-charts#365

@SwikritiT
Copy link
Contributor

E2E test local setup

ownCloud | Infinite Scale
Version 3.1.0-beta.1
Web client version 7.1.0-rc.1

All the tests passed

50scenarios (50 passed)
862 steps (862 passed)
15m47.925s (executing steps: 15m47.346s)

@ScharfViktor
Copy link
Contributor Author

ScharfViktor commented Jul 20, 2023

Compatibility test between owncloud/ocis:3.0.0 and ocis:3.1.0-beta.1 using OCIS_DECOMPOSEDFS_METADATA_BACKEND: messagepack

shares:

  • public share (protected and with an expiration date)
  • share with user as role editor (with an expiration date)
  • share with user as role viewer
  • share with group "Users"

project space:

  • uploaded folder & files
  • trashed files
  • share space with user
  • public share space

files:

  • uploaded folder & files
  • version of files
  • trashed files
  • GDPR export

users

  • non demo user with role admin
  • non demo user with role user
  • created new user
  • disabled user
  • created new group

settings

  • language settings
  • update logo
  • disable mail notification

notification

  • [] unread notification - No notification after switching

Remarks: Do we need to provide unread notifications to the user after switching versions?

@SwikritiT
Copy link
Contributor

E2E test S3 setup

setup from https://github.com/owncloud/ocis/blob/master/deployments/examples/ocis_s3/docker-compose.yml

ownCloud | Infinite Scale
Version 3.1.0-beta.1
Web client version 7.1.0-rc.1

All the tests passed

50scenarios (50 passed)
862 steps (862 passed)
14m10.905s (executing steps: 14m10.309s)

@ScharfViktor
Copy link
Contributor Author

K6 results on intel test machine

ocis - [3.1.0-beta.1]

using .envrc envs

## envs ```

export SEED_USERS_CREATE=false
export SEED_USERS_DELETE=false
export SEED_GROUPS_CREATE=false
export SEED_GROUPS_DELETE=false

export ADMIN_LOGIN=admin
export ADMIN_PASSWORD=1ohCGSnrYSFHHzQAzn4rGbRTCjjktDrR5kDQKhLuTCg

export POOL_GROUPS=/root/loadtest/instance-one-jfd/pools/group.pool.json
export POOL_USERS=/root/loadtest/instance-one-jfd/pools/user.pool.json

export PLATFORM_BASE_URL=https://one.jfd-lasttest.owncloud.works

export AUTH_N_PROVIDER_TYPE=keycloak
export AUTH_N_PROVIDER_KEYCLOAK_REALM=ocis
export AUTH_N_PROVIDER_KEYCLOAK_BASE_URL=https://keycloak.jfd-lasttest.owncloud.works/auth/
export AUTH_N_PROVIDER_KEYCLOAK_REDIRECT_URL=https://one.jfd-lasttest.owncloud.works/oidc-callback.html

export TEST_KOKO_PLATFORM_010_RAMPING_STAGES_VUS=1000
export TEST_KOKO_PLATFORM_010_RAMPING_STAGES_UP_DURATION=60m

export TEST_KOKO_PLATFORM_020_RAMPING_SLEEP_AFTER_ITERATION=2s
export TEST_KOKO_PLATFORM_020_RAMPING_STAGES_VUS=1000
export TEST_KOKO_PLATFORM_020_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_020_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_020_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_030_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_030_RAMPING_STAGES_VUS=250
export TEST_KOKO_PLATFORM_030_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_030_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_030_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_040_RAMPING_SLEEP_AFTER_ITERATION=60s
export TEST_KOKO_PLATFORM_040_RAMPING_STAGES_VUS=500
export TEST_KOKO_PLATFORM_040_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_040_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_040_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_050_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_050_RAMPING_STAGES_VUS=500
export TEST_KOKO_PLATFORM_050_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_050_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_050_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_070_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_070_RAMPING_STAGES_VUS=200
export TEST_KOKO_PLATFORM_070_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_070_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_070_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_080_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_080_RAMPING_STAGES_VUS=50
export TEST_KOKO_PLATFORM_080_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_080_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_080_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_090_RAMPING_SLEEP_AFTER_ITERATION=60s
export TEST_KOKO_PLATFORM_090_RAMPING_STAGES_VUS=250
export TEST_KOKO_PLATFORM_090_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_090_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_090_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_100_RAMPING_SLEEP_AFTER_ITERATION=60s
export TEST_KOKO_PLATFORM_100_RAMPING_STAGES_VUS=250
export TEST_KOKO_PLATFORM_100_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_100_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_100_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_110_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_110_RAMPING_STAGES_VUS=1000
export TEST_KOKO_PLATFORM_110_RAMPING_STAGES_UP_DURATION=20m
export TEST_KOKO_PLATFORM_110_RAMPING_STAGES_PEAK_DURATION=30m
export TEST_KOKO_PLATFORM_110_RAMPING_STAGES_DOWN_DURATION=10m

export TEST_KOKO_PLATFORM_020_RAMPING_SLEEP_AFTER_ITERATION=2s
export TEST_KOKO_PLATFORM_030_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_040_RAMPING_SLEEP_AFTER_ITERATION=60s
export TEST_KOKO_PLATFORM_050_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_070_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_080_RAMPING_SLEEP_AFTER_ITERATION=30s
export TEST_KOKO_PLATFORM_090_RAMPING_SLEEP_AFTER_ITERATION=60s
export TEST_KOKO_PLATFORM_100_RAMPING_SLEEP_AFTER_ITERATION=60s
export TEST_KOKO_PLATFORM_110_RAMPING_SLEEP_AFTER_ITERATION=30s

Overview

Test value (med) 3.1.0-beta.1
checks 17.30%
http_req_failed 0.84%
data_received 81GB
data_send 287GB
http_req_blocked 280ns
http_req_connecting 0s
http_req_duration 52.93ms
http_req_duration (expected_response:true) 1.64s
http_req_receiving 56.78µs
http_req_sending 112.71µs
http_req_tls_handshaking 0s
http_req_waiting 52.55ms
http_reqs 1209017 333.061406/s
iteration_duration 2.09s
iterations 1036902 285.646966/s
vus 5
vus_max 3750

ocis:3.1.0-beta.1

## Test run
     checks.........................: 17.30%  ✓ 212105     ✗ 1013574
     data_received..................: 81 GB   22 MB/s
     data_sent......................: 287 GB  79 MB/s
     http_req_blocked...............: avg=3.65ms  min=0s      med=280ns    max=3.4s   p(90)=621ns    p(95)=37.04ms 
     http_req_connecting............: avg=1.64ms  min=0s      med=0s       max=3.06s  p(90)=0s       p(95)=16.58ms 
     http_req_duration..............: avg=2.04s   min=0s      med=52.93ms  max=50.78s p(90)=5.16s    p(95)=12.8s   
       { expected_response:true }...: avg=5.36s   min=17.93ms med=1.64s    max=50s    p(90)=14.5s    p(95)=17.53s  
     http_req_failed................: 83.83%  ✓ 1013574    ✗ 195443 
     http_req_receiving.............: avg=2.08ms  min=0s      med=56.78µs  max=7.41s  p(90)=117.81µs p(95)=299.13µs
     http_req_sending...............: avg=13.69ms min=0s      med=112.71µs max=20.17s p(90)=200.55µs p(95)=287.43µs
     http_req_tls_handshaking.......: avg=1.95ms  min=0s      med=0s       max=1.75s  p(90)=0s       p(95)=20.08ms 
     http_req_waiting...............: avg=2.03s   min=0s      med=52.55ms  max=50.31s p(90)=5.05s    p(95)=12.75s  
     http_reqs......................: 1209017 333.061406/s
     iteration_duration.............: avg=9.76s   min=2.02s   med=2.09s    max=4m21s  p(90)=30.25s   p(95)=43.03s  
     iterations.....................: 1036902 285.646966/s
     vus............................: 5       min=0        max=3750 
     vus_max........................: 3750    min=63       max=3750 


running (1h00m30.0s), 0000/3750 VUs, 1036902 complete and 1020 interrupted iterations
add_remove_tag_100             ✓ [======================================] 000/250 VUs    1h0m0s
create_remove_group_share_090  ✓ [======================================] 000/250 VUs    1h0m0s
create_space_080               ✓ [======================================] 01/50 VUs      1h0m0s
create_upload_rename_delete... ✓ [======================================] 000/500 VUs    1h0m0s
download_050                   ✓ [======================================] 000/500 VUs    1h0m0s
navigate_file_tree_020         ✓ [======================================] 0000/1000 VUs  1h0m0s
sync_client_110                ✓ [======================================] 0000/1000 VUs  1h0m0s
user_group_search_070          ✓ [======================================] 000/200 VUs    1h0m0s

## History a different approach: * [2.0.0-beta8](https://github.com//issues/4465#issuecomment-1243691581)

with the release of 3.1.0 we started to run one big load test using k8s on test cluster with 2 default replicas per service

Result:

image

@saw-jan
Copy link
Member

saw-jan commented Jul 20, 2023

Automated GUI tests with desktop-client 4.1.0 (linux)

oCIS: 3.1.0-beta.1
desktop-cleint: 4.1.0
os: Linux

Build: https://drone.owncloud.com/owncloud/client/16093/5/11
Screenshot from 2023-07-20 18-30-32

@ScharfViktor
Copy link
Contributor Author

Smoke Test with Web Office

Collabora

  • Spreadsheet

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access
  • Document

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access
  • Presentation

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access

Onlyoffice

  • Spreadsheet

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access
  • Document

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access
  • Presentation

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access

    Remarks: Ocis vs Wopi. file size is 0 after some content is posted  #6858

@ScharfViktor
Copy link
Contributor Author

ScharfViktor commented Jul 21, 2023

@micbar how do you think, should we keep unread notification during the switching ocis version? is it bug or not?
Steps:

  • user has unread notifications
  • switch ocis version

Actual: the user does not have any notifications
Expected: should have or not?

@amrita-shrestha
Copy link
Contributor

amrita-shrestha commented Jul 21, 2023

ownCloud | Infinite Scale
Version 3.1.0-beta.1
Web client version 7.1.0-rc.1

@ScharfViktor Is this bug or an actual plan not to add logo changing feature in this release ❓
One scenario failed : tests/e2e/cucumber/features/smoke/admin-settings/general.ocis.feature:3

Scenario: logo can be changed in the admin settings # tests/e2e/cucumber/features/smoke/admin-settings/general.ocis.feature:3
    When "Admin" logs in
    And "Admin" opens the "admin-settings" app
    And "Admin" navigates to the general management page
    Then "Admin" should be able to upload a logo from the local file "filesForUpload/testavatar.png"
    ✖ failed
      Error: expect(received).toContain(expected) // indexOf

      Expected substring: "testavatar.png"
      Received string:    "themes/owncloud/assets/logo.svg"
          at Proxy.<anonymous> (/home/amrita/yuna/owncloud/web/node_modules/.pnpm/@playwright+test@1.33.0/node_modules/@playwright/test/lib/matchers/expect.js:135:37)
          at Object.uploadLogo (/home/amrita/yuna/owncloud/web/tests/e2e/support/objects/app-admin-settings/general/actions.ts:14:33)
          at General.uploadLogo (/home/amrita/yuna/owncloud/web/tests/e2e/support/objects/app-admin-settings/general/index.ts:34:9)
          at World.<anonymous> (/home/amrita/yuna/owncloud/web/tests/e2e/cucumber/steps/ui/adminSettings.ts:116:5)
    And "Admin" navigates to the general management page
    - skipped
    And "Admin" should be able to reset the logo
    - skipped
    And "Admin" logs out
    - skipped

@saw-jan
Copy link
Member

saw-jan commented Jul 21, 2023

@amrita-shrestha Setup?

@ScharfViktor
Copy link
Contributor Author

@ScharfViktor Is this bug or an actual plan not to add logo changing feature in this release ❓ One scenario failed : tests/e2e/cucumber/features/smoke/admin-settings/general.ocis.feature:3

as far as I remember, it's fixable when you hard refresh page. Try to do that, please

@ScharfViktor
Copy link
Contributor Author

ScharfViktor commented Jul 21, 2023

Smoke test: ocis 3.1.0-beta.1 with ldap:

Preparation

Test

  • upgrade ocis to new version
  • check that
    • created demo users and group still exist
    • created ldap users user1 and group group1 still exist
    • users user1 can log in
    • deleted group philosophy-haters and user marie doesn't exist
    • richard user still disabled and cannot log in
  • using ldap client https://ldap.owncloud.test/
    • create new ldap user user2
    • create new ldap group group2
    • add new user user2 to group group1 and group2
  • new user user2 can log in
  • log in as einstein
    • try to find sharees by user and by group
  • using ldap client https://ldap.owncloud.test/
    • disable user user1, user2, einstein
    • delete physics-lovers, group1, group2, einstein, user1, user2, richard

@mbarz
Copy link

mbarz commented Jul 21, 2023

@mbarz how do you think, should we keep unread notification during the switching ocis version?

I think unread notifications should be kept. But what do I know? Maybe ask @micbar what he thinks.

@wkloucek
Copy link
Contributor

@mbarz how do you think, should we keep unread notification during the switching ocis version?

I think unread notifications should be kept. But what do I know? Maybe ask @micbar what he thinks.

@mbarz Thanks for that quick answer 😆

@ScharfViktor please do not confuse @mbarz and @micbar

@amrita-shrestha
Copy link
Contributor

@ScharfViktor Is this bug or an actual plan not to add logo changing feature in this release question One scenario failed : tests/e2e/cucumber/features/smoke/admin-settings/general.ocis.feature:3

as far as I remember, it's fixable when you hard refresh page. Try to do that, please

yeah its working now

@saw-jan
Copy link
Member

saw-jan commented Jul 21, 2023

e2e tests with ocis-ldap

oCIS 3.1.0-beta.1
Web: 7.1.0-rc.1

Screenshot from 2023-07-21 17-04-50

@ScharfViktor
Copy link
Contributor Author

@ScharfViktor please do not confuse @mbarz and @micbar

ohh, sorry, here I am a goofball. I can't believe I did that ))

@micbar
Copy link
Contributor

micbar commented Jul 21, 2023

@mbarz how do you think, should we keep unread notification during the switching ocis version?

I think unread notifications should be kept. But what do I know? Maybe ask @micbar what he thinks.

@mbarz Thanks for that quick answer 😆

@ScharfViktor please do not confuse @mbarz and @micbar

On a default setup, notifications are kept in memory. They are gone after a restart.

But in a prod setup you would configure ocis to persist the notifications.

@aduffeck @kobergj @dragonchaser What speaks against it to use NATS as the default?

@kobergj
Copy link
Collaborator

kobergj commented Jul 22, 2023

Nothing. We can use nats or redis or any other store we support. I am not aware of issues with any of those stores

For a lightweight single binary I would still suggest to use inmemory stores.

@saw-jan
Copy link
Member

saw-jan commented Jul 24, 2023

Cloud Import with Nextcloud Public Link

1. Import from Folder link share

  • different files (.md, .gif, .odp, .txt, .pdf, .png, .tar.gz, .ods, .odt, .odg)
  • hidden file with extension (.hidden.txt)
  • hidden file without extension (.hidden) - ℹ️ blocked due to security reasons (expected)
Screenshot from 2023-07-24 15-33-21 Screenshot from 2023-07-24 15-54-07
  • empty file (0 byte)
  • import files/folders from link share of shared received folder
  • empty folder - ❌ doesn't get imported (maybe expected)

2. Import from File link share - ❌ nothing to import (maybe expected)

Screenshot from 2023-07-24 16-06-36

CC @ScharfViktor

@micbar
Copy link
Contributor

micbar commented Jul 24, 2023

Changelog

oCIS

  • Bugfix - Add default store to postprocessing: #6578
  • Bugfix - Add token to LinkAccessedEvent: #6554
  • Bugfix - Add missing timestamps: #6515
  • Bugfix - Don't connect to ldap on startup: #6565
  • Bugfix - Handle the bad request status: #6469
  • Bugfix - Fix the oidc role assigner: #6605
  • Bugfix - Fix search shares: #6741
  • Bugfix - Restart Postprocessing: #6753
  • Change - YAML configuration files are restricted to yaml-1.2: #6510
  • Enhancement - Add 'ocis decomposedfs check-treesize' command: #6556
  • Enhancement - Add IDs to graph resource logging: #6593
  • Enhancement - Add permissions to report: #6528
  • Enhancement - Add more metadata to the remote item: #6300
  • Enhancement - Add X-Request-Id to all responses: #6715
  • Enhancement - Add SSE Endpoint: #5998
  • Enhancement - We added the storage id to the audit log for spaces: #6548
  • Enhancement - Make the post logout redirect uri configurable: #6583
  • Enhancement - Make the app provider service name configurable: #6482
  • Enhancement - Add old & new values to audit logs: #6537
  • Enhancement - Update reva to v2.15.0: #6829
  • Enhancement - Clarify license text in the dev docs: #6755
  • Enhancement - Use reva client selectors: #6452
  • Enhancement - Thumbnails can be disabled for webdav & web now: #6577
  • Enhancement - Add companion URL config: #6453
  • Enhancement - Add imprint and privacy url config: #6462
  • Enhancement - Add logged out url config: #6549
  • Enhancement - Add WEB_OPTION_OPEN_LINKS_WITH_DEFAULT_APP env variable: #6328
  • Enhancement - Add postprocessing mimetype to extension helper: #6133
  • Enhancement - Provide Search filter for locations: #6713
  • Enhancement - Add search result content preview and term highlighting: #6634
  • Enhancement - Add WEB_OPTION_TOKEN_STORAGE_LOCAL env variable: #6760
  • Enhancement - Fix envvar defaults: #6516
  • Enhancement - Skip if the simulink is a directory: #6574
  • Enhancement - Fix the groupname validation: #6490
  • Enhancement - Fix the username validation: #6436
  • Enhancement - Move graph to service tracerprovider: #6695
  • Enhancement - Move proxy to service tracerprovider: #6591
  • Enhancement - Add functionality to retry postprocessing: #6500
  • Enhancement - Update go-micro kubernetes registry: #6457
  • Enhancement - Update web to v7.1.0-rc.1: #6828
  • Enhancement - Allow disabling wopi chat: #6544

Web

Reva

@micbar
Copy link
Contributor

micbar commented Jul 24, 2023

Changes which could affect the clients

@HanaGemela @ScharfViktor @jesmrec

@michaelstingl
Copy link
Contributor

ownCloud iOS + Android apps query thumbnails for EVERY file, and they're used to 404's for file types without proper thumbnail support, so I wouldn't expect any problems.

@saw-jan
Copy link
Member

saw-jan commented Jul 24, 2023

Cloud Import with Google Drive

  • different files (.md, .gif, .odp, .txt, .pdf, .png, .tar.gz, .zip, .ods, .odt, .odg)
  • hidden file with extension (.hidden.txt)
  • empty file (0 byte)
  • shared with me files/folders
  • hidden file without extension (.hidden) - ℹ️ blocked due to security reasons (expected)
  • empty folder - ❌ doesn't get imported (maybe expected)

@ScharfViktor
Copy link
Contributor Author

Cloud Import with One Drive

  • different files (.md, .gif, .odp, .txt, .pdf, .png, .tar.gz, .zip, .ods, .odt, .odg)
  • viral files
  • hidden file with extension (.hidden.txt)
  • empty file (0 byte) - not possible upload to oneDrive
  • shared with me files/folders - not possible to see shared folder of oneDrive
  • hidden file without extension (.hidden) - not blocked
  • empty folder - ❌ doesn't get imported (maybe expected)

Remarks:

  • not possible to import shared folder of oneDrive
  • oneDrive has different size of files.
Screenshot 2023-07-24 at 17 16 14

@nirajacharya2
Copy link
Contributor

nirajacharya2 commented Jul 25, 2023

Docker compose doc dest

@wkloucek
Copy link
Contributor

wkloucek commented Jul 25, 2023

Nothing. We can use nats or redis or any other store we support. I am not aware of issues with any of those stores

For a lightweight single binary I would still suggest to use inmemory stores.

6bec87f#diff-68d9b078637db7c0af192ec4237e8d332d0b8a269809ddd2ebc79c58e2dabf9dR30-R32
6bec87f#diff-2d22d2bc63b81edd2b77e6bcea3893bdc70d8b466c51786dfd10f75f7cd53401R33-R35

Seems like a breaking change when using a persistent store

@kobergj
Copy link
Collaborator

kobergj commented Jul 25, 2023

Seems like a breaking change when using a persistent store

Yes true. It's a breaking change on nats and etcd. It's not a breaking change when using redis or mem.

@jesmrec
Copy link

jesmrec commented Jul 26, 2023

Mobile

Server version: oCIS 3.0.1-beta.1

Android

Device & Android version: Pixel2 - Android 11 (REAL), Pixel 5 - Android 12 (EMU)
Android app version: 4.0
Automatic tests report: https://reports.cucumber.io/reports/25c5c0d3-ebae-4d3c-9027-252a34746710

Test Case Steps Expected Result Result Related Comment
Login OIDC Login in an oCIS server, typing correct OIDC credentials Access to account Passed AUTO
New folder Open FAB and select to create a new folder with correct name The folder is created with the correct name Passed AUTO
Rename 1. Long press on a folder
Select Rename and type new name
Folder is renamed with the new name Passed AUTO
Move 1. Long press on a folder
2. Select Move, and a new location
Folder is moved to the specified location Passed AUTO
Copy 1. Long press on a folder
2. Select Copy, and a location to copy to (including space)
The folder and all its content is copied in the location, and also remains in the original Passed AUTO
Delete 1. Long press on a folder
2. Select Delete
Item deleted Passed AUTO
Sync 1. Create a folder
2. In web app, upload some files in the folder
3. Long press to sync the folder
The folder is sync with the content on server Passed AUTO
Upload Select 300 files from Document provider to upload to oC Files are uploaded and visible in the list of files. All OK in uploads view Passed
Download Tap to download a file The file is downloaded and marked with green arrow Passed AUTO
Av Offline file 1. Long press on a file
2. Select Av. offline
The file is downloaded and set as Av Offline with the purple tick Passed AUTO
Av Offline folder 1. Long press on a folder with subfolders and files inside
2. Select Av. offline
3. Add new content to the folder
2. The folder and all its content is downloaded and set as Av Offline with the purple tick
3. New content is available offline
Passed AUTO
Share with user 1. Share a file and a folder with another user
2. In web, accept the shares
Both are correctly shared and visible by the recipient in Shares space Passed AUTO
Link Create a link over a file and a folder Links are correctly created Passed AUTO
Spaces 1. In web, create some spaces that are visible for the user List of spaces is visible in the account Passed AUTO
Document Provider 1. Add several accounts
2. Open any app with SAF support
All accounts are correctly listed and are browsable Passed

iOS

Device & iOS version: iPhone XR - iOS 16.5.1 (REAL), iPhone 14 - iOS 16.5 (SIM)
iOS app version: 12.0.2

Automatic test report: https://reports.cucumber.io/reports/4bbebd73-d900-4035-bd42-000254a897b2

Test Case Steps Expected Result Result Related Comment
Login OIDC Login in an oCIS server, typing correct OIDC credentials Access to account Passed AUTO
New folder Open '+' and select to create a new folder with correct name The folder is created with the correct name Passed AUTO
Rename 1. Select an item by clicking on 3-dot-button
2. Select Rename and type new correct name
Item is renamed with the new name Passed AUTO
Move 1. Select an item by clicking on 3-dot-button
2. Select Move, and a new location
Folder is moved to the specified location Passed AUTO
Copy 1. Select a folder by clicking on 3-dot-button
2. Select Copy, and a location to copy to (including space)
The folder and all its content is copied to the location, and also remains in the original Passed AUTO
Duplicate 1. Select a folder by clicking on 3-dot-button
2. Select Duplicate
The folder and all its content is duplicated in the current location, with the name adding 2 Passed AUTO
Delete 1. Select a folder by clicking on 3-dot-button
2. Select Delete and submit deletion
Item deleted Passed AUTO
Upload Files Select many files from File apps to upload to oC Files are uploaded Passed
Upload Albums Select 300 images and videos from Albums to upload to oC Images and videos are uploaded Passed
Download Tap to download a file The file is downloaded and previewed Passed
Av Offline 1. Select a folder by clicking on 3-dot-button
2. Select set as Av Offline file
The file is downloaded and set as Av Offline Passed AUTO
Av Offline folder 1. Select a folder with subfolders inside by clicking on 3-dot-button
2. Select Av. offline
3. Add new content to the folder
2. The folder and all its content is downloaded and set as Av Offline
3. New content is available offline
Passed AUTO
Share with user 1. Select file and folder by clicking on 3-dot-button
2. Select Share and add new recipient
3. Recipient accepts the share
Both are correctly shared and visible by the recipient in Shares space Passed AUTO
Link Create a link over a file and a folder Links are correctly created Passed AUTO
Spaces 1. In web, create some spaces that are visible for the user List of spaces is visible in the account Passed AUTO
Files App 1. Add several accounts
2. Open Files app
All accounts are correctly listed and are browsable Passed

Final outcome: ✅

From mobile side, no regards.

@micbar micbar pinned this issue Aug 11, 2023
@micbar
Copy link
Contributor

micbar commented Aug 11, 2023

Next steps:

Post-release communication

* [ ] DEV: Create a x.y.z release in the ocis-helm repo (frozen state) @wkloucek

  • DEV/QA: Ping documentation in RC about the new release tag (for ocis/helm chart version bump in docs)
  • DEV/QA: Ping marketing to update all download links (download mirrors are updated at the full hour, wait with ping until download is actually available) @butonic
  • DEV/QA: Ping @hodyroff once the demo instances are running this release @butonic
  • DEV: Merge back release branch @butonic
  • DEV: Create stable-x.y branch in the ocis repo from final tag @butonic
  • DEV: Create a docs-stable-x.y branch based on the docs folder in the ocis repo @butonic

@amrita-shrestha
Copy link
Contributor

amrita-shrestha commented Aug 24, 2023

@saw-jan
Copy link
Member

saw-jan commented Aug 24, 2023

Smoke Test with Web Office

Collabora

  • Spreadsheet

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access
  • Document

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access
  • Presentation

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access

Onlyoffice

  • Spreadsheet

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access
  • Document

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access
  • Presentation

    • Create
    • Open
    • Open with two users in collaboration mode and read-only
    • Open with two users in collaboration mode and write access

@saw-jan
Copy link
Member

saw-jan commented Aug 24, 2023

Smoke Test

Case 1: admin share folder(with file) to marie: @KarunAtreya

Admin:

  • upload big file 10gb (Show details, pause upload, resume upload work correct)
  • upload folder with 803 small images.
  • Check pagination, count items per page.
  • upload folder(drag folder) "folder_to_share" with sample.pdf
  • share folder "folder_to_share" to marie with editor role

Marie:

  • accept "folder_to_share"
  • upload new file "file.txt" to "folder_to_share" (admin sees file.txt)
  • open sample.pdf
  • rename sample.pdf to file.pdf (use rigth click) (admin now sees file.pdf)

Admin:

  • add new file.jpeg to "folder_to_share"
  • move file.pdf to root (ctrl x -> ctrl v) "personal" (marie can not see file.pdf)
  • add new "file.txt" (select replace option) create new version. (use drag and drop)
  • open "file.tx" in markdown-editor. Change and save. (admin sees "file.txt" updated)

Admin:

  • change share "folder_to_share" from role "editor" to "viewer" (marie cannot rename/move/delete files in folder and cannot create new document in the folder)

Marie:

  • can decline "folder_to_share"
  • can accept again

Admin:

  • delete folder "folder_to_share" (removed from shared with me, removed from Marie)

Case 2: admin share file to marie: @KarunAtreya

Admin:

  • upload file.jpeg
  • share file.jpeg to marie with role viewer (use main menu. find marie by email marie@example.org)

Marie:

  • accept file
  • can open/download file
  • can share/copy quicklink
  • cannot delete/move/rename file

Admin:

  • share share "file.txt" with editor role

Marie:

  • change content of the file (can see new version)

Admin:

  • remove share "file.jpeg" (marie cannot see "file.jpeg")

Case 3: admin create public links to folder @nirajacharya2

Admin:

  • create folder "for upload"
  • add link with name "to_upload" with role "Uploader" with password and expiration date
  • open link and enter password (can only upload)
  • upload file (admin can see new file)
  • change share "for upload" from "Uploader" to "editor"
  • admin add new file to folder "for upload"
  • refresh link (file exist)
  • admin changes password (refresh link has to type new password)

Case 4: admin create link to file @nirajacharya2

Admin:

  • create file png
  • add link with main menu
  • open link(can open, download, see) in the incognito tab
  • edit link by adding password
  • refresh page (input password)
  • delete link
  • refresh page (resource not found)
  • delete file
  • restore
  • delete
  • Empty trash

Case 5: space story: @PrajwolAmatya

Katherine:

  • create space
  • add space image
  • add subtitle "for test"
  • edit description
  • try to upload file (more 1 Gb)
  • increase quota to 5Gb and try again
  • delete file
  • add member Marie with editor role
  • add member Einstein with viewer role

Marie:

  • can see space without accepting
  • change image and description
  • can upload file/folder and create file and folder
  • can create resource but cannot share space or space resource
  • can see deleted files and can restore files from trash
  • cannot disable space

Einstein:

  • can see space without accepting
  • cannot change image and description
  • cannot upload file/folder and create file and folder
  • cannot create resource and share space
  • can see deleted files and cannot restore files from trash
  • cannot disable space

Case 6: create new user via accounts: @Salipa-Gurung

Admin:

  • create new user account
  • create new group
  • add user to group
  • share folder with group
  • change language
  • delete users

Case 7: Search @Salipa-Gurung

  • personal space
  • project space
  • share jail

@grgprarup
Copy link
Contributor

grgprarup commented Aug 24, 2023

@KarunAtreya
Copy link
Contributor

Case 2: admin share file to marie:

  • change content of the file (can see new version)

while sharing file file.txt with some content by admin to zombie10001 with editor role
when user zombie10001 accepts the share and tries to add some content, error occurs and zombie10001 cannot edit the file despite having editor role
test server: https://one.jfd-lasttest.owncloud.works/
response: with status 403

{
    "error": {
        "code": "deniedByPolicy",
        "message": "Operation denied due to security policies",
        "innererror": {
            "date": "2023-08-24T11:06:59Z",
            "filename": "myfile.txt",
            "method": "PUT",
            "path": "/remote.php/dav/spaces/a0ca6a90-a365-4782-871e-d44447bbc668!cf33f70e-9322-4dbc-8265-941f0ac4818c:ddc2004c-0977-11eb-9d3f-a793888cd0f8:1d2dedc4-2f66-406c-af5b-208146f73234",
            "request-id": "0357ba36-32a4-4f4b-aa25-f80235086bfa"
        }
    }
}

and shows on ui
Screenshot from 2023-08-24 16-39-20

but this does not persist locally

@saw-jan
Copy link
Member

saw-jan commented Aug 24, 2023

^ CC @butonic Can policy service deny editing files by sharee?

@butonic
Copy link
Member

butonic commented Aug 24, 2023

hm ... the policy engine is enabled:

          policies:
            enabled: true
            engineTimeout: 10s
            policies:
            - fileName: proxy.rego
              content: |-
                package proxy

                import future.keywords.if
                import data.utils

                default granted := true

                granted = false if {
                    utils.is_request_type_put
                    pathPrefixes := [
                        "/dav",
                        "/remote.php/webdav",
                        "/remote.php/dav",
                        "/webdav",
                    ]
                    restricted := pathPrefixes[_]
                    startswith(input.request.path, restricted)
                    not utils.collection_contains(utils.ALLOWED_FILE_EXTENSIONS, input.request.path)
                }

                granted = false if {
                    pathPrefixes := [
                        "/data",
                        "/dav",
                        "/remote.php/webdav",
                        "/remote.php/dav",
                        "/webdav",
                    ]
                    utils.is_request_type_post
                    restricted := pathPrefixes[_]
                    startswith(input.request.path, restricted)
                    not utils.collection_contains(utils.ALLOWED_FILE_EXTENSIONS, input.resource.name)
                }

            - fileName: postprocessing.rego
              content: |-
                package postprocessing

                import future.keywords.if
                import data.utils

                default granted = true

                granted := false if {
                    not utils.collection_contains(utils.ALLOWED_FILE_EXTENSIONS, input.resource.name)
                }

            - fileName: utils.rego
              content: |-
                package utils

                import future.keywords.if

                ALLOWED_FILE_EXTENSIONS := [
                    ".apk", ".avi", ".bat", ".bmp", ".css", ".csv", ".doc", ".docm", ".docx",
                    ".docxf", ".dotx", ".eml", ".epub", ".htm", ".html", ".ipa", ".jar", ".java",
                    ".jpg", ".jpeg", ".js", ".json", ".mp3", ".mp4", ".msg", ".odp", ".ods", ".odt", ".oform",
                    ".ots", ".ott", ".pdf", ".php", ".png", ".potm", ".potx", ".ppsm", ".ppsx", ".ppt",
                    ".pptm", ".pptx", ".py", ".rtf", ".sb3", ".sprite3", ".sql", ".svg", ".tif", ".tiff",
                    ".txt", ".xls", ".xlsm", ".xlsx", ".xltm", ".xltx", ".xml", ".zip", ".md"
                ]

                ##

                is_stage_http {
                    input.stage == "http"
                }

                is_stage_pp {
                    input.stage == "pp"
                }

                ##

                is_user_admin {
                    input.user.username == "admin"
                }

                ##

                is_request_type_put {
                    is_stage_http
                    input.request.method == "PUT"
                }

                is_request_type_post {
                    is_stage_http
                    input.request.method == "POST"
                }

                is_request_type_mkcol {
                    is_stage_http
                    input.request.method == "MKCOL"
                }

                ##

                collection_contains(collection, source) {
                    current := collection[_]
                    endswith(source, current)
                }

but that does allow txt files ... 🤔

@micbar
Copy link
Contributor

micbar commented Aug 24, 2023

The policies were changed during development

@micbar
Copy link
Contributor

micbar commented Aug 24, 2023

Check with @fschade

@fschade
Copy link
Contributor

fschade commented Aug 24, 2023

@butonic here you can find the latest rego rule files,

https://github.com/owncloud/ocis/tree/master/deployments/examples/service_policies/policies

we should test it out together.

@butonic butonic changed the title Release 3.1.0-beta.1 Release 4.0.0 Aug 24, 2023
@butonic
Copy link
Member

butonic commented Aug 24, 2023

After updating the rego files saving the txt file as a share recipient works again. Fixed IMO

@fschade
Copy link
Contributor

fschade commented Aug 24, 2023

@butonic 🤝 thanks for speedy support 🤗

@KarunAtreya
Copy link
Contributor

After updating the rego files saving the txt file as a share recipient works again. Fixed IMO

retested and passed ☑️

@saw-jan
Copy link
Member

saw-jan commented Aug 25, 2023

We have successfully completed the testing phase 🏁 .
Everything looks good except for some reported issues which are not blockers for release.

NOTE: The following test case has been done with a local docker-compose setup, since we had trouble loading a large number of users in server https://one.jfd-lasttest.owncloud.works/

Case 6: create new user via accounts:
Admin:

  • create new user account
  • create new group
  • add user to group
  • share folder with group
  • change language
  • delete users

CC @butonic @kobergj

@butonic
Copy link
Member

butonic commented Aug 25, 2023

that is expected. the deployment uses external user management so they cannot be created via the graph api.

@ScharfViktor
Copy link
Contributor Author

Release 4.0.0 is available 🎉

Binaries

https://download.owncloud.com/ocis/ocis/stable/4.0.0/

Docker

docker pull owncloud/ocis:4.0.0

@ScharfViktor ScharfViktor unpinned this issue Aug 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests