include:
  - project: sre/ci-building-blocks
    file: nodejs.yml

unit tests:
  extends: .unit tests
  timeout: 10 minutes
  tags:
    - tiny-hetzner

integration tests:
  extends: unit tests
  services:
    - redis:latest
  script:
    - pnpm i -s
    - pnpm integration --ci --coverage

deploy preview with prefix:
  extends: .auto-deploy-preview-chart
  script:
    - !reference [.setup-k8s, script]
    - !reference [.customize-k8s, script]
    - !reference [.create-image-pull-secrets, script]
    - export PREVIEW_APP_NAME=$(echo $PREVIEW_APP_NAME | cut -c 1-56)
    - envsubst < .gitlab/preview-prefix/values-template.yaml > tmp-values.yaml
    - envsubst < .gitlab/preview-prefix/kubernetes-resources.yaml > tmp-resources.yaml
    - !reference [.login-registry-ro, script]
    - kubectl apply -f tmp-resources.yaml
    - helm dep up helm/core-ui-middleware
    - 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]
    - export PREVIEW_APP_NAME=$(echo $PREVIEW_APP_NAME | cut -c 1-53)
    - 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+)$/
      when: never
    - if: $CI_COMMIT_REF_NAME =~ /^(main|master)$/
      variables:
        TAG_NAME: "latest"
    - if: $CI_COMMIT_REF_NAME
      variables:
        TAG_NAME: "$CI_COMMIT_REF_SLUG"

ui smoketests:
  image: registry.gitlab.open-xchange.com/appsuite/web-apps/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.dev.oxui.de/
    - echo "LAUNCH_URL=$LAUNCH_URL"
  script:
    - pnpm e2e-rerun @smoketest

ui smoketests with prefix:
  image: registry.gitlab.open-xchange.com/appsuite/web-apps/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 PREVIEW_APP_NAME=$(echo $PREVIEW_APP_NAME | cut -c 1-56)
    - export LAUNCH_URL=https://$PREVIEW_APP_NAME-prefix.dev.oxui.de/appsuite/
    - echo "LAUNCH_URL=$LAUNCH_URL"
  script:
    - pnpm e2e-rerun @smoketest

ui smoketests with sentinel redis:
  image: registry.gitlab.open-xchange.com/appsuite/web-apps/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 PREVIEW_APP_NAME=$(echo $PREVIEW_APP_NAME | cut -c 1-53)
    - export LAUNCH_URL=https://$PREVIEW_APP_NAME-sntnl.dev.oxui.de/appsuite/
    - echo "LAUNCH_URL=$LAUNCH_URL"
  script:
    - pnpm e2e-rerun @smoketest