Initial QSfera import

This commit is contained in:
Курнат Андрей
2026-06-07 10:20:04 +03:00
commit 2315f25754
16485 changed files with 4826827 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
variables:
- &build_image 'opencloudeu/desktop-client-build:ubuntu-24.04-qt6.10'
- &minio_image 'minio/mc:RELEASE.2021-10-07T04-19-58Z'
- &minio_environment
AWS_ACCESS_KEY_ID:
from_secret: cache_s3_access_key
AWS_SECRET_ACCESS_KEY:
from_secret: cache_s3_secret_key
CACHE_BUCKET:
from_secret: cache_s3_bucket
MC_HOST: 'https://s3.ci.opencloud.eu'
- &trigger_path
include:
- test/gui/**
- src/**
- cmake/**
- THEME.cmake
- VERSION.cmake
- CMakeLists.txt
- QSFERA.cmake
- .woodpecker/**
exclude:
- .woodpecker/ready-release-go.yaml
- .woodpecker/translation.yaml
- test/gui/manual-test-plan
when:
- branch:
- main
- stable-*
event:
- push
- manual
path:
<<: *trigger_path
- event: tag
- event: pull_request
path:
<<: *trigger_path
evaluate: |
!(CI_COMMIT_SOURCE_BRANCH matches "next-release/(main|stable-*)" && CI_COMMIT_AUTHOR == "openclouders")
- event: cron
cron: nightly*
workspace:
base: /woodpecker/
path: desktop
steps:
- name: check-caches
image: *minio_image
environment:
<<: *minio_environment
commands:
- mc alias set s3 $MC_HOST $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
- bash test/gui/woodpecker/script.sh check_python_cache
- bash test/gui/woodpecker/script.sh check_browsers_cache
- name: install-python-modules
image: *build_image
commands:
- . ./.woodpecker.env
- if $PYTHON_CACHE_FOUND; then exit 0; fi
- cd test/gui/
- python3 -m venv .venv --system-site-packages
- . .venv/bin/activate
- make pip-install
- tar -czf python-cache.tar.gz .venv
- name: install-browsers
image: *build_image
environment:
PLAYWRIGHT_BROWSERS_PATH: /woodpecker/desktop/test/gui/.playwright
commands:
- . ./.woodpecker.env
- if $BROWSER_CACHE_FOUND; then exit 0; fi
- cd test/gui/
- python3 -m venv .venv --system-site-packages
- . .venv/bin/activate
- grep "^playwright" requirements.txt | pip install -r /dev/stdin
- make install-chromium
- tar -czf playwright-browsers.tar.gz .playwright
- name: upload-browsers-cache
image: *minio_image
environment:
<<: *minio_environment
commands:
- . ./.woodpecker.env
- if $BROWSER_CACHE_FOUND; then exit 0; fi
- playwright_version=$(bash test/gui/woodpecker/script.sh get_playwright_version)
- mc alias set s3 $MC_HOST $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
- mc cp -r -a $CI_WORKSPACE/test/gui/playwright-browsers.tar.gz s3/$CACHE_BUCKET/desktop/browsers-cache/$playwright_version/
- name: upload-python-cache
image: *minio_image
environment:
<<: *minio_environment
commands:
- . ./.woodpecker.env
- if $PYTHON_CACHE_FOUND; then exit 0; fi
- requirements_sha=$(bash test/gui/woodpecker/script.sh get_requirementstxt_hash)
- mc alias set s3 $MC_HOST $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
- mc cp -r -a $CI_WORKSPACE/test/gui/python-cache*.tar.gz s3/$CACHE_BUCKET/desktop/python-cache/$requirements_sha/
+56
View File
@@ -0,0 +1,56 @@
variables:
- &golang_image 'docker.io/golang:1.24'
- &qa_repo 'https://github.com/opencloud-eu/qa.git'
- &qa_repo_branch 'main'
- &current_repo_id '11'
- &ci_woodpecker_url
from_secret: oc_ci_url
when:
- event:
- push
- manual
branch: ${CI_REPO_DEFAULT_BRANCH}
status:
- success
- failure
- event: pull_request
status:
- failure
- event: cron
cron: nightly*
status:
- success
- failure
depends_on:
- build
- ui-tests
skip_clone: true
steps:
- name: notify
image: *golang_image
environment:
HTTP_PROXY:
from_secret: ci_http_proxy
HTTPS_PROXY:
from_secret: ci_http_proxy
MATRIX_HOME_SERVER: matrix.org
MATRIX_ROOM_ALIAS:
from_secret: opencloud-notifications-channel
MATRIX_USER:
from_secret: opencloud-notifications-user
MATRIX_PASSWORD:
from_secret: opencloud-notifications-user-password
QA_REPO: *qa_repo
QA_REPO_BRANCH: *qa_repo_branch
CI_WOODPECKER_URL: *ci_woodpecker_url
CI_REPO_ID: *current_repo_id
CI_WOODPECKER_TOKEN: no-auth-needed-on-this-repo
commands:
- git clone --single-branch --branch $QA_REPO_BRANCH $QA_REPO /tmp/qa
- cd /tmp/qa/scripts/matrix-notification/
- if [ "$CI_PIPELINE_EVENT" = "cron" ]; then MESSAGE_SUFFIX_WHEN_FAILED="CC @artur @pradip.subedi @prashantgrg"; fi
- go run matrix-notification.go
+64
View File
@@ -0,0 +1,64 @@
variables:
- &minio_image 'minio/mc:RELEASE.2021-10-07T04-19-58Z'
- &minio_environment
AWS_ACCESS_KEY_ID:
from_secret: cache_s3_access_key
AWS_SECRET_ACCESS_KEY:
from_secret: cache_s3_secret_key
MC_HOST: 'https://s3.ci.opencloud.eu'
CACHE_BUCKET:
from_secret: cache_s3_bucket
PUBLIC_BUCKET: public
when:
- event:
- push
- manual
branch: ${CI_REPO_DEFAULT_BRANCH}
status:
- success
- failure
- event: pull_request
evaluate: |
!(CI_COMMIT_SOURCE_BRANCH matches "next-release/(main|stable-*)" && CI_COMMIT_AUTHOR == "openclouders")
status:
- success
- failure
- event: cron
cron: nightly*
status:
- success
- failure
depends_on:
- ui-tests
skip_clone: true
matrix:
include:
- JOB_NAME: purge-desktop-build
PURGE_PATH: desktop/client-build/
TTL: 1d
- JOB_NAME: purge-python-cache
PURGE_PATH: desktop/python-cache/
TTL: 14d
- JOB_NAME: purge-browsers-cache
PURGE_PATH: desktop/browsers-cache/
TTL: 14d
- JOB_NAME: purge-logs
PURGE_PATH: desktop/testlogs/
USE_PUBLIC_BUCKET: true
TTL: 7d
steps:
- name: ${JOB_NAME}
image: *minio_image
environment:
<<: *minio_environment
commands:
- mc alias set s3 "$MC_HOST" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY"
- if [ "$USE_PUBLIC_BUCKET" = "true" ]; then CACHE_BUCKET=$PUBLIC_BUCKET; fi
- to_delete=$(mc find "s3/$CACHE_BUCKET/${PURGE_PATH}" --older-than "${TTL}")
- if [ "$to_delete" = "" ]; then exit 0; fi
- mc rm $to_delete
+12
View File
@@ -0,0 +1,12 @@
when:
event: push
branch: ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: release-helper
image: woodpeckerci/plugin-ready-release-go:latest
settings:
git_email: devops@opencloud.eu
forge_type: github
forge_token:
from_secret: github_token
+43
View File
@@ -0,0 +1,43 @@
variables:
- &ubuntu_image 'ubuntu'
- &git_action_plugin 'quay.io/thegeeklab/wp-git-action:2'
when:
- event: cron
cron: translation-sync
steps:
- name: translation-update
image: *ubuntu_image
environment:
TX_TOKEN:
from_secret: tx_token
commands:
- apt update
- ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime
- apt install -y qt6-l10n-tools git curl
- rm translations/*.ts
- git checkout translations/desktop_en.ts
- /usr/lib/qt6/bin/lupdate src -no-obsolete -ts translations/desktop_en.ts
- curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
- . ~/.profile
- tx push -s
- rm -rf /tmp/tx
- tx pull --force --all
- rm tx LICENSE
- name: translation-push
image: *git_action_plugin
settings:
action:
- commit
- push
author_email: devops@opencloud.eu
author_name: opencloudeu
branch: ${CI_REPO_DEFAULT_BRANCH}
empty_commit: false
message: '[tx] updated from transifex'
netrc_password:
from_secret: github_token
netrc_username:
from_secret: github_username
+159
View File
@@ -0,0 +1,159 @@
variables:
- &opencloud_image 'quay.io/opencloudeu/opencloud-rolling:latest'
- &build_image 'opencloudeu/desktop-client-build:ubuntu-24.04-qt6.10'
- &minio_image 'minio/mc:RELEASE.2021-10-07T04-19-58Z'
- &alpine_image 'alpine:3.22.4'
- &minio_environment
AWS_ACCESS_KEY_ID:
from_secret: cache_s3_access_key
AWS_SECRET_ACCESS_KEY:
from_secret: cache_s3_secret_key
CACHE_BUCKET:
from_secret: cache_s3_bucket
MC_HOST: 'https://s3.ci.opencloud.eu'
PUBLIC_BUCKET: public
when:
- branch:
- main
- stable-*
event:
- push
- manual
- event: pull_request
- event: tag
- event: cron
cron: nightly*
depends_on:
- build
- cache-python
workspace:
base: /woodpecker
path: desktop
matrix:
include:
- MATRIX_NAME: gui-tests-1
SUITES: 'features/activity features/add-account features/delete-files-folders features/edit-files features/login-logout features/move-files-folders'
- MATRIX_NAME: gui-tests-2
SUITES: 'features/remove-account-connection features/spaces features/sync-resources features/tabs-settings features/vfs'
steps:
- name: restore-python-cache
image: *minio_image
environment:
<<: *minio_environment
commands:
- requirements_sha=$(sha1sum test/gui/requirements.txt | cut -d" " -f1)
- mc alias set s3 $MC_HOST $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
- mc cp -a s3/$CACHE_BUCKET/desktop/python-cache/$requirements_sha/python-cache.tar.gz $CI_WORKSPACE
- name: restore-browsers-cache
image: *minio_image
environment:
<<: *minio_environment
commands:
- playwright_version=$(bash test/gui/woodpecker/script.sh get_playwright_version)
- mc alias set s3 $MC_HOST $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
- mc cp -r -a s3/$CACHE_BUCKET/desktop/browsers-cache/$playwright_version/playwright-browsers.tar.gz $CI_WORKSPACE
- name: unzip-browsers-cache
image: owncloud/ubuntu:20.04
commands:
- cd test/gui
- tar -xf $CI_WORKSPACE/playwright-browsers.tar.gz -C ./
- name: install-python-modules
image: *build_image
environment:
PLAYWRIGHT_BROWSERS_PATH: /woodpecker/desktop/test/gui/.playwright
commands:
- cd test/gui
- tar -xf $CI_WORKSPACE/python-cache.tar.gz -C ./
- python3 -m venv .venv --system-site-packages
- . .venv/bin/activate
- make install
- python3 -m pip list -v
- name: opencloud
image: *opencloud_image
detach: true
environment:
FRONTEND_SEARCH_MIN_LENGTH: '2'
GRAPH_AVAILABLE_ROLES: b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5,a8d5fe5e-96e3-418d-825b-534dbdf22b99,fb6c3e19-e378-47e5-b277-9732f9de6e21,58c63c02-1d89-4572-916a-870abc5a1b7d,2d00ce52-1fc2-4dbc-8b95-a73b73395f5a,1c996275-f1c9-4e71-abdf-a42f6495e960,312c0871-5ef7-4b3a-85b6-0e4074c64049,aa97fe03-7980-45ac-9e50-b325749fd7e6,63e64e19-8d43-42ec-a738-2b6af2610efa
IDM_ADMIN_PASSWORD: admin
LDAP_GROUP_SUBSTRING_FILTER_TYPE: any
LDAP_USER_SUBSTRING_FILTER_TYPE: any
OC_INSECURE: true
OC_JWT_SECRET: some-opencloud-jwt-secret
OC_LOG_LEVEL: error
OC_SHOW_USER_EMAIL_IN_RESULTS: true
OC_URL: https://opencloud:9200
PROXY_ENABLE_BASIC_AUTH: true
WEB_UI_CONFIG_FILE: /woodpecker/desktop/test/gui/woodpecker/config-opencloud.json
commands:
- opencloud init
- opencloud server
- name: wait-for-opencloud
image: owncloudci/alpine:latest
commands:
- timeout 300 bash -c 'while [ $(curl -sk -uadmin:admin https://opencloud:9200/graph/v1.0/users/admin -w %{http_code} -o /dev/null) != 200 ]; do sleep 1; done'
- name: restore-desktop-client
image: *minio_image
environment:
<<: *minio_environment
commands:
- mc alias set s3 $MC_HOST $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
- mc cp -a -r s3/$CACHE_BUCKET/desktop/client-build/${CI_COMMIT_SHA}/ $CI_WORKSPACE/build
- ls -lh $CI_WORKSPACE/build/bin
- name: gui-tests
image: *build_image
environment:
# system cache environment variables
PYTHONUSERBASE: /woodpecker/desktop/test/gui/.venv
PLAYWRIGHT_BROWSERS_PATH: /woodpecker/desktop/test/gui/.playwright
# webdriver environment variables
WEBDRIVER_HOST: 0.0.0.0
WEBDRIVER_PORT: 4723
WEBDRIVER_RUNNER: /woodpecker/desktop/test/gui/woodpecker/run_atspi_webdriver.sh
# test environment variables
APP_PATH: /woodpecker/desktop/build/bin/qsfera
BACKEND_HOST: https://opencloud:9200
GUI_TEST_REPORT_DIR: /woodpecker/desktop/test/gui/reports
BEHAVE_TEST_DIR: /woodpecker/desktop/test/gui
# Cannot handle this tags format inside a container: --tags='@smoke and not @skip'
BEHAVE_PARAMETERS: '--tags=@smoke --tags=~@skip ${SUITES}'
# - name: crash-log
# image: *alpine_image
# when:
# - status:
# - success
# - failure
# commands:
# - cat test/gui/tmp/QSfera-crash.log 2>/dev/null || exit 0
- name: upload-test-reports
image: *minio_image
when:
- status: failure
environment:
<<: *minio_environment
commands:
- mc alias set s3 $MC_HOST $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
- mc cp -a -r $CI_WORKSPACE/test/gui/reports s3/$PUBLIC_BUCKET/desktop/testlogs/$CI_PIPELINE_NUMBER/$MATRIX_NAME
- name: gui-test-reports
image: *minio_image
when:
- status: failure
environment:
<<: *minio_environment
commands:
- mc alias set s3 $MC_HOST $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
- bash $CI_WORKSPACE/test/gui/woodpecker/gui_test_reports.sh