From 3be6c9ed032257e71491fb168058c3350ac4ce70 Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Thu, 13 Aug 2020 14:23:38 +0200 Subject: [PATCH] SEARCH-2345: Toolset of Docker Compose templates to help Release testing stage. --- e2e-test/release-testing/README.md | 108 +++++++++ .../insight-engine-sharding-replica/.env | 15 ++ .../insight-engine-sharding-replica/README.md | 9 + .../alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../alfresco/modules/amps/empty | 0 .../alfresco/modules/jars/empty | 0 .../config/nginx.conf | 67 ++++++ .../config/nginx.htpasswd | 1 + .../docker-compose.yml | 214 +++++++++++++++++ .../search/Dockerfile | 163 +++++++++++++ .../share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../share/modules/amps/empty | 0 .../share/modules/jars/empty | 0 .../insight-engine-sharding/acl_id/.env | 15 ++ .../acl_id/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../acl_id/alfresco/modules/amps/empty | 0 .../acl_id/alfresco/modules/jars/empty | 0 .../acl_id/config/nginx.conf | 67 ++++++ .../acl_id/config/nginx.htpasswd | 1 + .../acl_id/docker-compose.yml | 209 +++++++++++++++++ .../acl_id/search/Dockerfile | 163 +++++++++++++ .../acl_id/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../acl_id/share/modules/amps/empty | 0 .../acl_id/share/modules/jars/empty | 0 .../insight-engine-sharding/date/.env | 15 ++ .../date/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../date/alfresco/modules/amps/empty | 0 .../date/alfresco/modules/jars/empty | 0 .../date/config/nginx.conf | 67 ++++++ .../date/config/nginx.htpasswd | 1 + .../date/docker-compose.yml | 213 +++++++++++++++++ .../date/search/Dockerfile | 163 +++++++++++++ .../date/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../date/share/modules/amps/empty | 0 .../date/share/modules/jars/empty | 0 .../insight-engine-sharding/db_id/.env | 15 ++ .../db_id/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../db_id/alfresco/modules/amps/empty | 0 .../db_id/alfresco/modules/jars/empty | 0 .../db_id/config/nginx.conf | 67 ++++++ .../db_id/config/nginx.htpasswd | 1 + .../db_id/docker-compose.yml | 209 +++++++++++++++++ .../db_id/search/Dockerfile | 163 +++++++++++++ .../db_id/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../db_id/share/modules/amps/empty | 0 .../db_id/share/modules/jars/empty | 0 .../insight-engine-sharding/db_id_range/.env | 15 ++ .../db_id_range/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../db_id_range/alfresco/modules/amps/empty | 0 .../db_id_range/alfresco/modules/jars/empty | 0 .../db_id_range/config/nginx.conf | 67 ++++++ .../db_id_range/config/nginx.htpasswd | 1 + .../db_id_range/docker-compose.yml | 211 +++++++++++++++++ .../db_id_range/search/Dockerfile | 163 +++++++++++++ .../db_id_range/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../db_id_range/share/modules/amps/empty | 0 .../db_id_range/share/modules/jars/empty | 0 .../insight-engine-sharding/explicit_id/.env | 15 ++ .../explicit_id/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../explicit_id/alfresco/modules/amps/empty | 0 .../explicit_id/alfresco/modules/jars/empty | 0 .../explicit_id/config/nginx.conf | 67 ++++++ .../explicit_id/config/nginx.htpasswd | 1 + .../explicit_id/docker-compose.yml | 211 +++++++++++++++++ .../explicit_id/search/Dockerfile | 163 +++++++++++++ .../explicit_id/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../explicit_id/share/modules/amps/empty | 0 .../explicit_id/share/modules/jars/empty | 0 .../insight-engine-sharding/lris/.env | 15 ++ .../lris/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../lris/alfresco/modules/amps/empty | 0 .../lris/alfresco/modules/jars/empty | 0 .../lris/config/nginx.conf | 67 ++++++ .../lris/config/nginx.htpasswd | 1 + .../lris/docker-compose.yml | 209 +++++++++++++++++ .../lris/search/Dockerfile | 163 +++++++++++++ .../lris/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../lris/share/modules/amps/empty | 0 .../lris/share/modules/jars/empty | 0 .../insight-engine-sharding/mod_acl_id/.env | 15 ++ .../mod_acl_id/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../mod_acl_id/alfresco/modules/amps/empty | 0 .../mod_acl_id/alfresco/modules/jars/empty | 0 .../mod_acl_id/config/nginx.conf | 67 ++++++ .../mod_acl_id/config/nginx.htpasswd | 1 + .../mod_acl_id/docker-compose.yml | 209 +++++++++++++++++ .../mod_acl_id/search/Dockerfile | 163 +++++++++++++ .../mod_acl_id/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../mod_acl_id/share/modules/amps/empty | 0 .../mod_acl_id/share/modules/jars/empty | 0 .../insight-engine-sharding/property/.env | 15 ++ .../property/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../property/alfresco/modules/amps/empty | 0 .../property/alfresco/modules/jars/empty | 0 .../property/config/nginx.conf | 67 ++++++ .../property/config/nginx.htpasswd | 1 + .../property/docker-compose.yml | 211 +++++++++++++++++ .../property/search/Dockerfile | 163 +++++++++++++ .../property/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../property/share/modules/amps/empty | 0 .../property/share/modules/jars/empty | 0 .../insight-engine-zeppelin/.env | 15 ++ .../alfresco/Dockerfile | 73 ++++++ .../alfresco/model/empty | 0 .../alfresco/modules/amps/empty | 0 .../alfresco/modules/jars/empty | 0 .../insight-engine-zeppelin/config/nginx.conf | 67 ++++++ .../config/nginx.htpasswd | 1 + .../docker-compose.yml | 186 +++++++++++++++ .../insight-engine-zeppelin/search/Dockerfile | 155 +++++++++++++ .../insight-engine-zeppelin/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../share/modules/amps/empty | 0 .../share/modules/jars/empty | 0 .../zeppelin/Dockerfile | 48 ++++ e2e-test/release-testing/insight-engine/.env | 15 ++ .../insight-engine/alfresco/Dockerfile | 73 ++++++ .../insight-engine/alfresco/model/empty | 0 .../alfresco/modules/amps/empty | 0 .../alfresco/modules/jars/empty | 0 .../insight-engine/config/nginx.conf | 67 ++++++ .../insight-engine/config/nginx.htpasswd | 1 + .../insight-engine/docker-compose.yml | 176 ++++++++++++++ .../insight-engine/search/Dockerfile | 163 +++++++++++++ .../insight-engine/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../insight-engine/share/modules/amps/empty | 0 .../insight-engine/share/modules/jars/empty | 0 .../release-testing/mtls/insight-engine/.env | 15 ++ .../mtls/insight-engine/alfresco/Dockerfile | 73 ++++++ .../mtls/insight-engine/alfresco/model/empty | 0 .../alfresco/modules/amps/empty | 0 .../alfresco/modules/jars/empty | 0 .../mtls/insight-engine/config/nginx.conf | 56 +++++ .../mtls/insight-engine/config/nginx.htpasswd | 1 + .../mtls/insight-engine/docker-compose.yml | 196 ++++++++++++++++ .../keystores/alfresco/keystore | Bin 0 -> 647 bytes .../alfresco/keystore-passwords.properties | 7 + .../ssl-keystore-passwords.properties | 7 + .../ssl-truststore-passwords.properties | 6 + .../keystores/alfresco/ssl.keystore | Bin 0 -> 3255 bytes .../keystores/alfresco/ssl.truststore | Bin 0 -> 1832 bytes .../keystores/client/browser.p12 | Bin 0 -> 3033 bytes .../solr/ssl-keystore-passwords.properties | 7 + .../solr/ssl-truststore-passwords.properties | 7 + .../keystores/solr/ssl.repo.client.keystore | Bin 0 -> 3265 bytes .../keystores/solr/ssl.repo.client.truststore | Bin 0 -> 2850 bytes .../mtls/insight-engine/search/Dockerfile | 155 +++++++++++++ .../mtls/insight-engine/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../insight-engine/share/modules/amps/empty | 0 .../insight-engine/share/modules/jars/empty | 0 .../release-testing/mtls/search-services/.env | 15 ++ .../mtls/search-services/alfresco/Dockerfile | 73 ++++++ .../mtls/search-services/alfresco/model/empty | 0 .../alfresco/modules/amps/empty | 0 .../alfresco/modules/jars/empty | 0 .../mtls/search-services/config/nginx.conf | 56 +++++ .../search-services/config/nginx.htpasswd | 1 + .../mtls/search-services/docker-compose.yml | 199 ++++++++++++++++ .../keystores/alfresco/keystore | Bin 0 -> 647 bytes .../alfresco/keystore-passwords.properties | 7 + .../ssl-keystore-passwords.properties | 7 + .../ssl-truststore-passwords.properties | 6 + .../keystores/alfresco/ssl.keystore | Bin 0 -> 3255 bytes .../keystores/alfresco/ssl.truststore | Bin 0 -> 1832 bytes .../keystores/client/browser.p12 | Bin 0 -> 3033 bytes .../solr/ssl-keystore-passwords.properties | 7 + .../solr/ssl-truststore-passwords.properties | 7 + .../keystores/solr/ssl.repo.client.keystore | Bin 0 -> 3265 bytes .../keystores/solr/ssl.repo.client.truststore | Bin 0 -> 2850 bytes .../mtls/search-services/search/Dockerfile | 155 +++++++++++++ .../mtls/search-services/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../search-services/share/modules/amps/empty | 0 .../search-services/share/modules/jars/empty | 0 .../search-services-backup/README.md | 22 ++ .../search-services-backup/master-master/.env | 15 ++ .../master-master/alfresco/Dockerfile | 73 ++++++ .../master-master/alfresco/model/empty | 0 .../master-master/alfresco/modules/amps/empty | 0 .../master-master/alfresco/modules/jars/empty | 0 .../master-master/config/nginx.conf | 67 ++++++ .../master-master/config/nginx.htpasswd | 1 + .../master-master/docker-compose.yml | 215 +++++++++++++++++ .../master-master/search/Dockerfile | 163 +++++++++++++ .../master-master/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../master-master/share/modules/amps/empty | 0 .../master-master/share/modules/jars/empty | 0 .../search-services-backup/master-slave/.env | 15 ++ .../master-slave/alfresco/Dockerfile | 73 ++++++ .../master-slave/alfresco/model/empty | 0 .../master-slave/alfresco/modules/amps/empty | 0 .../master-slave/alfresco/modules/jars/empty | 0 .../master-slave/config/nginx.conf | 67 ++++++ .../master-slave/config/nginx.htpasswd | 1 + .../master-slave/docker-compose.yml | 214 +++++++++++++++++ .../master-slave/search/Dockerfile | 163 +++++++++++++ .../master-slave/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../master-slave/share/modules/amps/empty | 0 .../master-slave/share/modules/jars/empty | 0 .../search-services-backup/normal/.env | 15 ++ .../normal/alfresco/Dockerfile | 73 ++++++ .../normal/alfresco/model/empty | 0 .../normal/alfresco/modules/amps/empty | 0 .../normal/alfresco/modules/jars/empty | 0 .../normal/config/nginx.conf | 67 ++++++ .../normal/config/nginx.htpasswd | 1 + .../normal/docker-compose.yml | 182 +++++++++++++++ .../normal/search/Dockerfile | 155 +++++++++++++ .../normal/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../normal/share/modules/amps/empty | 0 .../normal/share/modules/jars/empty | 0 .../search-services-backup/sharding/.env | 15 ++ .../sharding/alfresco/Dockerfile | 73 ++++++ .../model/sharding-content-model-context.xml | 15 ++ .../alfresco/model/sharding-content-model.xml | 27 +++ .../sharding/alfresco/modules/amps/empty | 0 .../sharding/alfresco/modules/jars/empty | 0 .../sharding/config/nginx.conf | 67 ++++++ .../sharding/config/nginx.htpasswd | 1 + .../sharding/docker-compose.yml | 219 ++++++++++++++++++ .../sharding/search/Dockerfile | 163 +++++++++++++ .../sharding/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 27 +++ .../sharding/share/modules/amps/empty | 0 .../sharding/share/modules/jars/empty | 0 .../search-services-disable-tracking/.env | 15 ++ .../alfresco/Dockerfile | 73 ++++++ .../alfresco/model/empty | 0 .../alfresco/modules/amps/empty | 0 .../alfresco/modules/jars/empty | 0 .../config/nginx.conf | 67 ++++++ .../config/nginx.htpasswd | 1 + .../docker-compose.yml | 177 ++++++++++++++ .../search/Dockerfile | 167 +++++++++++++ .../share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../share/modules/amps/empty | 0 .../share/modules/jars/empty | 0 .../master-master/.env | 15 ++ .../master-master/alfresco/Dockerfile | 73 ++++++ .../master-master/alfresco/model/empty | 0 .../master-master/alfresco/modules/amps/empty | 0 .../master-master/alfresco/modules/jars/empty | 0 .../master-master/config/nginx.conf | 67 ++++++ .../master-master/config/nginx.htpasswd | 1 + .../master-master/docker-compose.yml | 205 ++++++++++++++++ .../master-master/search/Dockerfile | 163 +++++++++++++ .../master-master/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../master-master/share/modules/amps/empty | 0 .../master-master/share/modules/jars/empty | 0 .../master-slave/.env | 15 ++ .../master-slave/alfresco/Dockerfile | 73 ++++++ .../master-slave/alfresco/model/empty | 0 .../master-slave/alfresco/modules/amps/empty | 0 .../master-slave/alfresco/modules/jars/empty | 0 .../master-slave/config/nginx.conf | 67 ++++++ .../master-slave/config/nginx.htpasswd | 1 + .../master-slave/docker-compose.yml | 205 ++++++++++++++++ .../master-slave/search/Dockerfile | 163 +++++++++++++ .../master-slave/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../master-slave/share/modules/amps/empty | 0 .../master-slave/share/modules/jars/empty | 0 .../search-services-upgrade/current-ie/.env | 15 ++ .../current-ie/alfresco/Dockerfile | 73 ++++++ .../current-ie/alfresco/model/empty | 0 .../current-ie/alfresco/modules/amps/empty | 0 .../current-ie/alfresco/modules/jars/empty | 0 .../current-ie/config/nginx.conf | 67 ++++++ .../current-ie/config/nginx.htpasswd | 1 + .../current-ie/docker-compose.yml | 181 +++++++++++++++ .../current-ie/search/Dockerfile | 155 +++++++++++++ .../current-ie/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../current-ie/share/modules/amps/empty | 0 .../current-ie/share/modules/jars/empty | 0 .../search-services-upgrade/current/.env | 15 ++ .../current/alfresco/Dockerfile | 73 ++++++ .../current/alfresco/model/empty | 0 .../current/alfresco/modules/amps/empty | 0 .../current/alfresco/modules/jars/empty | 0 .../current/config/nginx.conf | 67 ++++++ .../current/config/nginx.htpasswd | 1 + .../current/docker-compose.yml | 181 +++++++++++++++ .../current/search/Dockerfile | 155 +++++++++++++ .../current/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../current/share/modules/amps/empty | 0 .../current/share/modules/jars/empty | 0 .../search-services-upgrade/previous/.env | 15 ++ .../previous/alfresco/Dockerfile | 73 ++++++ .../previous/alfresco/model/empty | 0 .../previous/alfresco/modules/amps/empty | 0 .../previous/alfresco/modules/jars/empty | 0 .../previous/config/nginx.conf | 67 ++++++ .../previous/config/nginx.htpasswd | 1 + .../previous/docker-compose.yml | 181 +++++++++++++++ .../previous/search/Dockerfile | 155 +++++++++++++ .../previous/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../previous/share/modules/amps/empty | 0 .../previous/share/modules/jars/empty | 0 e2e-test/release-testing/search-services/.env | 15 ++ .../search-services/alfresco/Dockerfile | 73 ++++++ .../search-services/alfresco/model/empty | 0 .../alfresco/modules/amps/empty | 0 .../alfresco/modules/jars/empty | 0 .../search-services/config/nginx.conf | 67 ++++++ .../search-services/config/nginx.htpasswd | 1 + .../search-services/docker-compose.yml | 177 ++++++++++++++ .../search-services/search/Dockerfile | 163 +++++++++++++ .../search-services/share/Dockerfile | 16 ++ .../share/model/share-config-custom-dev.xml | 5 + .../search-services/share/modules/amps/empty | 0 .../search-services/share/modules/jars/empty | 0 348 files changed, 13771 insertions(+) create mode 100644 e2e-test/release-testing/README.md create mode 100755 e2e-test/release-testing/insight-engine-sharding-replica/.env create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/README.md create mode 100755 e2e-test/release-testing/insight-engine-sharding-replica/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding-replica/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding-replica/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding-replica/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-sharding/acl_id/.env create mode 100755 e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding/acl_id/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding/acl_id/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/acl_id/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-sharding/date/.env create mode 100755 e2e-test/release-testing/insight-engine-sharding/date/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding/date/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding/date/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/date/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-sharding/db_id/.env create mode 100755 e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding/db_id/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding/db_id/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-sharding/db_id_range/.env create mode 100755 e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding/db_id_range/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding/db_id_range/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/db_id_range/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-sharding/explicit_id/.env create mode 100755 e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding/explicit_id/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding/explicit_id/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/explicit_id/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-sharding/lris/.env create mode 100755 e2e-test/release-testing/insight-engine-sharding/lris/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding/lris/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding/lris/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/lris/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/.env create mode 100755 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-sharding/property/.env create mode 100755 e2e-test/release-testing/insight-engine-sharding/property/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-sharding/property/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-sharding/property/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-sharding/property/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-zeppelin/.env create mode 100755 e2e-test/release-testing/insight-engine-zeppelin/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/alfresco/model/empty create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine-zeppelin/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine-zeppelin/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine-zeppelin/share/modules/jars/empty create mode 100755 e2e-test/release-testing/insight-engine-zeppelin/zeppelin/Dockerfile create mode 100755 e2e-test/release-testing/insight-engine/.env create mode 100755 e2e-test/release-testing/insight-engine/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine/alfresco/model/empty create mode 100644 e2e-test/release-testing/insight-engine/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/insight-engine/config/nginx.conf create mode 100644 e2e-test/release-testing/insight-engine/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/insight-engine/docker-compose.yml create mode 100755 e2e-test/release-testing/insight-engine/search/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine/share/Dockerfile create mode 100644 e2e-test/release-testing/insight-engine/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/insight-engine/share/modules/amps/empty create mode 100644 e2e-test/release-testing/insight-engine/share/modules/jars/empty create mode 100755 e2e-test/release-testing/mtls/insight-engine/.env create mode 100755 e2e-test/release-testing/mtls/insight-engine/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/mtls/insight-engine/alfresco/model/empty create mode 100644 e2e-test/release-testing/mtls/insight-engine/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/mtls/insight-engine/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/mtls/insight-engine/config/nginx.conf create mode 100644 e2e-test/release-testing/mtls/insight-engine/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/mtls/insight-engine/docker-compose.yml create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/keystore create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/keystore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl-keystore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl-truststore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl.keystore create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl.truststore create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/client/browser.p12 create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl-keystore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl-truststore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl.repo.client.keystore create mode 100644 e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl.repo.client.truststore create mode 100755 e2e-test/release-testing/mtls/insight-engine/search/Dockerfile create mode 100644 e2e-test/release-testing/mtls/insight-engine/share/Dockerfile create mode 100644 e2e-test/release-testing/mtls/insight-engine/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/mtls/insight-engine/share/modules/amps/empty create mode 100644 e2e-test/release-testing/mtls/insight-engine/share/modules/jars/empty create mode 100755 e2e-test/release-testing/mtls/search-services/.env create mode 100755 e2e-test/release-testing/mtls/search-services/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/mtls/search-services/alfresco/model/empty create mode 100644 e2e-test/release-testing/mtls/search-services/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/mtls/search-services/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/mtls/search-services/config/nginx.conf create mode 100644 e2e-test/release-testing/mtls/search-services/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/mtls/search-services/docker-compose.yml create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/alfresco/keystore create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/alfresco/keystore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl-keystore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl-truststore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl.keystore create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl.truststore create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/client/browser.p12 create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/solr/ssl-keystore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/solr/ssl-truststore-passwords.properties create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/solr/ssl.repo.client.keystore create mode 100644 e2e-test/release-testing/mtls/search-services/keystores/solr/ssl.repo.client.truststore create mode 100755 e2e-test/release-testing/mtls/search-services/search/Dockerfile create mode 100644 e2e-test/release-testing/mtls/search-services/share/Dockerfile create mode 100644 e2e-test/release-testing/mtls/search-services/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/mtls/search-services/share/modules/amps/empty create mode 100644 e2e-test/release-testing/mtls/search-services/share/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-backup/README.md create mode 100755 e2e-test/release-testing/search-services-backup/master-master/.env create mode 100755 e2e-test/release-testing/search-services-backup/master-master/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/master-master/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-backup/master-master/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-backup/master-master/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-backup/master-master/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-backup/master-master/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-backup/master-master/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-backup/master-master/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/master-master/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/master-master/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-backup/master-master/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-backup/master-master/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-backup/master-slave/.env create mode 100755 e2e-test/release-testing/search-services-backup/master-slave/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-backup/master-slave/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-backup/master-slave/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-backup/master-slave/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-backup/normal/.env create mode 100755 e2e-test/release-testing/search-services-backup/normal/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/normal/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-backup/normal/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-backup/normal/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-backup/normal/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-backup/normal/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-backup/normal/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-backup/normal/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/normal/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/normal/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-backup/normal/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-backup/normal/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-backup/sharding/.env create mode 100755 e2e-test/release-testing/search-services-backup/sharding/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/sharding/alfresco/model/sharding-content-model-context.xml create mode 100644 e2e-test/release-testing/search-services-backup/sharding/alfresco/model/sharding-content-model.xml create mode 100644 e2e-test/release-testing/search-services-backup/sharding/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-backup/sharding/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-backup/sharding/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-backup/sharding/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-backup/sharding/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-backup/sharding/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/sharding/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-backup/sharding/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-backup/sharding/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-backup/sharding/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-disable-tracking/.env create mode 100755 e2e-test/release-testing/search-services-disable-tracking/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-disable-tracking/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-disable-tracking/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-disable-tracking/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-disable-tracking/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-disable-tracking/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-disable-tracking/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-disable-tracking/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-disable-tracking/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-disable-tracking/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-disable-tracking/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-disable-tracking/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-replication/master-master/.env create mode 100755 e2e-test/release-testing/search-services-replication/master-master/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-replication/master-master/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-replication/master-master/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-replication/master-master/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-replication/master-master/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-replication/master-master/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-replication/master-master/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-replication/master-master/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-replication/master-master/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-replication/master-master/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-replication/master-master/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-replication/master-master/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-replication/master-slave/.env create mode 100755 e2e-test/release-testing/search-services-replication/master-slave/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-replication/master-slave/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-replication/master-slave/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-replication/master-slave/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-upgrade/current-ie/.env create mode 100755 e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-upgrade/current-ie/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-upgrade/current-ie/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/current-ie/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-upgrade/current/.env create mode 100755 e2e-test/release-testing/search-services-upgrade/current/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/current/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/current/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/current/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/current/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-upgrade/current/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-upgrade/current/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-upgrade/current/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/current/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/current/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-upgrade/current/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/current/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services-upgrade/previous/.env create mode 100755 e2e-test/release-testing/search-services-upgrade/previous/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services-upgrade/previous/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services-upgrade/previous/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services-upgrade/previous/share/modules/jars/empty create mode 100755 e2e-test/release-testing/search-services/.env create mode 100755 e2e-test/release-testing/search-services/alfresco/Dockerfile create mode 100644 e2e-test/release-testing/search-services/alfresco/model/empty create mode 100644 e2e-test/release-testing/search-services/alfresco/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services/alfresco/modules/jars/empty create mode 100644 e2e-test/release-testing/search-services/config/nginx.conf create mode 100644 e2e-test/release-testing/search-services/config/nginx.htpasswd create mode 100755 e2e-test/release-testing/search-services/docker-compose.yml create mode 100755 e2e-test/release-testing/search-services/search/Dockerfile create mode 100644 e2e-test/release-testing/search-services/share/Dockerfile create mode 100644 e2e-test/release-testing/search-services/share/model/share-config-custom-dev.xml create mode 100644 e2e-test/release-testing/search-services/share/modules/amps/empty create mode 100644 e2e-test/release-testing/search-services/share/modules/jars/empty diff --git a/e2e-test/release-testing/README.md b/e2e-test/release-testing/README.md new file mode 100644 index 000000000..3d8c30709 --- /dev/null +++ b/e2e-test/release-testing/README.md @@ -0,0 +1,108 @@ +# release-testing +> Tools and Docker Compose templates for Release Testing + +This project includes a collection of Docker Compose Templates to test Repository and Search Services/Insight Engine with different configurations. + +Test execution information is available in [Test Execution internal wiki page](https://w3.alfresco.com/confluence/display/ENG/Test+Execution). + +## Project structure + +Following folders, including Docker Compose templates, are provided. + +``` +% tree -L 1 +. +├── insight-engine +├── insight-engine-sharding +├── insight-engine-sharding-replica +├── insight-engine-zeppelin +├── mtls +├── search-services +├── search-services-backup +├── search-services-disable-tracking +├── search-services-replication +└── search-services-upgrade +``` + +Configurations have been generated mainly with [generator-alfresco-docker-compose](../generator-alfresco-docker-compose) project. + +## Docker Compose templates + +Every Docker Compose folder includes a `.env` file with versions settings. + +``` +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=1.4.3.0-RC1 +ACA_TAG=master-latest +``` + +Version number must be changed when execution the tests on a new release. Additionally, Docker Compose templates may need some modifications in order to be adapted to new configurations. + +Once started, services are available in following URLs: + +* http://localhost:8080/alfresco +* http://localhost:8080/share +* http://localhost:8083/solr +* http://localhost:8084/solr (when using Sharding or Replica) +* http://localhost:9090/zeppelin + +When using mTLS for Repository and SOLR communication, the endpoint for SOLR servers should be changed to: + +* https://localhost:8083 +* https://localhost:8084 (when using Sharding or Replica) + +Tests requiring additional instructions include an additional `README.md` file. + +Tests with persistent storage create a local folder named `data` with the *repository*, *db* and *solr* data. + +## Test Catalog + +Search via Share: Basic, Advanced, Faceted, Live Search, Highlighting, Language + +* [search-services](search-services) +* [insight-engine](insight-engine) + +Search configurations: sharding diff types + +* [insight-engine-sharding](insight-engine-sharding) + +Search configurations: master slave including master-slave contentStore replication + docker image + +* [search-services-replication](search-services-replication) + +Search configurations: sharding with replication + A test for enable.alfresco.tracking=false + +* [insight-engine-sharding-replica](insight-engine-sharding-replica) +* [search-services-disable-tracking](search-services-disable-tracking) + +Upgrades + +* [search-services-upgrade](search-services-upgrade) + +Backup + +* [search-services-backup](search-services-backup) + +JDBC driver with DBVisualizer + +* [insight-engine](insight-engine) + +Zeppelin + +* [insight-engine-zeppelin](insight-engine-zeppelin) + +SSL between ACS and Solr + +* [mtls](mtls) diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/.env b/e2e-test/release-testing/insight-engine-sharding-replica/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/README.md b/e2e-test/release-testing/insight-engine-sharding-replica/README.md new file mode 100644 index 000000000..4c49536ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/README.md @@ -0,0 +1,9 @@ +# sharding-replica + +Once Docker Compose template is started, type following URLs in the browser: + +http://127.0.0.1:8083/solr/admin/cores?action=newCore&storeRef=workspace://SpacesStore&numShards=3&numNodes=3&nodeInstance=1&template=rerank&property.data.dir.root=<>&shardIds=0,1&property.alfresco.port=8080 +http://127.0.0.1:8084/solr/admin/cores?action=newCore&storeRef=workspace://SpacesStore&numShards=3&numNodes=3&nodeInstance=2&template=rerank&property.data.dir.root=<>&shardIds=1,2&property.alfresco.port=8080 +http://127.0.0.1:8085/solr/admin/cores?action=newCore&storeRef=workspace://SpacesStore&numShards=3&numNodes=3&nodeInstance=3&template=rerank&property.data.dir.root=<>&shardIds=0,2&property.alfresco.port=8080 + +This will create 3 Shards with 2 core replicas on each one. diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding-replica/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding-replica/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding-replica/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding-replica/docker-compose.yml new file mode 100755 index 000000000..bb0b732cf --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/docker-compose.yml @@ -0,0 +1,214 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + solr6third: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6third + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6third" + SOLR_SOLR_PORT: "8983" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8085:8983 + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding-replica/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding-replica/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding-replica/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding-replica/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding-replica/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding-replica/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding-replica/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/.env b/e2e-test/release-testing/insight-engine-sharding/acl_id/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/acl_id/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding/acl_id/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding/acl_id/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding/acl_id/docker-compose.yml new file mode 100755 index 000000000..09ab90d9e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/docker-compose.yml @@ -0,0 +1,209 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARDING_METHOD: ACL_ID + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARDING_METHOD: ACL_ID + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/acl_id/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/acl_id/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding/acl_id/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/acl_id/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/acl_id/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/acl_id/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/acl_id/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/date/.env b/e2e-test/release-testing/insight-engine-sharding/date/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine-sharding/date/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/date/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding/date/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding/date/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/date/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding/date/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/date/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/date/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/date/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/date/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/date/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding/date/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding/date/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding/date/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding/date/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding/date/docker-compose.yml new file mode 100755 index 000000000..a17fa6d8c --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/docker-compose.yml @@ -0,0 +1,213 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARD_KEY: "cm:created" + SHARD_DATE_GROUPING: "2" + SHARDING_METHOD: DATE + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARD_KEY: "cm:created" + SHARD_DATE_GROUPING: "2" + SHARDING_METHOD: DATE + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding/date/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/date/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding/date/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/date/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/date/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding/date/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/date/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/date/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/date/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/date/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/date/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/.env b/e2e-test/release-testing/insight-engine-sharding/db_id/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/db_id/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding/db_id/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding/db_id/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding/db_id/docker-compose.yml new file mode 100755 index 000000000..ff08c2f1e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/docker-compose.yml @@ -0,0 +1,209 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARDING_METHOD: DB_ID + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARDING_METHOD: DB_ID + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/db_id/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/db_id/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding/db_id/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/db_id/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/db_id/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/.env b/e2e-test/release-testing/insight-engine-sharding/db_id_range/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/db_id_range/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding/db_id_range/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding/db_id_range/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding/db_id_range/docker-compose.yml new file mode 100755 index 000000000..f98acd71b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/docker-compose.yml @@ -0,0 +1,211 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARD_RANGE: "0-800" + SHARDING_METHOD: DB_ID_RANGE + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARD_RANGE: "801-40000" + SHARDING_METHOD: DB_ID_RANGE + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/db_id_range/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/db_id_range/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/.env b/e2e-test/release-testing/insight-engine-sharding/explicit_id/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/explicit_id/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding/explicit_id/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding/explicit_id/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding/explicit_id/docker-compose.yml new file mode 100755 index 000000000..5042bce2f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/docker-compose.yml @@ -0,0 +1,211 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARD_KEY: "shard:shardId" + SHARDING_METHOD: EXPLICIT_ID + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARD_KEY: "shard:shardId" + SHARDING_METHOD: EXPLICIT_ID + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/explicit_id/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/explicit_id/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/.env b/e2e-test/release-testing/insight-engine-sharding/lris/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/lris/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding/lris/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding/lris/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding/lris/docker-compose.yml new file mode 100755 index 000000000..0f64f2e57 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/docker-compose.yml @@ -0,0 +1,209 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARDING_METHOD: LAST_REGISTERED_INDEXING_SHARD + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARDING_METHOD: LAST_REGISTERED_INDEXING_SHARD + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/lris/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/lris/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding/lris/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/lris/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/lris/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/lris/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/lris/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/.env b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/.env new file mode 100755 index 000000000..af5ab5ebb --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=latest +ZEPPELIN_TAG=latest +ACA_TAG=master-latest \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/docker-compose.yml new file mode 100755 index 000000000..68adf7efd --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/docker-compose.yml @@ -0,0 +1,209 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARDING_METHOD: MOD_ACL_ID + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARDING_METHOD: MOD_ACL_ID + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/mod_acl_id/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/property/.env b/e2e-test/release-testing/insight-engine-sharding/property/.env new file mode 100755 index 000000000..af5ab5ebb --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=latest +ZEPPELIN_TAG=latest +ACA_TAG=master-latest \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/property/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/property/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-sharding/property/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/insight-engine-sharding/property/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/property/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/insight-engine-sharding/property/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/insight-engine-sharding/property/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/property/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/property/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/property/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/property/config/nginx.conf b/e2e-test/release-testing/insight-engine-sharding/property/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-sharding/property/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-sharding/property/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-sharding/property/docker-compose.yml b/e2e-test/release-testing/insight-engine-sharding/property/docker-compose.yml new file mode 100755 index 000000000..5b84df362 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/docker-compose.yml @@ -0,0 +1,211 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARD_KEY: "shard:shardId" + SHARDING_METHOD: PROPERTY + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARD_KEY: "shard:shardId" + SHARDING_METHOD: PROPERTY + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-sharding/property/search/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/property/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-sharding/property/share/Dockerfile b/e2e-test/release-testing/insight-engine-sharding/property/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/property/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-sharding/property/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-sharding/property/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-sharding/property/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-sharding/property/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-sharding/property/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-sharding/property/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-zeppelin/.env b/e2e-test/release-testing/insight-engine-zeppelin/.env new file mode 100755 index 000000000..c694f047c --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=1.4.3.0-RC1 +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine-zeppelin/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine-zeppelin/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine-zeppelin/alfresco/model/empty b/e2e-test/release-testing/insight-engine-zeppelin/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-zeppelin/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine-zeppelin/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-zeppelin/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine-zeppelin/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-zeppelin/config/nginx.conf b/e2e-test/release-testing/insight-engine-zeppelin/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine-zeppelin/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine-zeppelin/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine-zeppelin/docker-compose.yml b/e2e-test/release-testing/insight-engine-zeppelin/docker-compose.yml new file mode 100755 index 000000000..8be14a15b --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/docker-compose.yml @@ -0,0 +1,186 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + + + zeppelin: + build: + context: ./zeppelin + args: + ZEPPELIN_TAG: ${ZEPPELIN_TAG} + ALFRESCO_COMMS: none + mem_limit: 768m + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + ports: + - 9090:9090 + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine-zeppelin/search/Dockerfile b/e2e-test/release-testing/insight-engine-zeppelin/search/Dockerfile new file mode 100755 index 000000000..16ac7e174 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/search/Dockerfile @@ -0,0 +1,155 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine-zeppelin/share/Dockerfile b/e2e-test/release-testing/insight-engine-zeppelin/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-zeppelin/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine-zeppelin/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine-zeppelin/share/modules/amps/empty b/e2e-test/release-testing/insight-engine-zeppelin/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-zeppelin/share/modules/jars/empty b/e2e-test/release-testing/insight-engine-zeppelin/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine-zeppelin/zeppelin/Dockerfile b/e2e-test/release-testing/insight-engine-zeppelin/zeppelin/Dockerfile new file mode 100755 index 000000000..7b446ce35 --- /dev/null +++ b/e2e-test/release-testing/insight-engine-zeppelin/zeppelin/Dockerfile @@ -0,0 +1,48 @@ +ARG ZEPPELIN_TAG +FROM quay.io/alfresco/insight-zeppelin:${ZEPPELIN_TAG} + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Useless when running in Alfresco Comms none mode +RUN mkdir ${ZEPPELIN_HOME}/keystore \ + && chown -R zeppelin:zeppelin ${ZEPPELIN_HOME}/keystore + +### Add SSL Configuration to Zeppelin Interpreter +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/"zeppelin.jdbc.principal":/i \ + "alfresco.enable.ssl": { \n\ + "value": "true", \n\ + "type": "string" \n\ + },\n\ + "solr.ssl.checkPeerName": {\n\ + "value": "false",\n\ + "type": "string"\n\ + },\n\ + "javax.net.ssl.keyStore": {\n\ + "value": "/zeppelin/keystore/ssl.repo.client.keystore",\n\ + "type": "string"\n\ + },\n\ + "javax.net.ssl.keyStorePassword": {\n\ + "value": "kT9X6oe68t",\n\ + "type": "string"\n\ + },\n\ + "javax.net.ssl.keyStoreType": {\n\ + "value": "JCEKS",\n\ + "type": "string"\n\ + },\n\ + "javax.net.ssl.trustStore": {\n\ + "value": "/zeppelin/keystore/ssl.repo.client.truststore",\n\ + "type": "string"\n\ + },\n\ + "javax.net.ssl.trustStorePassword": {\n\ + "value": "kT9X6oe68t",\n\ + "type": "string"\n\ + },\n\ + "javax.net.ssl.trustStoreType": {\n\ + "value": "JCEKS",\n\ + "type": "string"\n\ + \n},\ + ' ${ZEPPELIN_HOME}/conf/interpreter.json; \ +fi diff --git a/e2e-test/release-testing/insight-engine/.env b/e2e-test/release-testing/insight-engine/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/insight-engine/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/insight-engine/alfresco/Dockerfile b/e2e-test/release-testing/insight-engine/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/insight-engine/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/insight-engine/alfresco/model/empty b/e2e-test/release-testing/insight-engine/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine/alfresco/modules/amps/empty b/e2e-test/release-testing/insight-engine/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine/alfresco/modules/jars/empty b/e2e-test/release-testing/insight-engine/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine/config/nginx.conf b/e2e-test/release-testing/insight-engine/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/insight-engine/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/insight-engine/config/nginx.htpasswd b/e2e-test/release-testing/insight-engine/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/insight-engine/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/insight-engine/docker-compose.yml b/e2e-test/release-testing/insight-engine/docker-compose.yml new file mode 100755 index 000000000..019b0b952 --- /dev/null +++ b/e2e-test/release-testing/insight-engine/docker-compose.yml @@ -0,0 +1,176 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/insight-engine/search/Dockerfile b/e2e-test/release-testing/insight-engine/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/insight-engine/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/insight-engine/share/Dockerfile b/e2e-test/release-testing/insight-engine/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/insight-engine/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/insight-engine/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/insight-engine/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/insight-engine/share/modules/amps/empty b/e2e-test/release-testing/insight-engine/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/insight-engine/share/modules/jars/empty b/e2e-test/release-testing/insight-engine/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/insight-engine/.env b/e2e-test/release-testing/mtls/insight-engine/.env new file mode 100755 index 000000000..af5ab5ebb --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=latest +ZEPPELIN_TAG=latest +ACA_TAG=master-latest \ No newline at end of file diff --git a/e2e-test/release-testing/mtls/insight-engine/alfresco/Dockerfile b/e2e-test/release-testing/mtls/insight-engine/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/mtls/insight-engine/alfresco/model/empty b/e2e-test/release-testing/mtls/insight-engine/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/insight-engine/alfresco/modules/amps/empty b/e2e-test/release-testing/mtls/insight-engine/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/insight-engine/alfresco/modules/jars/empty b/e2e-test/release-testing/mtls/insight-engine/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/insight-engine/config/nginx.conf b/e2e-test/release-testing/mtls/insight-engine/config/nginx.conf new file mode 100644 index 000000000..099d0ec94 --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/config/nginx.conf @@ -0,0 +1,56 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/mtls/insight-engine/config/nginx.htpasswd b/e2e-test/release-testing/mtls/insight-engine/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/mtls/insight-engine/docker-compose.yml b/e2e-test/release-testing/mtls/insight-engine/docker-compose.yml new file mode 100755 index 000000000..f6de75238 --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/docker-compose.yml @@ -0,0 +1,196 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: https + TRUSTSTORE_TYPE: JCEKS + TRUSTSTORE_PASS: kT9X6oe68t + KEYSTORE_TYPE: JCEKS + KEYSTORE_PASS: kT9X6oe68t + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=https + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + ports: + - 8443:8443 + volumes: + - ./keystores/alfresco:/usr/local/tomcat/alf_data/keystore + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: https + TRUSTSTORE_TYPE: JCEKS + KEYSTORE_TYPE: JCEKS + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8443" + ALFRESCO_SECURE_COMMS: https + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + SOLR_SSL_TRUST_STORE: "/opt/alfresco-insight-engine/keystore/ssl.repo.client.truststore" + SOLR_SSL_TRUST_STORE_PASSWORD: "kT9X6oe68t" + SOLR_SSL_TRUST_STORE_TYPE: "JCEKS" + SOLR_SSL_KEY_STORE: "/opt/alfresco-insight-engine/keystore/ssl.repo.client.keystore" + SOLR_SSL_KEY_STORE_PASSWORD: "kT9X6oe68t" + SOLR_SSL_KEY_STORE_TYPE: "JCEKS" + SOLR_SSL_NEED_CLIENT_AUTH: "true" + SOLR_OPTS: " + -Dsolr.ssl.checkPeerName=false + -Dsolr.allow.unsafe.resourceloading=true + " + ports: + - 8083:8983 + volumes: + - ./keystores/solr:/opt/alfresco-insight-engine/keystore + + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/keystore b/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/keystore new file mode 100644 index 0000000000000000000000000000000000000000..546590233f8c9c4587c868e090ff15b7000f1e53 GIT binary patch literal 647 zcmX?i?%X*B1_mY|W&~np29Dg+lEjq6l0=|D_6#vY+cj?)Sc{7ojFaaL^pcAz z3rh0!3X1Z}GE-8E^nz0pb5c|Mld@8iOWg8{yi+R!it>8|)4SnqE=F zAeog|mRJGPkF3qk%y!w~?I8tB3@p(Mys3G~`6;O>0f|M4xy2<6Owmr!3<5wwkiDrX z&iQ#Isd*)Z40Q}lJ`9`%U{#Je=_L$8J|GM9a}x8?^@B@_GV{`{eHhq_fzAU;gVZxu z6qFW$%v!1`Ib7*A3d4I_{Q@`;)LU+Z3m+>QXR71 z2JigQ_?CIc;rAxG92tL7SxzhUYHbRips{dM^3CnlrpKku)}IpZ{>`}0!8-o{)B}gpX=AG-s#I8XkJ*j)JpaJy(y9N8)hw4u(kiI zDtK_=q_*v;mK$bt-mUy(lu%-OXL5Ahe8v|xRtp-Ew^|-_^vJ(nx--o~=lPpji@kf5 zbNzngottp=TR~CKq={35TN(LIx3X<~@A$VzMe|B<#q~MiB@AK#POjmZB^kahrjB_j kAw`)5IjJtL!8j#EcF4H6w-~Rh`NXiK$0+k%ug_V10C~y-=Kufz literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/keystore-passwords.properties b/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/keystore-passwords.properties new file mode 100644 index 000000000..3c45acf29 --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/keystore-passwords.properties @@ -0,0 +1,7 @@ +aliases=metadata +# The password protecting the keystore entries +keystore.password=mp6yc0UD9e +# The password protecting the alias: metadata +metadata.keyData= +metadata.algorithm=DESede +metadata.password=oKIWzVdEdA diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl-keystore-passwords.properties b/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl-keystore-passwords.properties new file mode 100644 index 000000000..0a7fb3677 --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl-keystore-passwords.properties @@ -0,0 +1,7 @@ +aliases=ssl.alfresco.ca,ssl.repo +# The ssl keystore password +keystore.password=kT9X6oe68t +# The password protecting the ssl repository key +ssl.repo.password=kT9X6oe68t +# The password protecting the ssl Alfresco CA key +ssl.alfresco.ca.password=kT9X6oe68t diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl-truststore-passwords.properties b/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl-truststore-passwords.properties new file mode 100644 index 000000000..c04a6b10a --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl-truststore-passwords.properties @@ -0,0 +1,6 @@ +aliases=alfresco.ca,ssl.repo.client +# The ssl truststore password +keystore.password=kT9X6oe68t +# The password protecting the ssl Alfresco CA strust certificate +alfresco.ca.password=kT9X6oe68t +ssl.repo.client=kT9X6oe68t diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl.keystore b/e2e-test/release-testing/mtls/insight-engine/keystores/alfresco/ssl.keystore new file mode 100644 index 0000000000000000000000000000000000000000..c75a81da710dba58b8860e496792b18c8caf4382 GIT binary patch literal 3255 zcmeH}doPY5=o|+aT}SM8Kh1zLy~frP(m)J zh(aNSU3%f008WxfdGcjk1*!3_i+ILKqA$`?%Lp@ z-1!_B98R!Bh+y#{%`Df>&8PI`pH;8sRxeK6Dfe15ls%cgl^2%wL_hplLoA0R{|&bj zTwn6Wi|nZa1>S3{3iDf1Q3Nl=fu?&*G`?o^P3vh+R{0bKBjsw%mr{SSf2+}OOwacL zeulsQ`0$b3cYxa#?OSizn}@GI##+`4T~0eSNz9=%*&K(Pt6FB|SY9Y9*}b`?-H%o> zV$;F!x)pBb8R)NZqG55jOP5+E&W=P1xf(kbqIBUOFc<8LC)91BsoEo`;Xot$p}QFg zj_}I4E!{UQQWwozM8Ce{e4nrOw$Cl(hH4%L2px7-J(6~#U*)`vV7oPpiqcCy>bLie zT^+)l*w{sBt*<$K>PmPwL3=~{g>z+z`7~?XoKs;2mF**Nh`L+uYW}y8OKmjMPs@xwfVkqBj26jNiW9~I{CSE zcMGqHLj1drzVNu0dG-Wa?2t1u?z>q>-$FC=ERni#OhG8h^xnYo)y_{O8f~G0U|S;?V4*`EhYphRW6@ z-ro%hQl{N6Pt-LI1`MS~l}8-heKR;qpI1$+M=fB=#(G`#tYuGQUm&yDXSqB zX#|d!w~yirxO>U}K51_UX($mWG|1e<0S zE~@{VizZ7dlHYzdv1mJ>Of z?WA2KYWBCtIRzB(Dz`5b*SlI>Gz%JmTj@6UYnDOn>+$3FWje5Vj!NO1V!Ab*S0Lh535nLuCB9zM) ze69ouFmQ^X=lEeu@y$e{-K#5Zh2GL(iS=D5Q5XBYnSV@{P~ zZt@B9Kl~l~f6O;nd4Q(Q{;62LKdeFJLw{QZ$NfD&f^27+)Rj(u<;PfEbt(2yYfX`j z=D^nIEQ6)Yk)Lo=&^cz)nLzcflWr}R#;ysoKSWi}eOA*?RSp1do!e=Vrc$h>T99k3yb#hl{Y)@m`C!aZ*8*|9v%WToFR v#>Z)6%w(+m${^RjIQSjr@n0PL89AUNHP_l~adIa5Xe_ioChp=W2IcD@rX+&euy$WME*-o*|~Qm4P)v&(y#YsO*736Vn|ac3r^C z#K^?N$#D9d-?~EyH){=e**LY@JlekVGBR?rG8ohwavN~6F^96S2{XAn!8jZ|OrhR} z!UlpM8Fn5n-^9$6)Vz$;#1un$16hzD7mt`D)By^?`DrEPiAAXjJ|!u7h5`nBAO+k! z?4fztdHLmehSCO-AQ5IBA?MQKlKfl+xK3wB137VCLrViQBXa`_V+&)mC~;n65Z4IG z9e4*e&PNV2Mpg#q#$E=4#!jZjMuu(H0gNUdQN5hSQB2z;|6kj`EZg^AagKtcN!yA3 z(ASZP(yP~0Uf#EEzMbMtzp_bMev54@$+O}Hx%=Jsjc^{t4Hr5Pp$rbK5kOxM9tTKy)fmj1} z1w0@H!Yr%?%#4ix!7(Vy4`i{h0Mkz!asU7m4KvW^!8RGqlh&4gd~kTR_{L_1Y%Za5 zjUP=4r>%aQCw|^_OS0hOb28RlZ)ez^3=#G{%`rFSs(*LTbvcAbj==L7!Y;vBuA)B<20$jMC2D}m$#-FkRFUtA zTfg!2qSx#Pw>4k?XTI+6oONI8x>=OWe5KYfg-@LG`r?-UC|5?axVQfUynB2l>c!qW ztFqp9{P)moR^5T;?kiu;jFn{AaJ-o<-Qt|-a!Ar|VoWz^VoU}XVZh|eWWWF{vp5sl zJQ&-4I59GUk}sQsfiXgemqkrX#lIjmFF4po!96uEwJ5P9HANvfwWut$NWnR^s3bEj zGZ`p`l%pPBUgi9z(j$1H>K%&(T@lMxRM)OBXxt3RQjMz(8dqS?R0|thmNYgFcnWJm zD*Zu4GdyFnE-(-V@l{!P47k`hwAmP0S=pHx4MaeKf-JlS+)bQ0`N@en8TrK}X!!4RW6VK*^I#j3nG`HSkG7tI}Z#kcp(#k{vG?WZh1@lNd4V%0gbE}Udw)&Dx5+c&v4TbzqkH0akp F2>{jLN$LOq literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/client/browser.p12 b/e2e-test/release-testing/mtls/insight-engine/keystores/client/browser.p12 new file mode 100644 index 0000000000000000000000000000000000000000..a58b6a736510e39f2e2fed678d4d4dd9bcd77bba GIT binary patch literal 3033 zcmY+DXE+;-7RM7KwP&o>9<_>uh^kd;OI4^*BQ4TtHAbl|ErQn8L=`cMsx5>!#%slF zwY1b;L3vSIYuw)Z-21-I{cxW1Jip&L=hOK^u&kqWKzaz4H4((D5Mvs1zz#eIBw|@3 z7_h7%zi}W0OE2|*iXO~>rRVyM*?t!ji1oi)Y%D-JB9^Wef~Bj3$b(q^hkqZxzyP+H z^e|{s5~xW)oAWYVr%zX@Kw#+T0UcHhSh~omni?1jC(P9^!+YLvO8yp1HpXVpjvYC= zxm3d0#}G=jxElu2W3vZm6tDSbjlEF==ql`xy62aCr>{iQ4!rl*j>qm*1Zlj^R()S| zVanuz$Z#Z!aMgy99*sJ?Zk$L|j(+~No*z{Fa537JoNCXwwev|D>ot<~Bv!fiX8vqW z^XZG%fIm?jm7zRh9)A@qKu^vEOgp z&DUr0qTw88U}{XCULWO$AaiJ%gP@4*0aF_I>qLZAv^ZJy2Dl9GSLvdPD2M>QrELqz ziVV3BCP?)+%1>_Ix-ky7PMU^(i(JVrR$8+%U)||H8q8O*Gu|!o%wY&}VPbR#K3Hkx z#q@g&I9Y|3D`o(C+>zRi{Fff)YXQ+`#Ox@NqS|q2a z-iWCWqxrt&Iw-vd=Z#+(@b9-loN)24U(MA*>MBhO0hzkStM(JjhE^rTQVH=)FL4?6pR74rkGbw}p)`-(|kOI^IBJ%f(GlQXA zq8tD>fG@xY5D4%C+y(eTB>vHSP%s0}&4*rh#i8nOC|nh$p$dV*G$B|f#NR{bKtwE) z&Tphi2L$|Xs{a_^|78R8?`-tcU35hnu3qGoJ#TS;#Le`uiLd=X*@(oRJCqXI7=)g( z&5gZupb-rgcS15uT;v&Iqklv_dLk9j+O2qs5}8331>(~GQihH2dQG>6vspO2WWSf` zkv6~ql7)JZ6V!XTX6DS;-AW=Qcrh(M9Ru#^CThhv*XZ&b&Da_-3$hE?_XQ$1&S_YN zeZ4|$>Zfs;er@j>tg`NS_U-<*bLr!T4Tz72i1bNvlG3VyHj1mv?UZHC#v~CJ^>%iGXwZb3p`reiJn%s7x^ZS z1jUVw)TFxm2qMMs#@_YZ*Lfx{HBPF>^lw$@c1_|0w{U`G$M3XlL@j50q_nf;rIS8a z+a!AOjsHcxfb*F0^Zgd%Sj_c{xO3yZ-5Z%G@yz&{D!HGjm_nvUA~Ce*ATId#+NAF@ zv^1uN5`3EXZ~Ox6dAME1Evf(7lCdrr?Dl_I6$=Y3eRwk)P$}lBrQA``X^p>g{&h zSPFN6b6>4z-RlE>U%h>)j;9MM^A*&vvZgoFK^JXyn~$(fR(syrW`&ykg`=$xR7xq>m=cuK;}pju@8`(+Pik*_Cm+)~8P&T^f+x77X_LiTw4o zx)kq6HcA{F!U;CxPrx@zD$)~L`^o!&nnj@%+pSTD{9=d9*I8^v zUcINSS(0N1Z6qHTNNGl-@4@rU**a$l64DKty%6z+?G964I8(Bu49#OH_meF14_@ZZ znb0zxg4OdyWoWSNs<$5zG#(`O|>1DIDYd|RvZYSQ4aL@OgS7R9MU`p zaO!$DIv_O`^ELCQhBfZYGdwH*$dneb78Ew5C$YLG=t@0CeR8D>&ULm9a}tC%8?ii)go-)aj&`mB?r7h-lO1mk;PGC(F$_&F4*T6<10Y?=!Na?^@E%<=O*oS z8vBT4?*)zaMG_Oorxr{mlljob`ng{W)Sd=4HSWAPAna~msR1a8UC+MMVV`w}ko2*~ z#ISACV&kg(Zq2}>FNfN<$#_@)iG}}4G ztWbn0H=6>;sL6v?u8&jdLimfB1J*fV=S<>Jv`@JT(OOu4NP5CE{|Yg^uxTy3AHd`C z(1ziC<06X^ui-nm$G14uLCw=2j}z;cEeelQ?~p!&ofxS?fySmH zAv}TXg`;NCp8NgTPL)UCD$(Ko#i)WptGOy~8~(OBVOcpyg5D!c+kh-WW;#nZZXx-d zlo>kcM8~IB5AfRx;Rnn#1 zZ`U@$Zo1pEfY|SA?e=BPk10nPLFnA=m7e8vJuH17argYMx>^6i6_*K_D-9WrhaHbG zL8F^hPN?=*qV59-{|MI?xoMQDYWL%OhZo07f)W$3Y_J3EZB=hd!Y295$BNN>Sg2Ml zLmyS%wVS8Qrxqx!iwtPV1PsC~(ybfK zP-{yva=9qXaG;B2vDB(|59TxQF0Z@RkAt;XJzV(Q@FW(WBj9>3QB~J8>l&;YzI!6v zO0&#vnKFG2%dX@M9X7$f`@p!y7^0YXRJ3GjNngDAQ?{1+oThV>bduzQ8vjDlYa#|w z{oN4r0dYK3HiL22oJ;4-lHyep`9UhrGRibDK=|<1N z<&N&??7HP7rj_D@DsX3OErSw|A=8~PfS-HdOJ(&(5?i4P_coVj P9}%1{uhG#1V~GC(R->oB literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl-keystore-passwords.properties b/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl-keystore-passwords.properties new file mode 100644 index 000000000..c9cb4d0d2 --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl-keystore-passwords.properties @@ -0,0 +1,7 @@ +aliases=ssl.alfresco.ca,ssl.repo.client +# The ssl keystore password +keystore.password=kT9X6oe68t +# The password protecting the ssl repository key +ssl.repo.client.password=kT9X6oe68t +# The password protecting the ssl Alfresco CA key +ssl.alfresco.ca.password=kT9X6oe68t diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl-truststore-passwords.properties b/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl-truststore-passwords.properties new file mode 100644 index 000000000..b3b70ab01 --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl-truststore-passwords.properties @@ -0,0 +1,7 @@ +aliases=alfresco.ca,ssl.repo,ssl.repo.client +# The ssl truststore password +keystore.password=kT9X6oe68t +# The password protecting the ssl Alfresco CA strust certificate +alfresco.ca.password=kT9X6oe68t +ssl.repo.password=kT9X6oe68t +ssl.repo.client.password=kT9X6oe68t diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl.repo.client.keystore b/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl.repo.client.keystore new file mode 100644 index 0000000000000000000000000000000000000000..b0dc4ef08f20f8e319befa4f5c61f3599c135152 GIT binary patch literal 3265 zcmX?i?%X*B1_mZL=1$B>D@rX+&euy$WME*-o*|~4%)lCpt}rciG~ zVFN*s3_A~(Z(?RjYFfhHvk{{Irtt#G+IMpOO?kLjeOmkOFQV z_RzfSy!`S!Lums^kO(u6kaKBqNq(*ZT&J_6ft)z6p{0SDk-33|v4yc&lsK<3h-(Dp z4!i>!=Oc$1BP#=QV=se2V<%H%Bf~c907es!s9w(ED5hD6m0FYjA7-%jzSU)dzBzY`yP;d)~*FL}r8IN1|DK6@?nyqiD1EM5Ek{%Of4 zDN_v7_lqn}e#Xkhkrnau?d6%z1LX|grA&U=WmBQFhf9ZtqovGKsPtX->y=w>xtzZG zkcpX*fpKwyK^!cW=6*U;24zU2eMdLfa#|VIRJo(h8gJdV4IBQNoz|#J~+Hud}FghHkZ)3 z#*Ze2(^kLD6F={|C0X$CIT`D&w=--{h6wwf=9rsu)xSIF@lNgMq0`>@N;cT5wU?)C zYCkFzw{U^yLiWEqYyuMRTYf*fG+?LQ|78y~(^F0uCe7Gz=;y3uaue6<*~HjRN=bf` zeMot)(HpKSyUs-b^8q6Re{pe+UQucRFc0KprskDE@`2_)Uh*%(Bm?*~;bK%GGVYXOm`s z7YaUeVe)$}OVO?KL!Xvx+W&sNhSA(pwceLs9+ToXobok3N&mds+_@jNd_TOrVV6VT zdFji?Y7V!44hfKn(KA}VXr*g(WPa#uj*Im@k{@5@wcXFU{9R2xKqDq#!u~TB@u^&w z*4|A>@6Yp|?cZ#_OR&tlxh~~ymwhZl?A|$Fu18*b(a`OD%c*OF#arWjW%W;INlsPC zw7IkYaQQ*0SNED0M=#S;I3&A2B41`JYmMH<>7QlW?z#Vbw>n9`r!}v0A@jot(#yWR zShvjZfJ8=*-0DWP>C)RmbndB?N*q+lxXX}WxvcP?NQ2(AYr@rf+m~L^O$nZBskwyB zf4#tyck@b)H{NM4n>;0=>&1FChPQW{AJ$ofZGE)b_Xkt{MD>3iX3_WGa_;%GssC`? zcFl-wvEt3o7PEgj+;D+?;yi!ZnJ%Sbu0JxR1=j5?KE*S^r$6Jvd$uP_`{sZ2(ddp% z6YZb!PS?O8vF6t52cHy+vi$bET)9x(@5#K(rT>rJov~zZU~z6{IPcQ-;yN~M-~Fpw zmxpmgO$b-^-4wfR-Qw*&-XB~-i-HWQPHZTS>WH%4dZtBmoBc)~{r($G1%Y!!IhgJg zRfi-<{BK@7mot7?sb#i&#y9TxqI1KE~rpqdGfVa8~4n5?){m=?oz;>Wn~*b z{f-Sdc*k)nyUgYcw`k*}OPq!2Wt-NSgNt)msm%;5v6*iGu_L6^W)fgT%XtG|8e$gL zMxf%_1Xf&E!m1D~^$8hOhn9f`r0P&auR4N&*}gclB)_Oq!5N(S4e%Azt1le7%2E8X z>xO})zpma3%P`?vnZMQO08iEpE&3B#V!3&u8d}JZ~q5)_xMWGi@kSNWxehA z@1fbOx&zPMSH7GXE6K3ocr#nN#W~aEkb=62G2NhvF&SLp0t;Iv0|sCX%bC#T!Pxf0 ziIEXh*s?ho7$byuS=7W-{0ma^f`fe&+*9*XixNvxQxt+zi^@`q6r59wN;1e>|sjhi7AK;vqI#ueDBfQ5}MOBx#oJcTtOwN*e3 z33xTcy1+mf#8+kEG2mk30G8{ltnAE;1|lFqK^9&E?k3Kh{N%)(jQrvfw0r}qu`;f) zwA_DJ&ETVN>X6!y@!8eset5m={+if#%9UTw=jy0Tvu$Qj=UM-bW68-$MxSPXH(LI1 z{9ja4(np^KNnFsxgabe5dpRw}vR2`Wm0mgp< zIM{vWx*uby;@kV?V&2=8_EVOhcqevivFe;zqm45fv>x&0`O(JNKsC;;JZjwkwWCsp R^IlGP`#I&4U%Td=1_1Dfk68c! literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl.repo.client.truststore b/e2e-test/release-testing/mtls/insight-engine/keystores/solr/ssl.repo.client.truststore new file mode 100644 index 0000000000000000000000000000000000000000..2feb2d8270a13046c97c5fade08f3b3eaad25749 GIT binary patch literal 2850 zcmX?i?%X*B1_mY|W(Lz7#l<;#MX3e(3=E9fGsM(87+53pObsl7@>dO-m@fjc)dFTF zMkXdE0R{tJHcqWJkGAi;jEvl@3eG0uz?^*hMkAY zH!(9MH7_GIF~v~cKo%s(#UtjJlU9^koSd%^oS#-wo>-Ks;8T*KXDDF62U5Vz!ycNK zotIypXDDqT2@+xE5ppgqF3HbTfa`R2G>{YLHMBG^Gcq@@Ft#u@ixTHG0&z{CT!SK* zo3J>L47Vs7C_>yKh3=LhUsBt#LURRxVVWi-Jppv860)8!YoV%48XYJOlb39 zZ2RHF$jHLN%*5tkV2lvrWlCa8J!kElMm&O;HF=Eh>+I2lf#^ILZ);btv3Ny_pwGX4jJ4C?{| zVUQM;Zk+06mv!J=&kxG=iO?*lmz)U6{AzpPnV;!_K@-y* zAa;dhex%SC{AGYKs0=WIl>q}@NZ~6Gwpj--ns`L@au!E1ZIk?eZU3@t-+#q93XUdi zC;CHQMB_-@5sBiZ}hrCTabh_}~lI8-sbtJ7&kpp6Kz}YoX`e{PAV!+VA&I zOFl`NVwk>PWO4E{RxXaLh^KEa&wL&zXZS8<^2;up3Z*?KbjOyTm3dq{JiUyWWmShWURa1&agchBJ6vbV{Xb-|L&m2JGGyO zPJ81k*#mp#->PdQM6Jt9mCHYPEA?3YBZ@8}PIv0V+2cX(dFF7YOHLnDc4>Zc)`G6Ui2bgaFu_LS! zWJL4JfR|JRE5S+FDD?tTkaB$+S3s+w_bd{s{W!V$%Q}cp!qeRbF z&E?-2GX0$N4Y?ju^_zN^4=hzrH>vuzdc(TwYBj6+x6gffZvDp7i(a!I+}3>kpZU7O zbJl&W>t<0h^Oah|6h3jz>x*0Zqg)xy;@*^F)BW&z)%`WG@02UQp3l`$nP%I}pw6@Y9mkTBlZ-yi{%*AV;l^1_*79Bd zW;d^Nd45?YHT$T*x)aalggR8G`ZTxRV=@o=7vsW~yFX*)>8Uz0O9G7l1aPqX%ymD; uQpLCT&BeU8EA6K&Kk-iN)?(E;vvh9q&lF|Oip`nJIy=km^B=8aOZ5TmUxfGo literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/insight-engine/search/Dockerfile b/e2e-test/release-testing/mtls/insight-engine/search/Dockerfile new file mode 100755 index 000000000..16ac7e174 --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/search/Dockerfile @@ -0,0 +1,155 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/mtls/insight-engine/share/Dockerfile b/e2e-test/release-testing/mtls/insight-engine/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/mtls/insight-engine/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/mtls/insight-engine/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/mtls/insight-engine/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/mtls/insight-engine/share/modules/amps/empty b/e2e-test/release-testing/mtls/insight-engine/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/insight-engine/share/modules/jars/empty b/e2e-test/release-testing/mtls/insight-engine/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/search-services/.env b/e2e-test/release-testing/mtls/search-services/.env new file mode 100755 index 000000000..c694f047c --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=1.4.3.0-RC1 +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/mtls/search-services/alfresco/Dockerfile b/e2e-test/release-testing/mtls/search-services/alfresco/Dockerfile new file mode 100755 index 000000000..433635ea6 --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository-community:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/mtls/search-services/alfresco/model/empty b/e2e-test/release-testing/mtls/search-services/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/search-services/alfresco/modules/amps/empty b/e2e-test/release-testing/mtls/search-services/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/search-services/alfresco/modules/jars/empty b/e2e-test/release-testing/mtls/search-services/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/search-services/config/nginx.conf b/e2e-test/release-testing/mtls/search-services/config/nginx.conf new file mode 100644 index 000000000..099d0ec94 --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/config/nginx.conf @@ -0,0 +1,56 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/mtls/search-services/config/nginx.htpasswd b/e2e-test/release-testing/mtls/search-services/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/mtls/search-services/docker-compose.yml b/e2e-test/release-testing/mtls/search-services/docker-compose.yml new file mode 100755 index 000000000..41e25360d --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/docker-compose.yml @@ -0,0 +1,199 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_CE_TAG} + SOLR_COMMS: https + TRUSTSTORE_TYPE: JCEKS + TRUSTSTORE_PASS: kT9X6oe68t + KEYSTORE_TYPE: JCEKS + KEYSTORE_PASS: kT9X6oe68t + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=https + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + -Dshare.host=localhost + -Dalfresco.port=8080 + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dlocal.transform.service.enabled=true + -DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/ + -DlocalTransform.imagemagick.url=http://imagemagick:8090/ + -DlocalTransform.libreoffice.url=http://libreoffice:8090/ + -DlocalTransform.tika.url=http://tika:8090/ + -DlocalTransform.misc.url=http://transform-misc:8090/ + + -Dlegacy.transform.service.enabled=true + -Dalfresco-pdf-renderer.url=http://alfresco-pdf-renderer:8090/ + -Djodconverter.url=http://libreoffice:8090/ + -Dimg.url=http://imagemagick:8090/ + -Dtika.url=http://tika:8090/ + -Dtransform.misc.url=http://transform-misc:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + ports: + - 8443:8443 + volumes: + - ./keystores/alfresco:/usr/local/tomcat/alf_data/keystore + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: https + TRUSTSTORE_TYPE: JCEKS + KEYSTORE_TYPE: JCEKS + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8443" + ALFRESCO_SECURE_COMMS: https + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + SOLR_SSL_TRUST_STORE: "/opt/alfresco-search-services/keystore/ssl.repo.client.truststore" + SOLR_SSL_TRUST_STORE_PASSWORD: "kT9X6oe68t" + SOLR_SSL_TRUST_STORE_TYPE: "JCEKS" + SOLR_SSL_KEY_STORE: "/opt/alfresco-search-services/keystore/ssl.repo.client.keystore" + SOLR_SSL_KEY_STORE_PASSWORD: "kT9X6oe68t" + SOLR_SSL_KEY_STORE_TYPE: "JCEKS" + SOLR_SSL_NEED_CLIENT_AUTH: "true" + SOLR_OPTS: " + -Dsolr.ssl.checkPeerName=false + -Dsolr.allow.unsafe.resourceloading=true + " + ports: + - 8083:8983 + volumes: + - ./keystores/solr:/opt/alfresco-search-services/keystore + + + + alfresco-pdf-renderer: + image: alfresco/alfresco-pdf-renderer:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8090:8090 + + imagemagick: + image: alfresco/alfresco-imagemagick:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8091:8090 + + libreoffice: + image: alfresco/alfresco-libreoffice:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8092:8090 + + tika: + image: alfresco/alfresco-tika:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8093:8090 + + transform-misc: + image: alfresco/alfresco-transform-misc:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8094:8090 + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 512m + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: alfresco/alfresco-content-app:${ACA_TAG} + mem_limit: 256m + depends_on: + - alfresco + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app \ No newline at end of file diff --git a/e2e-test/release-testing/mtls/search-services/keystores/alfresco/keystore b/e2e-test/release-testing/mtls/search-services/keystores/alfresco/keystore new file mode 100644 index 0000000000000000000000000000000000000000..546590233f8c9c4587c868e090ff15b7000f1e53 GIT binary patch literal 647 zcmX?i?%X*B1_mY|W&~np29Dg+lEjq6l0=|D_6#vY+cj?)Sc{7ojFaaL^pcAz z3rh0!3X1Z}GE-8E^nz0pb5c|Mld@8iOWg8{yi+R!it>8|)4SnqE=F zAeog|mRJGPkF3qk%y!w~?I8tB3@p(Mys3G~`6;O>0f|M4xy2<6Owmr!3<5wwkiDrX z&iQ#Isd*)Z40Q}lJ`9`%U{#Je=_L$8J|GM9a}x8?^@B@_GV{`{eHhq_fzAU;gVZxu z6qFW$%v!1`Ib7*A3d4I_{Q@`;)LU+Z3m+>QXR71 z2JigQ_?CIc;rAxG92tL7SxzhUYHbRips{dM^3CnlrpKku)}IpZ{>`}0!8-o{)B}gpX=AG-s#I8XkJ*j)JpaJy(y9N8)hw4u(kiI zDtK_=q_*v;mK$bt-mUy(lu%-OXL5Ahe8v|xRtp-Ew^|-_^vJ(nx--o~=lPpji@kf5 zbNzngottp=TR~CKq={35TN(LIx3X<~@A$VzMe|B<#q~MiB@AK#POjmZB^kahrjB_j kAw`)5IjJtL!8j#EcF4H6w-~Rh`NXiK$0+k%ug_V10C~y-=Kufz literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/search-services/keystores/alfresco/keystore-passwords.properties b/e2e-test/release-testing/mtls/search-services/keystores/alfresco/keystore-passwords.properties new file mode 100644 index 000000000..3c45acf29 --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/keystores/alfresco/keystore-passwords.properties @@ -0,0 +1,7 @@ +aliases=metadata +# The password protecting the keystore entries +keystore.password=mp6yc0UD9e +# The password protecting the alias: metadata +metadata.keyData= +metadata.algorithm=DESede +metadata.password=oKIWzVdEdA diff --git a/e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl-keystore-passwords.properties b/e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl-keystore-passwords.properties new file mode 100644 index 000000000..0a7fb3677 --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl-keystore-passwords.properties @@ -0,0 +1,7 @@ +aliases=ssl.alfresco.ca,ssl.repo +# The ssl keystore password +keystore.password=kT9X6oe68t +# The password protecting the ssl repository key +ssl.repo.password=kT9X6oe68t +# The password protecting the ssl Alfresco CA key +ssl.alfresco.ca.password=kT9X6oe68t diff --git a/e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl-truststore-passwords.properties b/e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl-truststore-passwords.properties new file mode 100644 index 000000000..c04a6b10a --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl-truststore-passwords.properties @@ -0,0 +1,6 @@ +aliases=alfresco.ca,ssl.repo.client +# The ssl truststore password +keystore.password=kT9X6oe68t +# The password protecting the ssl Alfresco CA strust certificate +alfresco.ca.password=kT9X6oe68t +ssl.repo.client=kT9X6oe68t diff --git a/e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl.keystore b/e2e-test/release-testing/mtls/search-services/keystores/alfresco/ssl.keystore new file mode 100644 index 0000000000000000000000000000000000000000..c75a81da710dba58b8860e496792b18c8caf4382 GIT binary patch literal 3255 zcmeH}doPY5=o|+aT}SM8Kh1zLy~frP(m)J zh(aNSU3%f008WxfdGcjk1*!3_i+ILKqA$`?%Lp@ z-1!_B98R!Bh+y#{%`Df>&8PI`pH;8sRxeK6Dfe15ls%cgl^2%wL_hplLoA0R{|&bj zTwn6Wi|nZa1>S3{3iDf1Q3Nl=fu?&*G`?o^P3vh+R{0bKBjsw%mr{SSf2+}OOwacL zeulsQ`0$b3cYxa#?OSizn}@GI##+`4T~0eSNz9=%*&K(Pt6FB|SY9Y9*}b`?-H%o> zV$;F!x)pBb8R)NZqG55jOP5+E&W=P1xf(kbqIBUOFc<8LC)91BsoEo`;Xot$p}QFg zj_}I4E!{UQQWwozM8Ce{e4nrOw$Cl(hH4%L2px7-J(6~#U*)`vV7oPpiqcCy>bLie zT^+)l*w{sBt*<$K>PmPwL3=~{g>z+z`7~?XoKs;2mF**Nh`L+uYW}y8OKmjMPs@xwfVkqBj26jNiW9~I{CSE zcMGqHLj1drzVNu0dG-Wa?2t1u?z>q>-$FC=ERni#OhG8h^xnYo)y_{O8f~G0U|S;?V4*`EhYphRW6@ z-ro%hQl{N6Pt-LI1`MS~l}8-heKR;qpI1$+M=fB=#(G`#tYuGQUm&yDXSqB zX#|d!w~yirxO>U}K51_UX($mWG|1e<0S zE~@{VizZ7dlHYzdv1mJ>Of z?WA2KYWBCtIRzB(Dz`5b*SlI>Gz%JmTj@6UYnDOn>+$3FWje5Vj!NO1V!Ab*S0Lh535nLuCB9zM) ze69ouFmQ^X=lEeu@y$e{-K#5Zh2GL(iS=D5Q5XBYnSV@{P~ zZt@B9Kl~l~f6O;nd4Q(Q{;62LKdeFJLw{QZ$NfD&f^27+)Rj(u<;PfEbt(2yYfX`j z=D^nIEQ6)Yk)Lo=&^cz)nLzcflWr}R#;ysoKSWi}eOA*?RSp1do!e=Vrc$h>T99k3yb#hl{Y)@m`C!aZ*8*|9v%WToFR v#>Z)6%w(+m${^RjIQSjr@n0PL89AUNHP_l~adIa5Xe_ioChp=W2IcD@rX+&euy$WME*-o*|~Qm4P)v&(y#YsO*736Vn|ac3r^C z#K^?N$#D9d-?~EyH){=e**LY@JlekVGBR?rG8ohwavN~6F^96S2{XAn!8jZ|OrhR} z!UlpM8Fn5n-^9$6)Vz$;#1un$16hzD7mt`D)By^?`DrEPiAAXjJ|!u7h5`nBAO+k! z?4fztdHLmehSCO-AQ5IBA?MQKlKfl+xK3wB137VCLrViQBXa`_V+&)mC~;n65Z4IG z9e4*e&PNV2Mpg#q#$E=4#!jZjMuu(H0gNUdQN5hSQB2z;|6kj`EZg^AagKtcN!yA3 z(ASZP(yP~0Uf#EEzMbMtzp_bMev54@$+O}Hx%=Jsjc^{t4Hr5Pp$rbK5kOxM9tTKy)fmj1} z1w0@H!Yr%?%#4ix!7(Vy4`i{h0Mkz!asU7m4KvW^!8RGqlh&4gd~kTR_{L_1Y%Za5 zjUP=4r>%aQCw|^_OS0hOb28RlZ)ez^3=#G{%`rFSs(*LTbvcAbj==L7!Y;vBuA)B<20$jMC2D}m$#-FkRFUtA zTfg!2qSx#Pw>4k?XTI+6oONI8x>=OWe5KYfg-@LG`r?-UC|5?axVQfUynB2l>c!qW ztFqp9{P)moR^5T;?kiu;jFn{AaJ-o<-Qt|-a!Ar|VoWz^VoU}XVZh|eWWWF{vp5sl zJQ&-4I59GUk}sQsfiXgemqkrX#lIjmFF4po!96uEwJ5P9HANvfwWut$NWnR^s3bEj zGZ`p`l%pPBUgi9z(j$1H>K%&(T@lMxRM)OBXxt3RQjMz(8dqS?R0|thmNYgFcnWJm zD*Zu4GdyFnE-(-V@l{!P47k`hwAmP0S=pHx4MaeKf-JlS+)bQ0`N@en8TrK}X!!4RW6VK*^I#j3nG`HSkG7tI}Z#kcp(#k{vG?WZh1@lNd4V%0gbE}Udw)&Dx5+c&v4TbzqkH0akp F2>{jLN$LOq literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/search-services/keystores/client/browser.p12 b/e2e-test/release-testing/mtls/search-services/keystores/client/browser.p12 new file mode 100644 index 0000000000000000000000000000000000000000..a58b6a736510e39f2e2fed678d4d4dd9bcd77bba GIT binary patch literal 3033 zcmY+DXE+;-7RM7KwP&o>9<_>uh^kd;OI4^*BQ4TtHAbl|ErQn8L=`cMsx5>!#%slF zwY1b;L3vSIYuw)Z-21-I{cxW1Jip&L=hOK^u&kqWKzaz4H4((D5Mvs1zz#eIBw|@3 z7_h7%zi}W0OE2|*iXO~>rRVyM*?t!ji1oi)Y%D-JB9^Wef~Bj3$b(q^hkqZxzyP+H z^e|{s5~xW)oAWYVr%zX@Kw#+T0UcHhSh~omni?1jC(P9^!+YLvO8yp1HpXVpjvYC= zxm3d0#}G=jxElu2W3vZm6tDSbjlEF==ql`xy62aCr>{iQ4!rl*j>qm*1Zlj^R()S| zVanuz$Z#Z!aMgy99*sJ?Zk$L|j(+~No*z{Fa537JoNCXwwev|D>ot<~Bv!fiX8vqW z^XZG%fIm?jm7zRh9)A@qKu^vEOgp z&DUr0qTw88U}{XCULWO$AaiJ%gP@4*0aF_I>qLZAv^ZJy2Dl9GSLvdPD2M>QrELqz ziVV3BCP?)+%1>_Ix-ky7PMU^(i(JVrR$8+%U)||H8q8O*Gu|!o%wY&}VPbR#K3Hkx z#q@g&I9Y|3D`o(C+>zRi{Fff)YXQ+`#Ox@NqS|q2a z-iWCWqxrt&Iw-vd=Z#+(@b9-loN)24U(MA*>MBhO0hzkStM(JjhE^rTQVH=)FL4?6pR74rkGbw}p)`-(|kOI^IBJ%f(GlQXA zq8tD>fG@xY5D4%C+y(eTB>vHSP%s0}&4*rh#i8nOC|nh$p$dV*G$B|f#NR{bKtwE) z&Tphi2L$|Xs{a_^|78R8?`-tcU35hnu3qGoJ#TS;#Le`uiLd=X*@(oRJCqXI7=)g( z&5gZupb-rgcS15uT;v&Iqklv_dLk9j+O2qs5}8331>(~GQihH2dQG>6vspO2WWSf` zkv6~ql7)JZ6V!XTX6DS;-AW=Qcrh(M9Ru#^CThhv*XZ&b&Da_-3$hE?_XQ$1&S_YN zeZ4|$>Zfs;er@j>tg`NS_U-<*bLr!T4Tz72i1bNvlG3VyHj1mv?UZHC#v~CJ^>%iGXwZb3p`reiJn%s7x^ZS z1jUVw)TFxm2qMMs#@_YZ*Lfx{HBPF>^lw$@c1_|0w{U`G$M3XlL@j50q_nf;rIS8a z+a!AOjsHcxfb*F0^Zgd%Sj_c{xO3yZ-5Z%G@yz&{D!HGjm_nvUA~Ce*ATId#+NAF@ zv^1uN5`3EXZ~Ox6dAME1Evf(7lCdrr?Dl_I6$=Y3eRwk)P$}lBrQA``X^p>g{&h zSPFN6b6>4z-RlE>U%h>)j;9MM^A*&vvZgoFK^JXyn~$(fR(syrW`&ykg`=$xR7xq>m=cuK;}pju@8`(+Pik*_Cm+)~8P&T^f+x77X_LiTw4o zx)kq6HcA{F!U;CxPrx@zD$)~L`^o!&nnj@%+pSTD{9=d9*I8^v zUcINSS(0N1Z6qHTNNGl-@4@rU**a$l64DKty%6z+?G964I8(Bu49#OH_meF14_@ZZ znb0zxg4OdyWoWSNs<$5zG#(`O|>1DIDYd|RvZYSQ4aL@OgS7R9MU`p zaO!$DIv_O`^ELCQhBfZYGdwH*$dneb78Ew5C$YLG=t@0CeR8D>&ULm9a}tC%8?ii)go-)aj&`mB?r7h-lO1mk;PGC(F$_&F4*T6<10Y?=!Na?^@E%<=O*oS z8vBT4?*)zaMG_Oorxr{mlljob`ng{W)Sd=4HSWAPAna~msR1a8UC+MMVV`w}ko2*~ z#ISACV&kg(Zq2}>FNfN<$#_@)iG}}4G ztWbn0H=6>;sL6v?u8&jdLimfB1J*fV=S<>Jv`@JT(OOu4NP5CE{|Yg^uxTy3AHd`C z(1ziC<06X^ui-nm$G14uLCw=2j}z;cEeelQ?~p!&ofxS?fySmH zAv}TXg`;NCp8NgTPL)UCD$(Ko#i)WptGOy~8~(OBVOcpyg5D!c+kh-WW;#nZZXx-d zlo>kcM8~IB5AfRx;Rnn#1 zZ`U@$Zo1pEfY|SA?e=BPk10nPLFnA=m7e8vJuH17argYMx>^6i6_*K_D-9WrhaHbG zL8F^hPN?=*qV59-{|MI?xoMQDYWL%OhZo07f)W$3Y_J3EZB=hd!Y295$BNN>Sg2Ml zLmyS%wVS8Qrxqx!iwtPV1PsC~(ybfK zP-{yva=9qXaG;B2vDB(|59TxQF0Z@RkAt;XJzV(Q@FW(WBj9>3QB~J8>l&;YzI!6v zO0&#vnKFG2%dX@M9X7$f`@p!y7^0YXRJ3GjNngDAQ?{1+oThV>bduzQ8vjDlYa#|w z{oN4r0dYK3HiL22oJ;4-lHyep`9UhrGRibDK=|<1N z<&N&??7HP7rj_D@DsX3OErSw|A=8~PfS-HdOJ(&(5?i4P_coVj P9}%1{uhG#1V~GC(R->oB literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl-keystore-passwords.properties b/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl-keystore-passwords.properties new file mode 100644 index 000000000..c9cb4d0d2 --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl-keystore-passwords.properties @@ -0,0 +1,7 @@ +aliases=ssl.alfresco.ca,ssl.repo.client +# The ssl keystore password +keystore.password=kT9X6oe68t +# The password protecting the ssl repository key +ssl.repo.client.password=kT9X6oe68t +# The password protecting the ssl Alfresco CA key +ssl.alfresco.ca.password=kT9X6oe68t diff --git a/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl-truststore-passwords.properties b/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl-truststore-passwords.properties new file mode 100644 index 000000000..b3b70ab01 --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl-truststore-passwords.properties @@ -0,0 +1,7 @@ +aliases=alfresco.ca,ssl.repo,ssl.repo.client +# The ssl truststore password +keystore.password=kT9X6oe68t +# The password protecting the ssl Alfresco CA strust certificate +alfresco.ca.password=kT9X6oe68t +ssl.repo.password=kT9X6oe68t +ssl.repo.client.password=kT9X6oe68t diff --git a/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl.repo.client.keystore b/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl.repo.client.keystore new file mode 100644 index 0000000000000000000000000000000000000000..b0dc4ef08f20f8e319befa4f5c61f3599c135152 GIT binary patch literal 3265 zcmX?i?%X*B1_mZL=1$B>D@rX+&euy$WME*-o*|~4%)lCpt}rciG~ zVFN*s3_A~(Z(?RjYFfhHvk{{Irtt#G+IMpOO?kLjeOmkOFQV z_RzfSy!`S!Lums^kO(u6kaKBqNq(*ZT&J_6ft)z6p{0SDk-33|v4yc&lsK<3h-(Dp z4!i>!=Oc$1BP#=QV=se2V<%H%Bf~c907es!s9w(ED5hD6m0FYjA7-%jzSU)dzBzY`yP;d)~*FL}r8IN1|DK6@?nyqiD1EM5Ek{%Of4 zDN_v7_lqn}e#Xkhkrnau?d6%z1LX|grA&U=WmBQFhf9ZtqovGKsPtX->y=w>xtzZG zkcpX*fpKwyK^!cW=6*U;24zU2eMdLfa#|VIRJo(h8gJdV4IBQNoz|#J~+Hud}FghHkZ)3 z#*Ze2(^kLD6F={|C0X$CIT`D&w=--{h6wwf=9rsu)xSIF@lNgMq0`>@N;cT5wU?)C zYCkFzw{U^yLiWEqYyuMRTYf*fG+?LQ|78y~(^F0uCe7Gz=;y3uaue6<*~HjRN=bf` zeMot)(HpKSyUs-b^8q6Re{pe+UQucRFc0KprskDE@`2_)Uh*%(Bm?*~;bK%GGVYXOm`s z7YaUeVe)$}OVO?KL!Xvx+W&sNhSA(pwceLs9+ToXobok3N&mds+_@jNd_TOrVV6VT zdFji?Y7V!44hfKn(KA}VXr*g(WPa#uj*Im@k{@5@wcXFU{9R2xKqDq#!u~TB@u^&w z*4|A>@6Yp|?cZ#_OR&tlxh~~ymwhZl?A|$Fu18*b(a`OD%c*OF#arWjW%W;INlsPC zw7IkYaQQ*0SNED0M=#S;I3&A2B41`JYmMH<>7QlW?z#Vbw>n9`r!}v0A@jot(#yWR zShvjZfJ8=*-0DWP>C)RmbndB?N*q+lxXX}WxvcP?NQ2(AYr@rf+m~L^O$nZBskwyB zf4#tyck@b)H{NM4n>;0=>&1FChPQW{AJ$ofZGE)b_Xkt{MD>3iX3_WGa_;%GssC`? zcFl-wvEt3o7PEgj+;D+?;yi!ZnJ%Sbu0JxR1=j5?KE*S^r$6Jvd$uP_`{sZ2(ddp% z6YZb!PS?O8vF6t52cHy+vi$bET)9x(@5#K(rT>rJov~zZU~z6{IPcQ-;yN~M-~Fpw zmxpmgO$b-^-4wfR-Qw*&-XB~-i-HWQPHZTS>WH%4dZtBmoBc)~{r($G1%Y!!IhgJg zRfi-<{BK@7mot7?sb#i&#y9TxqI1KE~rpqdGfVa8~4n5?){m=?oz;>Wn~*b z{f-Sdc*k)nyUgYcw`k*}OPq!2Wt-NSgNt)msm%;5v6*iGu_L6^W)fgT%XtG|8e$gL zMxf%_1Xf&E!m1D~^$8hOhn9f`r0P&auR4N&*}gclB)_Oq!5N(S4e%Azt1le7%2E8X z>xO})zpma3%P`?vnZMQO08iEpE&3B#V!3&u8d}JZ~q5)_xMWGi@kSNWxehA z@1fbOx&zPMSH7GXE6K3ocr#nN#W~aEkb=62G2NhvF&SLp0t;Iv0|sCX%bC#T!Pxf0 ziIEXh*s?ho7$byuS=7W-{0ma^f`fe&+*9*XixNvxQxt+zi^@`q6r59wN;1e>|sjhi7AK;vqI#ueDBfQ5}MOBx#oJcTtOwN*e3 z33xTcy1+mf#8+kEG2mk30G8{ltnAE;1|lFqK^9&E?k3Kh{N%)(jQrvfw0r}qu`;f) zwA_DJ&ETVN>X6!y@!8eset5m={+if#%9UTw=jy0Tvu$Qj=UM-bW68-$MxSPXH(LI1 z{9ja4(np^KNnFsxgabe5dpRw}vR2`Wm0mgp< zIM{vWx*uby;@kV?V&2=8_EVOhcqevivFe;zqm45fv>x&0`O(JNKsC;;JZjwkwWCsp R^IlGP`#I&4U%Td=1_1Dfk68c! literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl.repo.client.truststore b/e2e-test/release-testing/mtls/search-services/keystores/solr/ssl.repo.client.truststore new file mode 100644 index 0000000000000000000000000000000000000000..2feb2d8270a13046c97c5fade08f3b3eaad25749 GIT binary patch literal 2850 zcmX?i?%X*B1_mY|W(Lz7#l<;#MX3e(3=E9fGsM(87+53pObsl7@>dO-m@fjc)dFTF zMkXdE0R{tJHcqWJkGAi;jEvl@3eG0uz?^*hMkAY zH!(9MH7_GIF~v~cKo%s(#UtjJlU9^koSd%^oS#-wo>-Ks;8T*KXDDF62U5Vz!ycNK zotIypXDDqT2@+xE5ppgqF3HbTfa`R2G>{YLHMBG^Gcq@@Ft#u@ixTHG0&z{CT!SK* zo3J>L47Vs7C_>yKh3=LhUsBt#LURRxVVWi-Jppv860)8!YoV%48XYJOlb39 zZ2RHF$jHLN%*5tkV2lvrWlCa8J!kElMm&O;HF=Eh>+I2lf#^ILZ);btv3Ny_pwGX4jJ4C?{| zVUQM;Zk+06mv!J=&kxG=iO?*lmz)U6{AzpPnV;!_K@-y* zAa;dhex%SC{AGYKs0=WIl>q}@NZ~6Gwpj--ns`L@au!E1ZIk?eZU3@t-+#q93XUdi zC;CHQMB_-@5sBiZ}hrCTabh_}~lI8-sbtJ7&kpp6Kz}YoX`e{PAV!+VA&I zOFl`NVwk>PWO4E{RxXaLh^KEa&wL&zXZS8<^2;up3Z*?KbjOyTm3dq{JiUyWWmShWURa1&agchBJ6vbV{Xb-|L&m2JGGyO zPJ81k*#mp#->PdQM6Jt9mCHYPEA?3YBZ@8}PIv0V+2cX(dFF7YOHLnDc4>Zc)`G6Ui2bgaFu_LS! zWJL4JfR|JRE5S+FDD?tTkaB$+S3s+w_bd{s{W!V$%Q}cp!qeRbF z&E?-2GX0$N4Y?ju^_zN^4=hzrH>vuzdc(TwYBj6+x6gffZvDp7i(a!I+}3>kpZU7O zbJl&W>t<0h^Oah|6h3jz>x*0Zqg)xy;@*^F)BW&z)%`WG@02UQp3l`$nP%I}pw6@Y9mkTBlZ-yi{%*AV;l^1_*79Bd zW;d^Nd45?YHT$T*x)aalggR8G`ZTxRV=@o=7vsW~yFX*)>8Uz0O9G7l1aPqX%ymD; uQpLCT&BeU8EA6K&Kk-iN)?(E;vvh9q&lF|Oip`nJIy=km^B=8aOZ5TmUxfGo literal 0 HcmV?d00001 diff --git a/e2e-test/release-testing/mtls/search-services/search/Dockerfile b/e2e-test/release-testing/mtls/search-services/search/Dockerfile new file mode 100755 index 000000000..c0bdf4949 --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/search/Dockerfile @@ -0,0 +1,155 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/mtls/search-services/share/Dockerfile b/e2e-test/release-testing/mtls/search-services/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/mtls/search-services/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/mtls/search-services/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/mtls/search-services/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/mtls/search-services/share/modules/amps/empty b/e2e-test/release-testing/mtls/search-services/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/mtls/search-services/share/modules/jars/empty b/e2e-test/release-testing/mtls/search-services/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/README.md b/e2e-test/release-testing/search-services-backup/README.md new file mode 100644 index 000000000..f2366ba00 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/README.md @@ -0,0 +1,22 @@ +# backup + +Backup folder inside the Docker Container is named: +``` +/opt/alfresco-search-services/backup +``` + +This folder is mapped as volume in local path: +``` +./data/backup +``` + +Alfresco Admin Web Console settings for *Search Service > Backup Settings*: + +* Backup Location: `/opt/alfresco-search-services/backup` +* Backup Cron Expression: `0 0/2 * * * ?` + +URL to perform a backup: +http://127.0.0.1:8083/solr/alfresco/replication?command=backup&location=/opt/alfresco-search-services/backup/&numberToKeep=2&wt=xml + +If using Sharding or Replication, additionally: +http://127.0.0.1:8084/solr/alfresco/replication?command=backup&location=/opt/alfresco-search-services/backup/&numberToKeep=2&wt=xml diff --git a/e2e-test/release-testing/search-services-backup/master-master/.env b/e2e-test/release-testing/search-services-backup/master-master/.env new file mode 100755 index 000000000..af5ab5ebb --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-master/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=latest +ZEPPELIN_TAG=latest +ACA_TAG=master-latest \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/master-master/alfresco/Dockerfile b/e2e-test/release-testing/search-services-backup/master-master/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-master/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-backup/master-master/alfresco/model/empty b/e2e-test/release-testing/search-services-backup/master-master/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-master/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-backup/master-master/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-master/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-backup/master-master/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-master/config/nginx.conf b/e2e-test/release-testing/search-services-backup/master-master/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-master/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-backup/master-master/config/nginx.htpasswd b/e2e-test/release-testing/search-services-backup/master-master/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-master/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-backup/master-master/docker-compose.yml b/e2e-test/release-testing/search-services-backup/master-master/docker-compose.yml new file mode 100755 index 000000000..b5a2f3d43 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-master/docker-compose.yml @@ -0,0 +1,215 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6secondary + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + volumes: + - ./data/alf-repo-data:/usr/local/tomcat/alf_data + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_MASTER: "true" + ENABLE_SLAVE: "false" + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + volumes: + - ./data/solr-1-data:/opt/alfresco-search-services/data + - ./data/solr-1-contentstore:/opt/alfresco-search-services/contenstore + - ./data/backup:/opt/alfresco-search-services/backup + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_MASTER: "true" + ENABLE_SLAVE: "false" + MASTER_HOST: solr6 + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + volumes: + - ./data/solr-2-data:/opt/alfresco-search-services/data + - ./data/solr-2-contentstore:/opt/alfresco-search-services/contenstore + - ./data/backup:/opt/alfresco-search-services/backup + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + volumes: + - ./data/postgres-data:/var/lib/postgresql/data + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/search-services-backup/master-master/search/Dockerfile b/e2e-test/release-testing/search-services-backup/master-master/search/Dockerfile new file mode 100755 index 000000000..799107176 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-master/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-backup/master-master/share/Dockerfile b/e2e-test/release-testing/search-services-backup/master-master/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-master/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/master-master/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-backup/master-master/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-master/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/master-master/share/modules/amps/empty b/e2e-test/release-testing/search-services-backup/master-master/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-master/share/modules/jars/empty b/e2e-test/release-testing/search-services-backup/master-master/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-slave/.env b/e2e-test/release-testing/search-services-backup/master-slave/.env new file mode 100755 index 000000000..be3f573f6 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-slave/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services-backup/master-slave/alfresco/Dockerfile b/e2e-test/release-testing/search-services-backup/master-slave/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-slave/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-backup/master-slave/alfresco/model/empty b/e2e-test/release-testing/search-services-backup/master-slave/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-slave/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-backup/master-slave/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-slave/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-backup/master-slave/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-slave/config/nginx.conf b/e2e-test/release-testing/search-services-backup/master-slave/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-slave/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-backup/master-slave/config/nginx.htpasswd b/e2e-test/release-testing/search-services-backup/master-slave/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-slave/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-backup/master-slave/docker-compose.yml b/e2e-test/release-testing/search-services-backup/master-slave/docker-compose.yml new file mode 100755 index 000000000..5d3583d45 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-slave/docker-compose.yml @@ -0,0 +1,214 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6secondary + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + volumes: + - ./data/alf-repo-data:/usr/local/tomcat/alf_data + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_MASTER: "true" + ENABLE_SLAVE: "false" + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + volumes: + - ./data/solr-1-data:/opt/alfresco-search-services/data + - ./data/solr-1-contentstore:/opt/alfresco-search-services/contenstore + - ./data/backup:/opt/alfresco-search-services/backup + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_MASTER: "false" + ENABLE_SLAVE: "true" + MASTER_HOST: solr6 + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + volumes: + - ./data/solr-2-data:/opt/alfresco-search-services/data + - ./data/solr-2-contentstore:/opt/alfresco-search-services/contenstore + - ./data/backup:/opt/alfresco-search-services/backup + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + volumes: + - ./data/postgres-data:/var/lib/postgresql/data + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/search-services-backup/master-slave/search/Dockerfile b/e2e-test/release-testing/search-services-backup/master-slave/search/Dockerfile new file mode 100755 index 000000000..799107176 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-slave/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-backup/master-slave/share/Dockerfile b/e2e-test/release-testing/search-services-backup/master-slave/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-slave/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/master-slave/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-backup/master-slave/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/master-slave/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/master-slave/share/modules/amps/empty b/e2e-test/release-testing/search-services-backup/master-slave/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/master-slave/share/modules/jars/empty b/e2e-test/release-testing/search-services-backup/master-slave/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/normal/.env b/e2e-test/release-testing/search-services-backup/normal/.env new file mode 100755 index 000000000..be3f573f6 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/normal/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services-backup/normal/alfresco/Dockerfile b/e2e-test/release-testing/search-services-backup/normal/alfresco/Dockerfile new file mode 100755 index 000000000..013ec3714 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/normal/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-backup/normal/alfresco/model/empty b/e2e-test/release-testing/search-services-backup/normal/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/normal/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-backup/normal/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/normal/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-backup/normal/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/normal/config/nginx.conf b/e2e-test/release-testing/search-services-backup/normal/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/normal/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-backup/normal/config/nginx.htpasswd b/e2e-test/release-testing/search-services-backup/normal/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/normal/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-backup/normal/docker-compose.yml b/e2e-test/release-testing/search-services-backup/normal/docker-compose.yml new file mode 100755 index 000000000..0296820be --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/normal/docker-compose.yml @@ -0,0 +1,182 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + -Dshare.host=localhost + -Dalfresco.port=8080 + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dlocal.transform.service.enabled=true + -DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/ + -DlocalTransform.imagemagick.url=http://imagemagick:8090/ + -DlocalTransform.libreoffice.url=http://libreoffice:8090/ + -DlocalTransform.tika.url=http://tika:8090/ + -DlocalTransform.misc.url=http://transform-misc:8090/ + + -Dlegacy.transform.service.enabled=true + -Dalfresco-pdf-renderer.url=http://alfresco-pdf-renderer:8090/ + -Djodconverter.url=http://libreoffice:8090/ + -Dimg.url=http://imagemagick:8090/ + -Dtika.url=http://tika:8090/ + -Dtransform.misc.url=http://transform-misc:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + volumes: + - ./data/alf-repo-data:/usr/local/tomcat/alf_data + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + volumes: + - ./data/solr-data:/opt/alfresco-search-services/data + - ./data/solr-contentstore:/opt/alfresco-search-services/contenstore + - ./data/backup:/opt/alfresco-search-services/backup + + alfresco-pdf-renderer: + image: alfresco/alfresco-pdf-renderer:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8090:8090 + + imagemagick: + image: alfresco/alfresco-imagemagick:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8091:8090 + + libreoffice: + image: alfresco/alfresco-libreoffice:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8092:8090 + + tika: + image: alfresco/alfresco-tika:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8093:8090 + + transform-misc: + image: alfresco/alfresco-transform-misc:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8094:8090 + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + volumes: + - ./data/postgres-data:/var/lib/postgresql/data + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 512m + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: alfresco/alfresco-content-app:${ACA_TAG} + mem_limit: 256m + depends_on: + - alfresco + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app diff --git a/e2e-test/release-testing/search-services-backup/normal/search/Dockerfile b/e2e-test/release-testing/search-services-backup/normal/search/Dockerfile new file mode 100755 index 000000000..c0bdf4949 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/normal/search/Dockerfile @@ -0,0 +1,155 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-backup/normal/share/Dockerfile b/e2e-test/release-testing/search-services-backup/normal/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/normal/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/normal/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-backup/normal/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/normal/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/normal/share/modules/amps/empty b/e2e-test/release-testing/search-services-backup/normal/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/normal/share/modules/jars/empty b/e2e-test/release-testing/search-services-backup/normal/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/sharding/.env b/e2e-test/release-testing/search-services-backup/sharding/.env new file mode 100755 index 000000000..153e09044 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.2 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services-backup/sharding/alfresco/Dockerfile b/e2e-test/release-testing/search-services-backup/sharding/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-backup/sharding/alfresco/model/sharding-content-model-context.xml b/e2e-test/release-testing/search-services-backup/sharding/alfresco/model/sharding-content-model-context.xml new file mode 100644 index 000000000..34fdf638f --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/alfresco/model/sharding-content-model-context.xml @@ -0,0 +1,15 @@ + + + + + + + alfresco/extension/sharding-content-model.xml + + + + + diff --git a/e2e-test/release-testing/search-services-backup/sharding/alfresco/model/sharding-content-model.xml b/e2e-test/release-testing/search-services-backup/sharding/alfresco/model/sharding-content-model.xml new file mode 100644 index 000000000..159d02f12 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/alfresco/model/sharding-content-model.xml @@ -0,0 +1,27 @@ + + + + Explicit Routing for Sharding Sample Model + + + + + + + + + + + + Sharding + + + + Shard Id + d:text + + + + + + diff --git a/e2e-test/release-testing/search-services-backup/sharding/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-backup/sharding/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/sharding/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-backup/sharding/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/sharding/config/nginx.conf b/e2e-test/release-testing/search-services-backup/sharding/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-backup/sharding/config/nginx.htpasswd b/e2e-test/release-testing/search-services-backup/sharding/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-backup/sharding/docker-compose.yml b/e2e-test/release-testing/search-services-backup/sharding/docker-compose.yml new file mode 100755 index 000000000..16156fc81 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/docker-compose.yml @@ -0,0 +1,219 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dsolr.useDynamicShardRegistration=true + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + volumes: + - ./data/alf-repo-data:/usr/local/tomcat/alf_data + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "0" + SHARDING_METHOD: DB_ID + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + volumes: + - ./data/solr-1-data:/opt/alfresco-search-services/data + - ./data/solr-1-contentstore:/opt/alfresco-search-services/contenstore + - ./data/backup:/opt/alfresco-search-services/backup + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_SHARDING: "true" + NUM_SHARDS: "2" + SHARD_ID: "1" + SHARDING_METHOD: DB_ID + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + volumes: + - ./data/solr-2-data:/opt/alfresco-search-services/data + - ./data/solr-2-contentstore:/opt/alfresco-search-services/contenstore + - ./data/backup:/opt/alfresco-search-services/backup + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + volumes: + - ./data/postgres-data:/var/lib/postgresql/data + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/search-services-backup/sharding/search/Dockerfile b/e2e-test/release-testing/search-services-backup/sharding/search/Dockerfile new file mode 100755 index 000000000..b5c9a64ee --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-insight-engine\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-backup/sharding/share/Dockerfile b/e2e-test/release-testing/search-services-backup/sharding/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/sharding/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-backup/sharding/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..89a785108 --- /dev/null +++ b/e2e-test/release-testing/search-services-backup/sharding/share/model/share-config-custom-dev.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/e2e-test/release-testing/search-services-backup/sharding/share/modules/amps/empty b/e2e-test/release-testing/search-services-backup/sharding/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-backup/sharding/share/modules/jars/empty b/e2e-test/release-testing/search-services-backup/sharding/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-disable-tracking/.env b/e2e-test/release-testing/search-services-disable-tracking/.env new file mode 100755 index 000000000..be3f573f6 --- /dev/null +++ b/e2e-test/release-testing/search-services-disable-tracking/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services-disable-tracking/alfresco/Dockerfile b/e2e-test/release-testing/search-services-disable-tracking/alfresco/Dockerfile new file mode 100755 index 000000000..433635ea6 --- /dev/null +++ b/e2e-test/release-testing/search-services-disable-tracking/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository-community:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-disable-tracking/alfresco/model/empty b/e2e-test/release-testing/search-services-disable-tracking/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-disable-tracking/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-disable-tracking/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-disable-tracking/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-disable-tracking/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-disable-tracking/config/nginx.conf b/e2e-test/release-testing/search-services-disable-tracking/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-disable-tracking/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-disable-tracking/config/nginx.htpasswd b/e2e-test/release-testing/search-services-disable-tracking/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-disable-tracking/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-disable-tracking/docker-compose.yml b/e2e-test/release-testing/search-services-disable-tracking/docker-compose.yml new file mode 100755 index 000000000..a68bea936 --- /dev/null +++ b/e2e-test/release-testing/search-services-disable-tracking/docker-compose.yml @@ -0,0 +1,177 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_CE_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + -Dshare.host=localhost + -Dalfresco.port=8080 + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dlocal.transform.service.enabled=true + -DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/ + -DlocalTransform.imagemagick.url=http://imagemagick:8090/ + -DlocalTransform.libreoffice.url=http://libreoffice:8090/ + -DlocalTransform.tika.url=http://tika:8090/ + -DlocalTransform.misc.url=http://transform-misc:8090/ + + -Dlegacy.transform.service.enabled=true + -Dalfresco-pdf-renderer.url=http://alfresco-pdf-renderer:8090/ + -Djodconverter.url=http://libreoffice:8090/ + -Dimg.url=http://imagemagick:8090/ + -Dtika.url=http://tika:8090/ + -Dtransform.misc.url=http://transform-misc:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + + alfresco-pdf-renderer: + image: alfresco/alfresco-pdf-renderer:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8090:8090 + + imagemagick: + image: alfresco/alfresco-imagemagick:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8091:8090 + + libreoffice: + image: alfresco/alfresco-libreoffice:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8092:8090 + + tika: + image: alfresco/alfresco-tika:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8093:8090 + + transform-misc: + image: alfresco/alfresco-transform-misc:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8094:8090 + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 512m + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: alfresco/alfresco-content-app:${ACA_TAG} + mem_limit: 256m + depends_on: + - alfresco + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app diff --git a/e2e-test/release-testing/search-services-disable-tracking/search/Dockerfile b/e2e-test/release-testing/search-services-disable-tracking/search/Dockerfile new file mode 100755 index 000000000..cd9982712 --- /dev/null +++ b/e2e-test/release-testing/search-services-disable-tracking/search/Dockerfile @@ -0,0 +1,167 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] + +# Disable Alfresco Tracking +RUN sed -i '/^bash.*/i echo "\nenable.alfresco.tracking=false\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ +${DIST_DIR}/solr/bin/search_config_setup.sh; diff --git a/e2e-test/release-testing/search-services-disable-tracking/share/Dockerfile b/e2e-test/release-testing/search-services-disable-tracking/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-disable-tracking/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-disable-tracking/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-disable-tracking/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-disable-tracking/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-disable-tracking/share/modules/amps/empty b/e2e-test/release-testing/search-services-disable-tracking/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-disable-tracking/share/modules/jars/empty b/e2e-test/release-testing/search-services-disable-tracking/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-master/.env b/e2e-test/release-testing/search-services-replication/master-master/.env new file mode 100755 index 000000000..af5ab5ebb --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-master/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=latest +ZEPPELIN_TAG=latest +ACA_TAG=master-latest \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-replication/master-master/alfresco/Dockerfile b/e2e-test/release-testing/search-services-replication/master-master/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-master/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-replication/master-master/alfresco/model/empty b/e2e-test/release-testing/search-services-replication/master-master/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-master/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-replication/master-master/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-master/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-replication/master-master/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-master/config/nginx.conf b/e2e-test/release-testing/search-services-replication/master-master/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-master/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-replication/master-master/config/nginx.htpasswd b/e2e-test/release-testing/search-services-replication/master-master/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-master/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-replication/master-master/docker-compose.yml b/e2e-test/release-testing/search-services-replication/master-master/docker-compose.yml new file mode 100755 index 000000000..722c06239 --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-master/docker-compose.yml @@ -0,0 +1,205 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6secondary + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_MASTER: "true" + ENABLE_SLAVE: "false" + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_MASTER: "true" + ENABLE_SLAVE: "false" + MASTER_HOST: solr6 + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/search-services-replication/master-master/search/Dockerfile b/e2e-test/release-testing/search-services-replication/master-master/search/Dockerfile new file mode 100755 index 000000000..799107176 --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-master/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-replication/master-master/share/Dockerfile b/e2e-test/release-testing/search-services-replication/master-master/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-master/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-replication/master-master/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-replication/master-master/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-master/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-replication/master-master/share/modules/amps/empty b/e2e-test/release-testing/search-services-replication/master-master/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-master/share/modules/jars/empty b/e2e-test/release-testing/search-services-replication/master-master/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-slave/.env b/e2e-test/release-testing/search-services-replication/master-slave/.env new file mode 100755 index 000000000..be3f573f6 --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-slave/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services-replication/master-slave/alfresco/Dockerfile b/e2e-test/release-testing/search-services-replication/master-slave/alfresco/Dockerfile new file mode 100755 index 000000000..e99b5a92e --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-slave/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-replication/master-slave/alfresco/model/empty b/e2e-test/release-testing/search-services-replication/master-slave/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-slave/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-replication/master-slave/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-slave/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-replication/master-slave/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-slave/config/nginx.conf b/e2e-test/release-testing/search-services-replication/master-slave/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-slave/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-replication/master-slave/config/nginx.htpasswd b/e2e-test/release-testing/search-services-replication/master-slave/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-slave/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-replication/master-slave/docker-compose.yml b/e2e-test/release-testing/search-services-replication/master-slave/docker-compose.yml new file mode 100755 index 000000000..01321e7f8 --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-slave/docker-compose.yml @@ -0,0 +1,205 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS: " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6secondary + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dtransform.service.enabled=true + -Dtransform.service.url=http://transform-router:8095 + -Dsfs.url=http://shared-file-store:8099/ + -DlocalTransform.core-aio.url=http://transform-core-aio:8090/ + -Dalfresco-pdf-renderer.url=http://transform-core-aio:8090/ + -Djodconverter.url=http://transform-core-aio:8090/ + -Dimg.url=http://transform-core-aio:8090/ + -Dtika.url=http://transform-core-aio:8090/ + -Dtransform.misc.url=http://transform-core-aio:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_MASTER: "true" + ENABLE_SLAVE: "false" + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + solr6secondary: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6secondary + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + ENABLE_MASTER: "false" + ENABLE_SLAVE: "true" + MASTER_HOST: solr6 + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6secondary" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8084:8983 + + + + + transform-router: + mem_limit: 512m + image: quay.io/alfresco/alfresco-transform-router:${TRANSFORM_ROUTER_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ACTIVEMQ_URL: "nio://activemq:61616" + CORE_AIO_URL : "http://transform-core-aio:8090" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8095:8095 + links: + - activemq + + transform-core-aio: + image: alfresco/alfresco-transform-core-aio:${TRANSFORM_CORE_AIO_TAG} + mem_limit: 1536m + environment: + JAVA_OPTS: " -Xms256m -Xmx1536m" + ACTIVEMQ_URL: "nio://activemq:61616" + FILE_STORE_URL: "http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file" + ports: + - 8090:8090 + links: + - activemq + + shared-file-store: + image: alfresco/alfresco-shared-file-store:${SHARED_FILE_STORE_TAG} + mem_limit: 512m + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + scheduler.content.age.millis: 86400000 + scheduler.cleanup.interval: 86400000 + ports: + - 8099:8099 + volumes: + - shared-file-store-volume:/tmp/Alfresco/sfs + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 1g + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: quay.io/alfresco/alfresco-digital-workspace:${DIGITAL_WORKSPACE_TAG} + mem_limit: 128m + environment: + BASEPATH: ./ + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app + +volumes: + shared-file-store-volume: + driver_opts: + type: tmpfs + device: tmpfs diff --git a/e2e-test/release-testing/search-services-replication/master-slave/search/Dockerfile b/e2e-test/release-testing/search-services-replication/master-slave/search/Dockerfile new file mode 100755 index 000000000..799107176 --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-slave/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-replication/master-slave/share/Dockerfile b/e2e-test/release-testing/search-services-replication/master-slave/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-slave/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-replication/master-slave/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-replication/master-slave/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-replication/master-slave/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-replication/master-slave/share/modules/amps/empty b/e2e-test/release-testing/search-services-replication/master-slave/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-replication/master-slave/share/modules/jars/empty b/e2e-test/release-testing/search-services-replication/master-slave/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/.env b/e2e-test/release-testing/search-services-upgrade/current-ie/.env new file mode 100755 index 000000000..be3f573f6 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current-ie/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/Dockerfile b/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/Dockerfile new file mode 100755 index 000000000..433635ea6 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository-community:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/model/empty b/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-upgrade/current-ie/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/config/nginx.conf b/e2e-test/release-testing/search-services-upgrade/current-ie/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current-ie/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/config/nginx.htpasswd b/e2e-test/release-testing/search-services-upgrade/current-ie/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current-ie/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/docker-compose.yml b/e2e-test/release-testing/search-services-upgrade/current-ie/docker-compose.yml new file mode 100755 index 000000000..7c98a9ca8 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current-ie/docker-compose.yml @@ -0,0 +1,181 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_CE_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + -Dshare.host=localhost + -Dalfresco.port=8080 + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dlocal.transform.service.enabled=true + -DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/ + -DlocalTransform.imagemagick.url=http://imagemagick:8090/ + -DlocalTransform.libreoffice.url=http://libreoffice:8090/ + -DlocalTransform.tika.url=http://tika:8090/ + -DlocalTransform.misc.url=http://transform-misc:8090/ + + -Dlegacy.transform.service.enabled=true + -Dalfresco-pdf-renderer.url=http://alfresco-pdf-renderer:8090/ + -Djodconverter.url=http://libreoffice:8090/ + -Dimg.url=http://imagemagick:8090/ + -Dtika.url=http://tika:8090/ + -Dtransform.misc.url=http://transform-misc:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + volumes: + - ../data/alf-repo-data:/usr/local/tomcat/alf_data + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + volumes: + - ../data/solr-data:/opt/alfresco-insight-engine/data + - ../data/solr-contentstore:/opt/alfresco-insight-engine/contenstore + + alfresco-pdf-renderer: + image: alfresco/alfresco-pdf-renderer:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8090:8090 + + imagemagick: + image: alfresco/alfresco-imagemagick:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8091:8090 + + libreoffice: + image: alfresco/alfresco-libreoffice:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8092:8090 + + tika: + image: alfresco/alfresco-tika:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8093:8090 + + transform-misc: + image: alfresco/alfresco-transform-misc:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8094:8090 + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + volumes: + - ../data/postgres-data:/var/lib/postgresql/data + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 512m + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: alfresco/alfresco-content-app:${ACA_TAG} + mem_limit: 256m + depends_on: + - alfresco + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/search/Dockerfile b/e2e-test/release-testing/search-services-upgrade/current-ie/search/Dockerfile new file mode 100755 index 000000000..cc0fffd9b --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current-ie/search/Dockerfile @@ -0,0 +1,155 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/insight-engine:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/share/Dockerfile b/e2e-test/release-testing/search-services-upgrade/current-ie/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current-ie/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-upgrade/current-ie/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current-ie/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/share/modules/amps/empty b/e2e-test/release-testing/search-services-upgrade/current-ie/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current-ie/share/modules/jars/empty b/e2e-test/release-testing/search-services-upgrade/current-ie/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current/.env b/e2e-test/release-testing/search-services-upgrade/current/.env new file mode 100755 index 000000000..be3f573f6 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services-upgrade/current/alfresco/Dockerfile b/e2e-test/release-testing/search-services-upgrade/current/alfresco/Dockerfile new file mode 100755 index 000000000..433635ea6 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository-community:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-upgrade/current/alfresco/model/empty b/e2e-test/release-testing/search-services-upgrade/current/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-upgrade/current/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-upgrade/current/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current/config/nginx.conf b/e2e-test/release-testing/search-services-upgrade/current/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-upgrade/current/config/nginx.htpasswd b/e2e-test/release-testing/search-services-upgrade/current/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-upgrade/current/docker-compose.yml b/e2e-test/release-testing/search-services-upgrade/current/docker-compose.yml new file mode 100755 index 000000000..0e9586906 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current/docker-compose.yml @@ -0,0 +1,181 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_CE_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + -Dshare.host=localhost + -Dalfresco.port=8080 + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dlocal.transform.service.enabled=true + -DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/ + -DlocalTransform.imagemagick.url=http://imagemagick:8090/ + -DlocalTransform.libreoffice.url=http://libreoffice:8090/ + -DlocalTransform.tika.url=http://tika:8090/ + -DlocalTransform.misc.url=http://transform-misc:8090/ + + -Dlegacy.transform.service.enabled=true + -Dalfresco-pdf-renderer.url=http://alfresco-pdf-renderer:8090/ + -Djodconverter.url=http://libreoffice:8090/ + -Dimg.url=http://imagemagick:8090/ + -Dtika.url=http://tika:8090/ + -Dtransform.misc.url=http://transform-misc:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + volumes: + - ../data/alf-repo-data:/usr/local/tomcat/alf_data + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + volumes: + - ../data/solr-data:/opt/alfresco-search-services/data + - ../data/solr-contentstore:/opt/alfresco-search-services/contenstore + + alfresco-pdf-renderer: + image: alfresco/alfresco-pdf-renderer:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8090:8090 + + imagemagick: + image: alfresco/alfresco-imagemagick:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8091:8090 + + libreoffice: + image: alfresco/alfresco-libreoffice:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8092:8090 + + tika: + image: alfresco/alfresco-tika:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8093:8090 + + transform-misc: + image: alfresco/alfresco-transform-misc:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8094:8090 + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + volumes: + - ../data/postgres-data:/var/lib/postgresql/data + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 512m + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: alfresco/alfresco-content-app:${ACA_TAG} + mem_limit: 256m + depends_on: + - alfresco + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app diff --git a/e2e-test/release-testing/search-services-upgrade/current/search/Dockerfile b/e2e-test/release-testing/search-services-upgrade/current/search/Dockerfile new file mode 100755 index 000000000..c0bdf4949 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current/search/Dockerfile @@ -0,0 +1,155 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-upgrade/current/share/Dockerfile b/e2e-test/release-testing/search-services-upgrade/current/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-upgrade/current/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-upgrade/current/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/current/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-upgrade/current/share/modules/amps/empty b/e2e-test/release-testing/search-services-upgrade/current/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/current/share/modules/jars/empty b/e2e-test/release-testing/search-services-upgrade/current/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/previous/.env b/e2e-test/release-testing/search-services-upgrade/previous/.env new file mode 100755 index 000000000..203720589 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/previous/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.3.1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services-upgrade/previous/alfresco/Dockerfile b/e2e-test/release-testing/search-services-upgrade/previous/alfresco/Dockerfile new file mode 100755 index 000000000..433635ea6 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/previous/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository-community:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services-upgrade/previous/alfresco/model/empty b/e2e-test/release-testing/search-services-upgrade/previous/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/previous/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services-upgrade/previous/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/previous/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services-upgrade/previous/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/previous/config/nginx.conf b/e2e-test/release-testing/search-services-upgrade/previous/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/previous/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services-upgrade/previous/config/nginx.htpasswd b/e2e-test/release-testing/search-services-upgrade/previous/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/previous/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services-upgrade/previous/docker-compose.yml b/e2e-test/release-testing/search-services-upgrade/previous/docker-compose.yml new file mode 100755 index 000000000..f95022a86 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/previous/docker-compose.yml @@ -0,0 +1,181 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_CE_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + -Dshare.host=localhost + -Dalfresco.port=8080 + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dlocal.transform.service.enabled=true + -DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/ + -DlocalTransform.imagemagick.url=http://imagemagick:8090/ + -DlocalTransform.libreoffice.url=http://libreoffice:8090/ + -DlocalTransform.tika.url=http://tika:8090/ + -DlocalTransform.misc.url=http://transform-misc:8090/ + + -Dlegacy.transform.service.enabled=true + -Dalfresco-pdf-renderer.url=http://alfresco-pdf-renderer:8090/ + -Djodconverter.url=http://libreoffice:8090/ + -Dimg.url=http://imagemagick:8090/ + -Dtika.url=http://tika:8090/ + -Dtransform.misc.url=http://transform-misc:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + volumes: + - ../data/alf-repo-data:/usr/local/tomcat/alf_data + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + volumes: + - ../data/solr-data:/opt/alfresco-search-services/data + - ../data/solr-contentstore:/opt/alfresco-search-services/contentstore + + alfresco-pdf-renderer: + image: alfresco/alfresco-pdf-renderer:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8090:8090 + + imagemagick: + image: alfresco/alfresco-imagemagick:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8091:8090 + + libreoffice: + image: alfresco/alfresco-libreoffice:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8092:8090 + + tika: + image: alfresco/alfresco-tika:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8093:8090 + + transform-misc: + image: alfresco/alfresco-transform-misc:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8094:8090 + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + volumes: + - ../data/postgres-data:/var/lib/postgresql/data + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 512m + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: alfresco/alfresco-content-app:${ACA_TAG} + mem_limit: 256m + depends_on: + - alfresco + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app diff --git a/e2e-test/release-testing/search-services-upgrade/previous/search/Dockerfile b/e2e-test/release-testing/search-services-upgrade/previous/search/Dockerfile new file mode 100755 index 000000000..c0bdf4949 --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/previous/search/Dockerfile @@ -0,0 +1,155 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services-upgrade/previous/share/Dockerfile b/e2e-test/release-testing/search-services-upgrade/previous/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/previous/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-upgrade/previous/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services-upgrade/previous/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services-upgrade/previous/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services-upgrade/previous/share/modules/amps/empty b/e2e-test/release-testing/search-services-upgrade/previous/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services-upgrade/previous/share/modules/jars/empty b/e2e-test/release-testing/search-services-upgrade/previous/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services/.env b/e2e-test/release-testing/search-services/.env new file mode 100755 index 000000000..be3f573f6 --- /dev/null +++ b/e2e-test/release-testing/search-services/.env @@ -0,0 +1,15 @@ +ALFRESCO_TAG=6.2.1 +ALFRESCO_CE_TAG=6.2.0-ga +SHARE_TAG=6.2.1 +POSTGRES_TAG=11.4 +TRANSFORM_ROUTER_TAG=1.2.0 +TRANSFORM_CORE_AIO_TAG=2.2.1 +TRANSFORMER_TAG=2.1.0 +SHARED_FILE_STORE_TAG=0.7.0 +ACTIVE_MQ_TAG=5.15.8 +DIGITAL_WORKSPACE_TAG=1.5.0 +ACS_NGINX_TAG=3.0.1 +ACS_COMMUNITY_NGINX_TAG=1.0.0 +SEARCH_TAG=1.4.3.0-RC1 +ZEPPELIN_TAG=latest +ACA_TAG=master-latest diff --git a/e2e-test/release-testing/search-services/alfresco/Dockerfile b/e2e-test/release-testing/search-services/alfresco/Dockerfile new file mode 100755 index 000000000..433635ea6 --- /dev/null +++ b/e2e-test/release-testing/search-services/alfresco/Dockerfile @@ -0,0 +1,73 @@ +ARG ALFRESCO_TAG +FROM alfresco/alfresco-content-repository-community:${ALFRESCO_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat +ARG ALF_DATA_DIR=${TOMCAT_DIR}/alf_data + +# COMMS +ARG SOLR_COMMS +ENV SOLR_COMMS $SOLR_COMMS + +# SSL +ARG TRUSTSTORE_TYPE +ARG TRUSTSTORE_PASS +ARG KEYSTORE_TYPE +ARG KEYSTORE_PASS + +ENV TRUSTSTORE_TYPE=$TRUSTSTORE_TYPE \ + TRUSTSTORE_PASS=$TRUSTSTORE_PASS \ + KEYSTORE_TYPE=$KEYSTORE_TYPE \ + KEYSTORE_PASS=$KEYSTORE_PASS + +# Expose keystore folder +# Useless for 'none'/'http' communications with SOLR +VOLUME ["${ALF_DATA_DIR}/keystore"] + +USER root + +# Install modules and addons +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/alfresco/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/alfresco -directory -nobackup -force; + +# Default value in "repository.properties" is "dir.keystore=classpath:alfresco/keystore" +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + echo -e "\n\ + dir.keystore=${ALF_DATA_DIR}/keystore\n\ + alfresco.encryption.ssl.keystore.type=${TRUSTSTORE_TYPE}\n\ + alfresco.encryption.ssl.truststore.type=${KEYSTORE_TYPE}\n\ + " >> ${TOMCAT_DIR}/shared/classes/alfresco-global.properties; \ + fi + +# Enable SSL by adding the proper Connector to server.xml +RUN if [ "$SOLR_COMMS" == "https" ] ; then \ + sed -i "s/\ +[[:space:]]\+<\/Engine>/\n\ + <\/Engine>\n\ + \n\ + <\/Connector>/g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i "s/\ +[[:space:]]\+connectionTimeout=\"20000\"/\n\ + connectionTimeout=\"20000\"\n\ + compression=\"on\"\n\ + compressionMinSize=\"1\"\n\ + /g" ${TOMCAT_DIR}/conf/server.xml; \ + fi + + +# Copy custom content model to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/extension/ diff --git a/e2e-test/release-testing/search-services/alfresco/model/empty b/e2e-test/release-testing/search-services/alfresco/model/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services/alfresco/modules/amps/empty b/e2e-test/release-testing/search-services/alfresco/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services/alfresco/modules/jars/empty b/e2e-test/release-testing/search-services/alfresco/modules/jars/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services/config/nginx.conf b/e2e-test/release-testing/search-services/config/nginx.conf new file mode 100644 index 000000000..2a33bd59b --- /dev/null +++ b/e2e-test/release-testing/search-services/config/nginx.conf @@ -0,0 +1,67 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen *:8080; + + client_max_body_size 0; + + set $allowOriginSite *; + proxy_pass_request_headers on; + proxy_pass_header Set-Cookie; + + + + # External settings, do not remove + #ENV_ACCESS_LOG + + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_redirect off; + proxy_buffering off; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass_header Set-Cookie; + + + + # Alfresco Repository + location /alfresco/ { + proxy_pass http://alfresco:8080; + } + + # REST API (Swagger) + location /api-explorer/ { + proxy_pass http://alfresco:8080; + } + + + # SOLR Web Console (Master) + location /solr/ { + + proxy_pass http://solr6:8983; + + # Basic authentication + auth_basic "Solr web console"; + auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + + } + + + # Alfresco Share Web App + location /share/ { + proxy_pass http://share:8080; + } + + # Alfresco Content App + location / { + proxy_pass http://content-app:8080; + } + + } + +} diff --git a/e2e-test/release-testing/search-services/config/nginx.htpasswd b/e2e-test/release-testing/search-services/config/nginx.htpasswd new file mode 100644 index 000000000..c0a7ffc60 --- /dev/null +++ b/e2e-test/release-testing/search-services/config/nginx.htpasswd @@ -0,0 +1 @@ +admin:YWG41BPzVAkN6 diff --git a/e2e-test/release-testing/search-services/docker-compose.yml b/e2e-test/release-testing/search-services/docker-compose.yml new file mode 100755 index 000000000..a68bea936 --- /dev/null +++ b/e2e-test/release-testing/search-services/docker-compose.yml @@ -0,0 +1,177 @@ +# Using version 2 as 3 does not support resource constraint options (cpu_*, mem_* limits) for non swarm mode in Compose +version: "2" + +services: + + alfresco: + build: + context: ./alfresco + args: + ALFRESCO_TAG: ${ALFRESCO_CE_TAG} + SOLR_COMMS: none + COMPRESS_CONTENT: "false" + mem_limit: 1800m + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=solr6 + -Dsolr.port.ssl=8983 + -Dsolr.secureComms=none + -Dsolr.baseUrl=/solr + -Dindex.subsystem.name=solr6 + -Dshare.host=localhost + -Dalfresco.port=8080 + -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Ddeployment.method=DOCKER_COMPOSE + + -Dlocal.transform.service.enabled=true + -DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/ + -DlocalTransform.imagemagick.url=http://imagemagick:8090/ + -DlocalTransform.libreoffice.url=http://libreoffice:8090/ + -DlocalTransform.tika.url=http://tika:8090/ + -DlocalTransform.misc.url=http://transform-misc:8090/ + + -Dlegacy.transform.service.enabled=true + -Dalfresco-pdf-renderer.url=http://alfresco-pdf-renderer:8090/ + -Djodconverter.url=http://libreoffice:8090/ + -Dimg.url=http://imagemagick:8090/ + -Dtika.url=http://tika:8090/ + -Dtransform.misc.url=http://transform-misc:8090/ + + -Dcsrf.filter.enabled=false + -Dalfresco.restApi.basicAuthScheme=true + -Xms1500m -Xmx1500m + " + + solr6: + build: + context: ./search + args: + SEARCH_TAG: ${SEARCH_TAG} + SOLR_HOSTNAME: solr6 + ALFRESCO_HOSTNAME: alfresco + ALFRESCO_COMMS: none + COMPRESS_CONTENT: "false" + SEARCH_LOG_LEVEL: WARN + mem_limit: 1200m + environment: + #Solr needs to know how to register itself with Alfresco + SOLR_ALFRESCO_HOST: "alfresco" + SOLR_ALFRESCO_PORT: "8080" + ALFRESCO_SECURE_COMMS: none + #Alfresco needs to know how to call solr + SOLR_SOLR_HOST: "solr6" + SOLR_SOLR_PORT: "8983" + #Create the default alfresco and archive cores + SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive" + SOLR_JAVA_MEM: "-Xms1g -Xmx1g" + ports: + - 8083:8983 + + + + alfresco-pdf-renderer: + image: alfresco/alfresco-pdf-renderer:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8090:8090 + + imagemagick: + image: alfresco/alfresco-imagemagick:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8091:8090 + + libreoffice: + image: alfresco/alfresco-libreoffice:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8092:8090 + + tika: + image: alfresco/alfresco-tika:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8093:8090 + + transform-misc: + image: alfresco/alfresco-transform-misc:${TRANSFORMER_TAG} + mem_limit: 1g + environment: + JAVA_OPTS: " -Xms256m -Xmx512m" + ports: + - 8094:8090 + + share: + build: + context: ./share + args: + SHARE_TAG: ${SHARE_TAG} + mem_limit: 1g + environment: + REPO_HOST: "alfresco" + REPO_PORT: "8080" + JAVA_OPTS: " + -Xms500m + -Xmx500m + -Dalfresco.host=localhost + -Dalfresco.port=8080 + -Dalfresco.context=alfresco + -Dalfresco.protocol=http + " + + postgres: + image: postgres:${POSTGRES_TAG} + mem_limit: 512m + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 -c log_min_messages=LOG + ports: + - 5432:5432 + + activemq: + image: alfresco/alfresco-activemq:${ACTIVE_MQ_TAG} + mem_limit: 512m + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP + + content-app: + image: alfresco/alfresco-content-app:${ACA_TAG} + mem_limit: 256m + depends_on: + - alfresco + + # HTTP proxy to provide HTTP Default port access to services + # SOLR API and SOLR Web Console are protected to avoid unauthenticated access + proxy: + image: nginx:stable-alpine + mem_limit: 128m + depends_on: + - alfresco + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx.htpasswd:/etc/nginx/conf.d/nginx.htpasswd + ports: + - 8080:8080 + links: + - alfresco + - share + - solr6 + - content-app diff --git a/e2e-test/release-testing/search-services/search/Dockerfile b/e2e-test/release-testing/search-services/search/Dockerfile new file mode 100755 index 000000000..799107176 --- /dev/null +++ b/e2e-test/release-testing/search-services/search/Dockerfile @@ -0,0 +1,163 @@ +ARG SEARCH_TAG +FROM quay.io/alfresco/search-services:${SEARCH_TAG} + +# COMMON +ARG ALFRESCO_HOSTNAME +ARG SOLR_HOSTNAME +ENV ALFRESCO_HOSTNAME $ALFRESCO_HOSTNAME +ENV SOLR_HOSTNAME $SOLR_HOSTNAME + +# Configure Alfresco Service Name +RUN sed -i '/^bash.*/i sed -i "'"s/alfresco.host=localhost/alfresco.host=${ALFRESCO_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i sed -i "'"s/solr.host=localhost/solr.host=${SOLR_HOSTNAME}/g"'" ${DIST_DIR}/solrhome/conf/shared.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh + +# COMMS +ARG ALFRESCO_COMMS +ENV ALFRESCO_COMMS $ALFRESCO_COMMS + +# Configure SOLR cores to run in HTTPs mode from template +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=none/alfresco.secureComms=https/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +else \ + sed -i '/^bash.*/i sed -i "'"s/alfresco.secureComms=https/alfresco.secureComms=none/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SSL +ARG TRUSTSTORE_TYPE +ENV TRUSTSTORE_TYPE $TRUSTSTORE_TYPE +ARG KEYSTORE_TYPE +ENV KEYSTORE_TYPE $KEYSTORE_TYPE + +# Passwords using Env Vars +ARG PASSWORDS_AS_ENV_VARS +ENV PASSWORDS_AS_ENV_VARS $PASSWORDS_AS_ENV_VARS + +# Set SSL properties +RUN if [ "$ALFRESCO_COMMS" == "https" ] ; then \ + if [ "$PASSWORDS_AS_ENV_VARS" == "true" ]; then \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-repo-client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + else \ + sed -i '/^bash.*/i \ + sed -i "'"s/alfresco.encryption.ssl.keystore.location=.*/alfresco.encryption.ssl.keystore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.keystore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.passwordFileLocation=.*/alfresco.encryption.ssl.keystore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-keystore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.keystore.type=.*/alfresco.encryption.ssl.keystore.type=${KEYSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.location=.*/alfresco.encryption.ssl.truststore.location=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl.repo.client.truststore/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.passwordFileLocation=.*/alfresco.encryption.ssl.truststore.passwordFileLocation=\\\/opt\\\/alfresco-search-services\\\/keystore\\\/ssl-truststore-passwords.properties/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties && \ + sed -i "'"s/alfresco.encryption.ssl.truststore.type=.*/alfresco.encryption.ssl.truststore.type=${TRUSTSTORE_TYPE}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi \ +fi + +# REPLICATION +ARG ENABLE_MASTER +ARG ENABLE_SLAVE +ARG MASTER_HOST +ENV ENABLE_MASTER $ENABLE_MASTER +ENV ENABLE_SLAVE $ENABLE_SLAVE +ENV MASTER_HOST $MASTER_HOST + +# Set Master / Slave configuration for this Node +RUN if [ "$ENABLE_MASTER" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + commit\ + startup\ + schema.xml,stopwords.txt\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi +RUN if [ "$ENABLE_SLAVE" == "true" ] ; then \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + sed -i "/^bash.*/i sed -i '/^\\\\\s*\ + http://${MASTER_HOST}:8983/solr/alfresco\ + 00:00:60\ + ' ${DIST_DIR}/solrhome/templates/rerank/conf/solrconfig.xml\n" ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi + +# SHARDING +ARG ENABLE_SHARDING +ARG NUM_SHARDS +ARG SHARD_ID +ARG SHARDING_METHOD +ENV ENABLE_SHARDING $ENABLE_SHARDING +ENV NUM_SHARDS $NUM_SHARDS +ENV SHARD_ID $SHARD_ID +ENV SHARDING_METHOD $SHARDING_METHOD + +# Set Port Number and Sharding ID for this Shard Service +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i echo "\nsolr.port.ssl=8983\nshard.instance=${SHARD_ID}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + if [[ ("$SHARDING_METHOD" != "DB_ID_RANGE") && ("$SHARDING_METHOD" != "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.count=${NUM_SHARDS}" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + sed -i '/^bash.*/i echo "\nalfresco.port=8080\nalfresco.port.ssl=8443\nalfresco.baseUrl=/alfresco" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# SHARDING METHODS +ARG SHARD_RANGE +ENV SHARD_RANGE $SHARD_RANGE +ARG SHARD_KEY +ENV SHARD_KEY $SHARD_KEY +ARG SHARD_DATE_GROUPING +ENV SHARD_DATE_GROUPING $SHARD_DATE_GROUPING + +# Set Shard Method and Shard Key property name +RUN if [ "$ENABLE_SHARDING" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/shard.method=DB_ID/shard.method=${SHARDING_METHOD}/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + if [ "$SHARDING_METHOD" == "DB_ID_RANGE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.range=${SHARD_RANGE}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "DATE" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh && \ + sed -i '/^bash.*/i echo "\nshard.date.grouping=${SHARD_DATE_GROUPING}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [ "$SHARDING_METHOD" == "PROPERTY" ]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ + if [[ ("$SHARDING_METHOD" == "EXPLICIT_ID") || ("$SHARDING_METHOD" == "EXPLICIT_ID_FALLBACK_LRIS") ]]; then \ + sed -i '/^bash.*/i echo "\nshard.key=${SHARD_KEY}\n" >> ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ + fi; \ +fi + +# GZIP COMPRESSION +ARG COMPRESS_CONTENT +ENV COMPRESS_CONTENT $COMPRESS_CONTENT +RUN if [ "$COMPRESS_CONTENT" == "true" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/solr.request.content.compress=false/solr.request.content.compress=true/g"'" ${DIST_DIR}/solrhome/templates/rerank/conf/solrcore.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +# Useless for 'none'/'http' communications with Alfresco +RUN mkdir ${DIST_DIR}/keystore \ + && chown -R solr:solr ${DIST_DIR}/keystore + +# Set the search log level if requested. +ARG SEARCH_LOG_LEVEL +ENV SEARCH_LOG_LEVEL $SEARCH_LOG_LEVEL +RUN if [ "$SEARCH_LOG_LEVEL" ] ; then \ + sed -i '/^bash.*/i sed -i "'"s/log4j.rootLogger=WARN, file, CONSOLE/log4j.rootLogger=${SEARCH_LOG_LEVEL}, file, CONSOLE/g"'" ${DIST_DIR}/logs/log4j.properties\n' \ + ${DIST_DIR}/solr/bin/search_config_setup.sh; \ +fi + +VOLUME ["${DIST_DIR}/keystore"] diff --git a/e2e-test/release-testing/search-services/share/Dockerfile b/e2e-test/release-testing/search-services/share/Dockerfile new file mode 100644 index 000000000..d4a62687e --- /dev/null +++ b/e2e-test/release-testing/search-services/share/Dockerfile @@ -0,0 +1,16 @@ +ARG SHARE_TAG +FROM quay.io/alfresco/alfresco-share:${SHARE_TAG} + +ARG TOMCAT_DIR=/usr/local/tomcat + + + +# Install modules +RUN mkdir -p $TOMCAT_DIR/amps +COPY modules/amps/* $TOMCAT_DIR/amps/ +COPY modules/jars/* $TOMCAT_DIR/webapps/share/WEB-INF/lib/ +RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \ + $TOMCAT_DIR/amps $TOMCAT_DIR/webapps/share -directory -nobackup -force; + +# Copy custom content forms to deployment folder +COPY model/* $TOMCAT_DIR/shared/classes/alfresco/web-extension/ \ No newline at end of file diff --git a/e2e-test/release-testing/search-services/share/model/share-config-custom-dev.xml b/e2e-test/release-testing/search-services/share/model/share-config-custom-dev.xml new file mode 100644 index 000000000..8d1410bab --- /dev/null +++ b/e2e-test/release-testing/search-services/share/model/share-config-custom-dev.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/e2e-test/release-testing/search-services/share/modules/amps/empty b/e2e-test/release-testing/search-services/share/modules/amps/empty new file mode 100644 index 000000000..e69de29bb diff --git a/e2e-test/release-testing/search-services/share/modules/jars/empty b/e2e-test/release-testing/search-services/share/modules/jars/empty new file mode 100644 index 000000000..e69de29bb