diff --git a/.gitlab/merge_request_templates/Bugfix.md b/.gitlab/merge_request_templates/Bugfix.md index b007c1bd..a7f58a89 100644 --- a/.gitlab/merge_request_templates/Bugfix.md +++ b/.gitlab/merge_request_templates/Bugfix.md @@ -1,81 +1,57 @@ -## πŸ“Œ Summary +# πŸͺ² Bugfix -Brief description of the issue and what this MR resolves. +*Expected MR Title and git commit message* +*`fix(): `* -> Example: -> Fixes a bug where users were unable to save their profile due to a missing field validation. - ---- ## βœ… Changes -Explain for the reviewer how the change addresses the issue: +Explain for the reviewer how the change addresses the issue, providing some insights on the underlaying cause of the bug. -- Fixed null check on user input -- Added unit test for edge case -- Updated error handling in the `ProfileService` +- ... ---- +## πŸ§ͺ How to reproduce & test -## πŸ§ͺ Analysis +Provida a link to the issue or document the required details below. +In case it is a GitLab issue, reference it at the end of the commit message in square brackets, like `[#123]` -Explain the **underlying cause** of the bug: +### Before the Fix -- What was the unexpected behavior? -- Why did it happen? -- Where in the code or logic did it occur? +1. ... ---- +### After the Fix -## πŸ“š Related Issue(s) +Provide steps for QA or reviewers to test the fix and mention anything reviewers should be aware of: -- Should be listed as part of the commit message. -- Fixes #[issue-number] -- Related to #[optional additional issues] +1. ... -## πŸ§ͺ How to Reproduce & Test +## πŸ”„ Requirements for migrations -Link to issue or document the required details below. +- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes: +- [ ] Any other considerations in context of the update: -### Before the Fix: +# Checklist / Sign-offs -1. Go to `/profile/edit` -2. Leave the "email" field empty -3. Click "Save" -4. Observe 500 server error +## 🏷️ Labels -### After the Fix: +Set labels: -1. Same steps as above -2. Now see appropriate validation message -3. No server error occurs +``` +/label ~"MR-Type::Bugfix" +/label ~"PO::πŸ‘€" +/label ~"Tech Lead::πŸ‘€" +/label ~"QA::πŸ‘€" +/label ~"Testautomation::πŸ‘€" +``` ---- +# πŸ‘· Developer Checklist -## Checklist / Sign-offs +- Does the MR include new bits and pieces (e.g. new secrets) that require documentation? + - [ ] No. + - [ ] Yes, and the documentation was updated accordingly. -### πŸ’Ώ CI/CD - -- [ ] CI pipeline passes for all jobs -- [ ] Linting and formatting checks pass -- [ ] Review app (if used) reflects fix correctly - -### πŸ–₯ QA & Product - -Set related labels on the MR for - -- [ ] `PO::πŸ‘€` -- [ ] `Tech Lead::πŸ‘€` -- [ ] `Testautomation::πŸ‘€` -- [ ] `QA::πŸ‘€` - ---- - -## πŸ‘· Developer Checklist - -- [ ] Code builds and passes linting -- [ ] Tests added or updated -- [ ] Verified fix locally -- [ ] Regression testing done for related functionality -- [ ] No new warnings or errors in logs +Document in an extra comment and link to that comment: +- [ ] How you verified the fix is working as expected, also in upgrade sceanrios. +- [ ] Any regression testing done. +--> Link to comment: diff --git a/.gitlab/merge_request_templates/Default.md b/.gitlab/merge_request_templates/Default.md index e7775e63..67709b08 100644 --- a/.gitlab/merge_request_templates/Default.md +++ b/.gitlab/merge_request_templates/Default.md @@ -1 +1,8 @@ -Please select one of the templates, in case your contribution contains more than a **simple** typo fix. +Thank you for your contribution! + +Please follow these simple guidelines to continue: + +- Create MRs early and use the "draft" state to show that this MR isn't ready for review and merge. +- Flag the MR "ready" as soon as it can be reviewed and QA'd. +- Always assign the MR to yourself and set somebody from the development team as reviewer. If you do not know whom to chose leave the reviewer empty. +- Select one of the templates in case your contribution contains more than simple documentation updates and follow the templates instructions. diff --git a/.gitlab/merge_request_templates/Feature.md b/.gitlab/merge_request_templates/Feature.md index 0adfc63b..d2edf6eb 100644 --- a/.gitlab/merge_request_templates/Feature.md +++ b/.gitlab/merge_request_templates/Feature.md @@ -1,74 +1,47 @@ -## πŸ“Œ Summary +# ⬆️ Feature -Briefly describe what this feature MR does and why it’s needed. - -> Example: -> Adds user profile editing capabilities to the dashboard. This enables users to update their personal information without admin intervention.* - ---- +*Expected MR Title and git commit message* +*`feat(): `* ## βœ… Changes List the key changes made in this MR: -- Added new route /profile/edit -- Created `ProfileEditForm` component -- Integrated with backend API for user updates -- Added unit tests and basic form validation - ---- +- ... ## πŸ§ͺ Tests -Provide steps for QA or reviewers to test the feature. +Provide steps for QA or reviewers to test the feature and mention anything reviewers should be aware of: -1. Login as any user -2. Navigate to `/profile/edit` -3. Update profile info and save -4. Verify changes are persisted and reflected in the UI +- ... ---- +## πŸ”„ Requirements for migrations -## πŸ“š Related Issue(s) +- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes: +- [ ] Any other considerations in context of the update: -- Closes #[issue number] -- Depends on #[merge request or issue, if any] +# Checklist / Sign-offs ---- +## 🏷️ Labels -## πŸ•΅οΈ Notes for Reviewer +Set labels: -Mention anything reviewers should be aware of: +``` +/label ~"MR-Type::Feature" +/label ~"PO::πŸ‘€" +/label ~"Tech Lead::πŸ‘€" +/label ~"QA::πŸ‘€" +/label ~"Testautomation::πŸ‘€" +``` -- Known issues or limitations -- Code sections that may need special attention -- Design considerations or edge cases handled +# πŸ‘· Developer Checklist ---- +- Does the MR include new bits and pieces (e.g. new secrets) that require documentation? + - [ ] No. + - [ ] Yes, and the documentation was updated accordingly. -## Checklist / Sign-offs +Document in an extra comment and link to that comment: +- [ ] How you verified the feature is working as expected, also in upgrade sceanrios. +- [ ] Any regression testing done. -### πŸ’Ώ CI/CD - -- [ ] CI pipeline passes for all jobs -- [ ] Linting and formatting checks pass -- [ ] Review app (if used) reflects fix correctly - -### πŸ–₯ QA & Product - -Set related labels on the MR for - -- [ ] `PO::πŸ‘€` -- [ ] `Tech Lead::πŸ‘€` -- [ ] `Testautomation::πŸ‘€` -- [ ] `QA::πŸ‘€` - ---- - -## πŸ‘· Developer Checklist - -- [ ] Code builds and passes linting -- [ ] Tests added or updated -- [ ] Verified fix locally -- [ ] Regression testing done for related functionality -- [ ] No new warnings or errors in logs +--> Link to comment: diff --git a/.gitlab/merge_request_templates/Other.md b/.gitlab/merge_request_templates/Other.md index 00131701..fde99c09 100644 --- a/.gitlab/merge_request_templates/Other.md +++ b/.gitlab/merge_request_templates/Other.md @@ -1,33 +1,41 @@ -## πŸ“Œ Summary +# πŸŽ‰ Other -Provide a concise summary of **what** this MR does and **why**. - -> Example: -> This MR updates the CI configuration to cache NPM dependencies and reduce pipeline execution time. - ---- +*Expected MR Title and git commit message* +*`fix(): `* ## βœ… Changes -List the key updates made: +Explain for the reviewer and QA the reason for the MR and what changes are included. -- ... - ... ---- +## πŸ”„ Requirements for migrations -## πŸ§ͺ Tests (if applicable) +- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes: +- [ ] Any other considerations in context of the update: -Explain how reviewers or CI can verify the change works as intended. +# Checklist / Sign-offs -> Example: ->- For CI: Check job `build:frontend` completes in <3 mins. ->- For docs: View rendered markdown locally or in GitLab. +## 🏷️ Labels ---- +Set labels: -## 🧾 Checks +``` +/label ~"MR-Type::Other" +/label ~"PO::πŸ‘€" +/label ~"Tech Lead::πŸ‘€" +/label ~"QA::πŸ‘€" +/label ~"Testautomation::πŸ‘€" +``` -- [ ] CI passes -- [ ] No functional changes -- [ ] Verified (if needed) +# πŸ‘· Developer Checklist + +- Does the MR include new bits and pieces (e.g. new secrets) that require documentation? + - [ ] No. + - [ ] Yes, and the documentation was updated accordingly. + +Document in an extra comment and link to that comment: +- [ ] How you verified the change is working as expected, also in upgrade sceanrios. +- [ ] Any regression testing done. + +--> Link to comment: diff --git a/.gitlab/merge_request_templates/Update.md b/.gitlab/merge_request_templates/Update.md index fb173f60..5b9a1634 100644 --- a/.gitlab/merge_request_templates/Update.md +++ b/.gitlab/merge_request_templates/Update.md @@ -1,49 +1,41 @@ -## ⬆️ Application Update +# ⬆️ Application Update -Expected MR Title and git commit message: +*Expected MR Title and git commit message* +*`feat/fix(): Update from to `* -`feat/fix(): Update from to ` +## πŸ“‹ Changelog/Release Notes -### πŸ“‹ Changelog/Release Notes +- [ ] [README.md](../../README.md) component table updated including the link to the related release notes +- [ ] Provide significant improvements you'd like to see in the openDesk release notes. If you have a lot of details to provide or someone else is providing the details, please use a comment on the MR and link the comment in here. -- [ ] Upstream release notes: `[link]` -- [ ] No breaking changes (or listed below) -- [ ] Relevant changes communicated (if needed) +## πŸ”„ Requirements for migrations ---- +- [ ] Minimum version of the application required in existing depoyments to update/upgrade: +- [ ] Describe manual steps required to update existing deployments. This especially applies if the upgrade includes any breaking changes: +- [ ] Any other considerations in context of the update: -### πŸ”„ Migrations to Run (if any) +# Checklist / Sign-offs -Describe any migrations that need to be performed when upgrading to this application version. +## 🏷️ Labels -- [ ] Database migrations -- [ ] Configuration changes -- [ ] Cache clears / rebuilds -- [ ] Other: _describe_ +Set labels: -## Checklist / Sign-offs - -### πŸ’Ώ CI/CD - -- [ ] CI pipeline passes for all jobs -- [ ] Linting and formatting checks pass -- [ ] Review app (if used) reflects fix correctly - -### πŸ–₯ QA & Product - -Set related labels on the MR for - -- [ ] `PO::πŸ‘€` -- [ ] `Tech Lead::πŸ‘€` -- [ ] `Testautomation::πŸ‘€` -- [ ] `QA::πŸ‘€` - ---- +``` +/label ~"MR-Type::AppUpdate" +/label ~"PO::πŸ‘€" +/label ~"Tech Lead::πŸ‘€" +/label ~"QA::πŸ‘€" +/label ~"Testautomation::πŸ‘€" +``` ## πŸ‘· Developer Checklist -- [ ] Code builds and passes linting -- [ ] Tests added or updated -- [ ] Verified fix locally -- [ ] Regression testing done for related functionality -- [ ] No new warnings or errors in logs +- Does the MR include new bits and pieces (e.g. new secrets) that require documentation? + - [ ] No. + - [ ] Yes, and the documentation was updated accordingly. + +Document in an extra comment and link to that comment: +- [ ] How you verified the update is working as expected, also in upgrade sceanrios. +- [ ] Any regression testing done. + +--> Link to comment: diff --git a/docs/data-storage.md b/docs/data-storage.md index fa0489c9..7636d017 100644 --- a/docs/data-storage.md +++ b/docs/data-storage.md @@ -66,52 +66,58 @@ XWiki,PersistentVolume,1 # Details -| Application | Data Storage | Backup | Content | Identifier | Details | -|----------------------|--------------|----------|--------------------------------------------------------------------------------------------|------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| -| **ClamAV** | PVC | No | ClamAV Database | `clamav-database-clamav-simple-0` | `/var/lib/clamav` | -| **Dovecot** | PVC | Yes | User mail directories (openDesk CE only, openDesk EE uses Dovecot Pro with Object Storage) | `dovecot` | `/srv/mail` | -| **Element/Synapse** | PostgreSQL | Yes | Application's main database | `matrix` | | -| | PVC | Yes | Attachments | `media-opendesk-synapse-0` | `/media` | -| | | Yes | Sync and state data | `matrix-neodatefix-bot` | `/app/storage` | -| **Intercom-Service** | Redis | No | Shared session data | | | -| **Jitsi** | PVC | Optional | Meeting recordings (feature not enabled in openDesk) | `prosody-data-jitsi-prosody-0` | `/config/data` | -| **Nextcloud** | PostgreSQL | Yes | Application's main database Meta-Data | `nextcloud` | | -| | S3 | Yes | The Nextcloud managed user files | `nextcloud` | | -| | Redis | No | Distributed caching, as well as transactional file locking | | | -| **Nubus** | PostgreSQL | Yes | Main database for Nubus' IdP Keycloak | `keycloak` | | -| | | Yes | Login actions and device-fingerprints | `keycloak_extensions` | | -| | | Optional | Store of the temporary password reset token | `selfservice` | | -| | | No | Notification features are not used in openDesk 1.1 | `notificationsapi` | | -| | | No | Guardian features are currently not used in openDesk 1.1 | `guardianmanagementapi` | | -| | S3 | No | Static files for Portal | `ums` | | -| | PVC | Yes | openLDAP database (primary R/W Pods), when restore select the one from the leader | `shared-data-ums-ldap-server-primary-0` | `/var/lib/univention-ldap` | -| | | Yes | openLDAP process data | `shared-run-ums-ldap-server-primary-0` | `/var/run/slapd` | -| | | No | openLDAP database (secondary R/O Pods), secondaries can sync from the primary | `shared-data-ums-ldap-server-secondary-0` | `/var/lib/univention-ldap` | -| | | No | openLDAP process data | `shared-run-ums-ldap-server-secondary-0` | `/var/run/slapd` | -| | | Yes | The state of the listener | `data-ums-provisioning-udm-listener-0` | `/var/log/univention`
`/var/lib/univention-ldap/schema/id`
`/var/lib/univention-directory-listener` | -| | | No | Cache | `group-membership-cache-ums-portal-consumer-0` | `/usr/share/univention-group-membership-cache/caches` | -| | | Yes | Queued provisioning objects | `nats-data-ums-provisioning-nats-0` | `/data` | -| | Memcached | No | Cache for UMC Server | | | -| **OpenProject** | PostgreSQL | Yes | Application's main database | `openproject` | | -| | S3 | Yes | Attachments, custom styles | `openproject` | | -| | Memcached | No | Cache | | | -| | PVC | No | PVC backed `emptyDir` as K8s cannot set the sticky bit on standard emptyDirs | `openproject--*-tmp` | `/tmp` | -| | | No | PVC backed `emptyDir` as K8s cannot set the sticky bit on standard emptyDirs | `openproject--app-*-tmp` | `/app/tmp` | -| **Open-Xchange** | MariaDB | Yes | Application's control database to coordiate dynamically created ones | `configdb` | | -| | | Yes | Dynamically creates databases of schema `PRIMARYDB_n`containing multiple contexts | `PRIMARYDB_*` | | -| | | Yes | OX Guard related settings | `oxguard*` | | -| | Redis | Optional | Cache, session related data, distributed maps | | | -| | PVC | Yes | OX-Connector: OXAPI access details | `ox-connector-appcenter-ox-connector-0` | `/var/lib/univention-appcenter/apps/ox-connector` | -| | | Yes | OX-Connector: Application's meta data | `ox-connector-ox-contexts-ox-connector-0` | `/etc/ox-secrets` | -| **Postfix** | PVC | Yes | Mail spool | `postfix` | `/var/spool/postfix` | -| **XWiki** | PostgreSQL | Yes | Application's main database | `xwiki` | | -| | PVC | Yes | Attachments | `xwiki-data-xwiki-0` | `/usr/local/xwiki/data` | +| Application | Data Storage | Backup | Content | (Default) Identifier | Details | +|----------------------|--------------|----------|-----------------------------------------------------------------------------------|------------------------------------------------|-----------------------------------------------------------------------------------------------------------| +| **ClamAV** | PVC | No | ClamAV Database | `clamav-database-clamav-simple-0` | `/var/lib/clamav` | +| **Dovecot** | PVC | Yes | openDesk CE only: User mail directories | `dovecot` | `/srv/mail` | +| | S3 | Yes | openDesk EE only: User mail | `dovecot` | `dovecot` | +| | Cassandra | Yes | openDesk EE only: Metadata and ACLs | `dovecot_dictmap`, `dovecot_acl` | +| **Element/Synapse** | PostgreSQL | Yes | Application's main database | `matrix` | | +| | PVC | Yes | Attachments | `media-opendesk-synapse-0` | `/media` | +| | | Yes | Sync and state data | `matrix-neodatefix-bot` | `/app/storage` | +| **Intercom-Service** | Redis | No | Shared session data | | | +| **Jitsi** | PVC | Optional | Meeting recordings (feature not enabled in openDesk) | `prosody-data-jitsi-prosody-0` | `/config/data` | +| **Nextcloud** | PostgreSQL | Yes | Application's main database Meta-Data | `nextcloud` | | +| | S3 | Yes | The Nextcloud managed user files | `nextcloud` | | +| | Redis | No | Distributed caching, as well as transactional file locking | | | +| **Nubus** | PostgreSQL | Yes | Main database for Nubus' IdP Keycloak | `keycloak` | | +| | | Yes | Login actions and device-fingerprints | `keycloak_extensions` | | +| | | Optional | Store of the temporary password reset token | `selfservice` | | +| | | No | Notification features are not used in openDesk 1.1 | `notificationsapi` | | +| | | No | Guardian features are currently not used in openDesk 1.1 | `guardianmanagementapi` | | +| | S3 | No | Static files for Portal | `ums` | | +| | PVC | Yes | openLDAP database (primary R/W Pods), when restore select the one from the leader | `shared-data-ums-ldap-server-primary-0` | `/var/lib/univention-ldap` | +| | | Yes | openLDAP process data | `shared-run-ums-ldap-server-primary-0` | `/var/run/slapd` | +| | | No | openLDAP database (secondary R/O Pods), secondaries can sync from the primary | `shared-data-ums-ldap-server-secondary-0` | `/var/lib/univention-ldap` | +| | | No | openLDAP process data | `shared-run-ums-ldap-server-secondary-0` | `/var/run/slapd` | +| | | Yes | The state of the listener | `data-ums-provisioning-udm-listener-0` | `/var/log/univention`
`/var/lib/univention-ldap/schema/id`
`/var/lib/univention-directory-listener` | +| | | No | Cache | `group-membership-cache-ums-portal-consumer-0` | `/usr/share/univention-group-membership-cache/caches` | +| | | Yes | Queued provisioning objects | `nats-data-ums-provisioning-nats-0` | `/data` | +| | Memcached | No | Cache for UMC Server | | | +| **OpenProject** | PostgreSQL | Yes | Application's main database | `openproject` | | +| | S3 | Yes | Attachments, custom styles | `openproject` | | +| | Memcached | No | Cache | | | +| | PVC | No | PVC backed `emptyDir` as K8s cannot set the sticky bit on standard emptyDirs | `openproject--*-tmp` | `/tmp` | +| | | No | PVC backed `emptyDir` as K8s cannot set the sticky bit on standard emptyDirs | `openproject--app-*-tmp` | `/app/tmp` | +| **Open-Xchange** | MariaDB | Yes | Application's control database to coordiate dynamically created ones | `configdb` | | +| | | Yes | Dynamically creates databases of schema `PRIMARYDB_n`containing multiple contexts | `PRIMARYDB_*` | | +| | | Yes | OX Guard related settings | `oxguard*` | | +| | S3 | Yes | Attachments of meetings, contacts and tasks | `openxchange` | | +| | Redis | Optional | Cache, session related data, distributed maps | | | +| | PVC | Yes | OX-Connector: OXAPI access details | `ox-connector-appcenter-ox-connector-0` | `/var/lib/univention-appcenter/apps/ox-connector` | +| | | Yes | OX-Connector: Application's meta data | `ox-connector-ox-contexts-ox-connector-0` | `/etc/ox-secrets` | +| **Postfix** | PVC | Yes | Mail spool | `postfix` | `/var/spool/postfix` | +| **XWiki** | PostgreSQL | Yes | Application's main database | `xwiki` | | +| | PVC | Yes | Attachments | `xwiki-data-xwiki-0` | `/usr/local/xwiki/data` | -Additionally, the following persistent volumes are mounted by pods that serve as a data storage for the applications mentioned above. +Additionally, the following persistent volumes are mounted by Pods that serve as a data storage for the applications mentioned above. -| Service | Pod | Volume Name | PVC | MountPath | -| ---------- | ---------------- | ------------ | --------------------------- | --------------------- | -| MariaDB | `mariadb-*` | `data` | `data-mariadb-0` | `/var/lib/mysql` | -| MinIO | `minio-*-*` | `data` | `minio` | `/bitnami/minio/data` | -| PostgreSQL | `postgresql-*` | `data` | `data-postgresql-0` | `/mnt/postgresql` | -| Redis | `redis-master-*` | `redis-data` | `redis-data-redis-master-0` | `/data` | +These services are not ment for production use, so you can ignore these as you surely backup your production services instead. + +| Service | Pod | Volume Name | PVC | MountPath | Comment | +|------------|------------------|--------------|-----------------------------|-----------------------|------------------| +| MariaDB | `mariadb-*` | `data` | `data-mariadb-0` | `/var/lib/mysql` | | +| MinIO | `minio-*-*` | `data` | `minio` | `/bitnami/minio/data` | | +| PostgreSQL | `postgresql-*` | `data` | `data-postgresql-0` | `/mnt/postgresql` | | +| Redis | `redis-master-*` | `redis-data` | `redis-data-redis-master-0` | `/data` | | +| Cassandra | `cassandra-*` | `data` | `data-cassandra-*` | `/bitnami/cassandra` | openDesk EE only |