diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 566132879e173bfe2cdebd0ddcdfcd1571efa141..375686cf78ec7160894a5900c4d04dbe46c74260 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,6 +30,19 @@ deploy preview with prefix: - helm upgrade -i preview-prefix helm/core-ui-middleware -f tmp-values.yaml --wait --timeout=$ROLLOUT_TIMEOUT environment: null +deploy preview with sentinel redis: + extends: .auto-deploy-preview-chart + script: + - !reference [.setup-k8s, script] + - !reference [.customize-k8s, script] + - !reference [.create-image-pull-secrets, script] + - envsubst < .gitlab/preview-sentinel/values-template.yaml > tmp-values.yaml + - !reference [.login-registry-ro, script] + - helm dep up helm/core-ui-middleware + - helm dep up .gitlab/preview-sentinel + - helm upgrade -i preview-sentinel .gitlab/preview-sentinel -f tmp-values.yaml --wait --timeout=$ROLLOUT_TIMEOUT + environment: null + .smoketest-rules: rules: - if: $CI_COMMIT_REF_NAME =~ /^(\d+\.\d+\.\d+)$/ @@ -78,3 +91,22 @@ ui smoketests with prefix: - echo "LAUNCH_URL=$LAUNCH_URL" script: - yarn e2e-rerun @smoketest + +ui smoketests with sentinel redis: + image: registry.gitlab.open-xchange.com/frontend/ui/e2e:latest + extends: + - .e2e-codeceptjs-preview + - .smoketest-rules + variables: + PROVISIONING_URL: https://appsuite-main.dev.oxui.de/ + tags: + - e2e-hetzner + timeout: 15 minutes + before_script: + - !reference [.e2e-codeceptjs-preview, before_script] + - unset SUITE_SERVICE_URL + - export E2E_ADMIN_PW=$ADMIN_PW + - export LAUNCH_URL=https://$PREVIEW_APP_NAME-sentinel.dev.oxui.de/appsuite/ + - echo "LAUNCH_URL=$LAUNCH_URL" + script: + - yarn e2e-rerun @smoketest diff --git a/.gitlab/preview-sentinel/.helmignore b/.gitlab/preview-sentinel/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778 --- /dev/null +++ b/.gitlab/preview-sentinel/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/.gitlab/preview-sentinel/Chart.lock b/.gitlab/preview-sentinel/Chart.lock new file mode 100644 index 0000000000000000000000000000000000000000..3351b9072b8cdd98ef23f4eaf648b96eaf2e503b --- /dev/null +++ b/.gitlab/preview-sentinel/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: redis + repository: https://charts.bitnami.com/bitnami + version: 17.11.6 +- name: core-ui-middleware + repository: file://../../helm/core-ui-middleware + version: 2.0.1 +digest: sha256:01d9f06396158f95de70fca261605e362628029bb6c83777fd54053531354747 +generated: "2023-06-27T16:29:37.378205+02:00" diff --git a/.gitlab/preview-sentinel/Chart.yaml b/.gitlab/preview-sentinel/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b37c9f21bcb5d6fc23531309c1656f9dec1029e9 --- /dev/null +++ b/.gitlab/preview-sentinel/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +name: preview +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" + +dependencies: + - name: redis + version: ~17.11.6 + repository: "https://charts.bitnami.com/bitnami" + - name: core-ui-middleware + version: ">=1.0.0-0" + repository: "file://../../helm/core-ui-middleware" + diff --git a/.gitlab/preview-sentinel/templates/NOTES.txt b/.gitlab/preview-sentinel/templates/NOTES.txt new file mode 100644 index 0000000000000000000000000000000000000000..f549c713d5cd44953be78347b3bda2022fd9070e --- /dev/null +++ b/.gitlab/preview-sentinel/templates/NOTES.txt @@ -0,0 +1,7 @@ +Thank you for trävelling with CI Building Blocks! + ++=========================================={{ regexReplaceAll "." .Values.host "=" }}=+ +| {{ regexReplaceAll "." .Values.host " " }} | +| Your preview app is now ready at https://{{ .Values.host }} | +| ~~~~~~~~Â{{ regexReplaceAll "." .Values.host "~" }} | ++=========================================={{ regexReplaceAll "." .Values.host "=" }}=+ diff --git a/.gitlab/preview-sentinel/templates/kubernetes-resources.yaml b/.gitlab/preview-sentinel/templates/kubernetes-resources.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a43a0d0cd5503ed91895161f772eaa23bae06a7c --- /dev/null +++ b/.gitlab/preview-sentinel/templates/kubernetes-resources.yaml @@ -0,0 +1,171 @@ +apiVersion: networking.istio.io/v1beta1 +kind: VirtualService +metadata: + name: preview-app-sentinel +spec: + gateways: + - mesh + - istio-system/default-gateway + hosts: + - "{{ .Values.host }}" + http: + - match: + - uri: + prefix: /appsuite/help-documents + name: office-user-guide + rewrite: + uri: /help-documents + route: + - destination: + host: preview-app-office-user-guide + port: + number: 80 + - match: + - uri: + prefix: /appsuite/help + name: user-guide + rewrite: + uri: /help + route: + - destination: + host: preview-app-core-user-guide + port: + number: 80 + - match: + - uri: + prefix: /api/oxguard/ + name: guard-routes + rewrite: + uri: /oxguard/ + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /pks/ + name: guard-pgp-routes + rewrite: + uri: /oxguard/pgp/ + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /appsuite/api/ + name: appsuite-api + rewrite: + uri: /api/ + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /api + name: api-routes + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /ajax/ + name: ajax-routes + rewrite: + uri: /appsuite/api/ + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /servlet/ + name: servlet-routes + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /realtime/ + name: realtime-routes + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /infostore/ + name: infostore-routes + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /socket.io/ + name: socket-io-routes + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /rt2/ + name: rt2-routes + rewrite: + uri: /rt2/ + route: + - destination: + host: main-core-mw-http-api + port: + number: 80 + - match: + - uri: + prefix: /webservices/ + name: soap-routes + route: + - destination: + host: main-core-mw-http-api + - match: + - uri: + prefix: /office + name: office-service + rewrite: + uri: /appsuite/ + route: + - destination: + host: preview-sentinel-core-ui-middleware + port: + number: 80 + - match: + - uri: + prefix: /appsuite/ + name: ui-middleware + route: + - destination: + host: preview-sentinel-core-ui-middleware + port: + number: 80 + - match: + - uri: + prefix: / + name: ui-middleware-root + rewrite: + uri: /appsuite + route: + - destination: + host: preview-sentinel-core-ui-middleware + port: + number: 80 diff --git a/.gitlab/preview-sentinel/values-template.yaml b/.gitlab/preview-sentinel/values-template.yaml new file mode 100644 index 0000000000000000000000000000000000000000..280f7be7adbfba9f594e69ae2c9a0f66235a8ff1 --- /dev/null +++ b/.gitlab/preview-sentinel/values-template.yaml @@ -0,0 +1,26 @@ +core-ui-middleware: + podAnnotations: + commit-ref: "${CI_COMMIT_SHORT_SHA}" + deploymentAnnotations: + commit-ref: "${CI_COMMIT_SHORT_SHA}" + image: + repository: ${CI_REGISTRY_IMAGE} + tag: ${TAG_NAME} +host: ${PREVIEW_APP_NAME}-sentinel.dev.oxui.de + +appsuite: + core-ui: + podAnnotations: + commit-ref: "${CI_COMMIT_SHORT_SHA}" + deploymentAnnotations: + commit-ref: "${CI_COMMIT_SHORT_SHA}" + core-guidedtours: + podAnnotations: + commit-ref: "${CI_COMMIT_SHORT_SHA}" + deploymentAnnotations: + commit-ref: "${CI_COMMIT_SHORT_SHA}" + office-web: + podAnnotations: + commit-ref: "${CI_COMMIT_SHORT_SHA}" + deploymentAnnotations: + commit-ref: "${CI_COMMIT_SHORT_SHA}" diff --git a/.gitlab/preview-sentinel/values.yaml b/.gitlab/preview-sentinel/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..85abe938421cade6eee3afa8a37fb47b84d01ca0 --- /dev/null +++ b/.gitlab/preview-sentinel/values.yaml @@ -0,0 +1,55 @@ +redis: + enabled: true + commonLabels: + app: redis-sentinel + version: "17" + auth: + enabled: false + master: + persistence: + enabled: false + replica: + persistence: + enabled: false + sentinel: + enabled: true + replicas: 3 + usePassword: false + persistence: + enabled: false + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 1 + memory: 256Mi + +core-ui-middleware: + replicaCount: 3 + redis: + mode: sentinel + hosts: + - preview-sentinel-redis:26379 + existingConfigMap: preview-core-ui-middleware + + defaultRegistry: "" + + image: + registry: "" + pullPolicy: Always + + imagePullSecrets: + - name: gitlab-registry-credentials + + extras: + monitoring: + enabled: true + + resources: + limits: + cpu: 1 + memory: 384Mi + requests: + cpu: 100m + memory: 384Mi diff --git a/helm/core-ui-middleware/Chart.lock b/helm/core-ui-middleware/Chart.lock index 4889fa96f77eaa4924df4033fd1762f6657d81fb..6b6f75e9bb1c0b8d2e7119f20fef878fc797829f 100644 --- a/helm/core-ui-middleware/Chart.lock +++ b/helm/core-ui-middleware/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: ox-common repository: oci://registry.open-xchange.com/appsuite-core-internal/charts - version: 1.0.33 -digest: sha256:25056384361feffb1aa6bc8876508390a39056bcad316edeeba2af4c217d57a7 -generated: "2023-04-12T14:21:43.9129+02:00" + version: 1.0.34 +digest: sha256:00d5f57a7498b424accd03e381225d679e3c09f67d98bfe50309cf2577b3b1aa +generated: "2023-06-27T16:48:24.917469+02:00"