From 52a4b7fade9c8423716845faadffc29a91310d43 Mon Sep 17 00:00:00 2001 From: Mihaela Popa Date: Thu, 12 Jul 2018 17:33:32 +0300 Subject: [PATCH] REPO-3160: Add email tests to ACS community build plan (#52) REPO-3160: Add the email TAS tests to our builds Add a test image in the community project and created a new maven module in order to not affect the running tas tests (integration tests where failing with the changes for email tests). This test image has some port exposed in order to run the tas email tests. --- .../.dockerignore | 1 + .../.maven-dockerignore | 1 + .../docker-alfresco-community-test/Dockerfile | 108 ++++++ .../docker-alfresco-community-test/pom.xml | 327 ++++++++++++++++++ .../docker-alfresco-community-test/test/.env | 5 + .../test/docker-compose.yml | 90 +++++ pom.xml | 2 + 7 files changed, 534 insertions(+) create mode 100644 docker-alfresco/test/docker-alfresco-community-test/.dockerignore create mode 100644 docker-alfresco/test/docker-alfresco-community-test/.maven-dockerignore create mode 100644 docker-alfresco/test/docker-alfresco-community-test/Dockerfile create mode 100644 docker-alfresco/test/docker-alfresco-community-test/pom.xml create mode 100644 docker-alfresco/test/docker-alfresco-community-test/test/.env create mode 100644 docker-alfresco/test/docker-alfresco-community-test/test/docker-compose.yml diff --git a/docker-alfresco/test/docker-alfresco-community-test/.dockerignore b/docker-alfresco/test/docker-alfresco-community-test/.dockerignore new file mode 100644 index 0000000000..30d74d2584 --- /dev/null +++ b/docker-alfresco/test/docker-alfresco-community-test/.dockerignore @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/docker-alfresco/test/docker-alfresco-community-test/.maven-dockerignore b/docker-alfresco/test/docker-alfresco-community-test/.maven-dockerignore new file mode 100644 index 0000000000..112bd18249 --- /dev/null +++ b/docker-alfresco/test/docker-alfresco-community-test/.maven-dockerignore @@ -0,0 +1 @@ +target/docker/ \ No newline at end of file diff --git a/docker-alfresco/test/docker-alfresco-community-test/Dockerfile b/docker-alfresco/test/docker-alfresco-community-test/Dockerfile new file mode 100644 index 0000000000..c6aa2bbaf1 --- /dev/null +++ b/docker-alfresco/test/docker-alfresco-community-test/Dockerfile @@ -0,0 +1,108 @@ +# Fetch image based on Tomcat 8.5.28 and Java 8 +# More infos about this image: https://github.com/Alfresco/alfresco-docker-base-tomcat +FROM alfresco/alfresco-base-tomcat:8.5.28-java-8-oracle-centos-7 + +# Base ACS Repository Image includes transformation commands: +# /usr/bin/alfresco-pdf-renderer - alfresco-pdf-renderer +# /usr/bin/convert - imagemagick +# /opt/libreoffice5.4/program/soffice - LibreOffice + +# alfresco-pdf-renderer uses the PDFium library from Google Inc. See the license at https://pdfium.googlesource.com/pdfium/+/master/LICENSE or in /pdfium.txt +# ImageMagick is from ImageMagick Studio LLC. See the license at http://www.imagemagick.org/script/license.php or in /ImageMagick-license.txt +# LibreOffice is from The Document Foundation. See the license at https://www.libreoffice.org/download/license/ or in /libreoffice.txt + +ENV ALFRESCO_PDF_RENDERER_LIB_RPM_URL=https://nexus.alfresco.com/nexus/service/local/repositories/releases/content/org/alfresco/alfresco-pdf-renderer/1.1/alfresco-pdf-renderer-1.1-linux.tgz +ENV PDFIUM_LICENSE_FILE=https://github.com/Alfresco/acs-community-packaging/blob/master/distribution/src/main/resources/licenses/3rd-party/pdfium.txt + +ENV LIBREOFFICE_RPM_URL=https://nexus.alfresco.com/nexus/service/local/repositories/thirdparty/content/org/libreoffice/libreoffice-dist/5.4.6/libreoffice-dist-5.4.6-linux.gz +ENV LIBREOFFICE_LICENSE_FILE=https://github.com/Alfresco/acs-community-packaging/blob/master/distribution/src/main/resources/licenses/3rd-party/libreoffice.txt + +ENV IMAGEMAGICK_RPM_URL=https://nexus.alfresco.com/nexus/service/local/repositories/thirdparty/content/org/imagemagick/imagemagick-distribution/7.0.7-27/imagemagick-distribution-7.0.7-27-linux.rpm +ENV IMAGEMAGICK_LIB_RPM_URL=https://nexus.alfresco.com/nexus/service/local/repositories/thirdparty/content/org/imagemagick/imagemagick-distribution/7.0.7-27/imagemagick-distribution-7.0.7-27-libs-linux.rpm +ENV IMAGEMAGICK_LICENSE_FILE=https://github.com/Alfresco/acs-community-packaging/blob/master/distribution/src/main/resources/licenses/3rd-party/ImageMagick-license.txt + +# Install transformer binaries +RUN yum install wget -y && \ + \ + wget $ALFRESCO_PDF_RENDERER_LIB_RPM_URL && \ + wget -P /. $PDFIUM_LICENSE_FILE && \ + tar xf alfresco-pdf-renderer-*-linux.tgz -C /usr/bin && \ + rm -f alfresco-pdf-renderer-*-linux.tgz && \ + \ + yum install -y cairo cups-libs libSM && \ + wget $LIBREOFFICE_RPM_URL && \ + wget -P /. $LIBREOFFICE_LICENSE_FILE && \ + tar xzf libreoffice-dist-*-linux.gz && \ + yum localinstall -y LibreOffice*/RPMS/*.rpm && \ + rm -rf libreoffice-dist-*-linux.gz LibreOffice_*_Linux_x86-64_rpm && \ + \ + wget $IMAGEMAGICK_RPM_URL && \ + wget $IMAGEMAGICK_LIB_RPM_URL && \ + wget -P /. $IMAGEMAGICK_LICENSE_FILE && \ + yum localinstall -y imagemagick-distribution-*-linux.rpm && \ + rm -f imagemagick-distribution-*-linux.rpm && \ + \ + yum clean all &&\ + \ + yum remove wget -y + +# Create prerequisite to store tools and properties +RUN mkdir -p /usr/local/tomcat/shared/classes/alfresco/extension && \ + mkdir /usr/local/tomcat/alfresco-mmt +RUN touch /usr/local/tomcat/shared/classes/alfresco-global.properties + +# You need to run `mvn clean install` in the root of this project to update the following dependencies +# Copy the WAR files to the appropriate location for your application server +# Copy the JDBC drivers for the database you are using to the lib/ directory. +# Copy the alfresco-mmt.jar +COPY target/war /usr/local/tomcat/webapps +COPY target/connector/* /usr/local/tomcat/lib/ +COPY target/alfresco-mmt/* /usr/local/tomcat/alfresco-mmt/ +RUN rm -rf /usr/local/tomcat/webapps/ROOT +COPY target/server-root/* /usr/local/tomcat/webapps + +# Change the value of the shared.loader= property to the following: +# shared.loader=${catalina.base}/shared/classes +RUN sed -i "s/shared.loader=/shared.loader=\${catalina.base}\/shared\/classes/" /usr/local/tomcat/conf/catalina.properties + +# Add here configurations for alfresco-global.properties +RUN echo -e '\n\ +alfresco-pdf-renderer.root=/usr/bin/\n\ +alfresco-pdf-renderer.exe=${alfresco-pdf-renderer.root}/alfresco-pdf-renderer\n\ +\n\ +jodconverter.enabled=true\n\ +jodconverter.portNumbers=8100\n\ +jodconverter.officeHome=/opt/libreoffice5.4/\n\ +\n\ +img.root=/usr/lib64/ImageMagick-7.0.7\n\ +img.coders=/usr/lib64/ImageMagick-7.0.7/modules-Q16HDRI/coders\n\ +img.config=/usr/lib64/ImageMagick-7.0.7/config-Q16HDRI\n\ +img.exe=/usr/bin/convert\n\ +' >> /usr/local/tomcat/shared/classes/alfresco-global.properties + +# Add debug for testing +# RUN echo -e '\n\ +# log4j.logger.org.alfresco.repo.content.transform.TransformerDebug=debug\n\ +# ' >> /usr/local/tomcat/shared/classes/alfresco/extension/custom-log4j.properties + +RUN mkdir -p /usr/local/tomcat/amps + +# Copy the amps from build context to the appropriate location for your application server +COPY target/amps /usr/local/tomcat/amps + +# Install amps on alfresco.war +RUN java -jar /usr/local/tomcat/alfresco-mmt/alfresco-mmt*.jar install \ + /usr/local/tomcat/amps /usr/local/tomcat/webapps/alfresco -directory -nobackup -force + +# Docker CMD from parent image starts the server + +# Unpack ROOT.war and make alfresco and ROOT read-only. +RUN mkdir /usr/local/tomcat/webapps/ROOT && cd /usr/local/tomcat/webapps/ROOT && jar -xvf /usr/local/tomcat/webapps/ROOT.war && rm -f /usr/local/tomcat/webapps/ROOT.war && chmod -R =r /usr/local/tomcat/webapps && \ +# Add catalina.policy to ROOT.war and alfresco.war +# Grant all security permissions to alfresco webapp because of numerous permissions required in order to work properly. +# Grant only deployXmlPermission to ROOT webapp. + sed -i -e "\$a\grant\ codeBase\ \"file:\$\{catalina.base\}\/webapps\/alfresco\/-\" \{\n\ permission\ java.security.AllPermission\;\n\};\ngrant\ codeBase\ \"file:\$\{catalina.base\}\/webapps\/ROOT\/-\" \{\n\ permission org.apache.catalina.security.DeployXmlPermission \"ROOT\";\n\};" /usr/local/tomcat/conf/catalina.policy + +# To remote debug into this image add: EXPOSE 8000 +# Changes are also required to the docker-compose/docker-compose.yml file. +# EXPOSE 8000 diff --git a/docker-alfresco/test/docker-alfresco-community-test/pom.xml b/docker-alfresco/test/docker-alfresco-community-test/pom.xml new file mode 100644 index 0000000000..f0af870cf4 --- /dev/null +++ b/docker-alfresco/test/docker-alfresco-community-test/pom.xml @@ -0,0 +1,327 @@ + + 4.0.0 + content-services-community-docker-test + ACS Community Docker Test Image Builder for Alfresco Community + pom + + + org.alfresco + acs-community-packaging + 6.0.8-SNAPSHOT + ../../../pom.xml + + + + alfresco/alfresco-content-repository-community-test + quay.io + + + + + org.alfresco + content-services-community + ${project.version} + war + + + org.alfresco + alfresco-server-root + ${dependency.alfresco-server-root.version} + war + + + org.postgresql + postgresql + ${dependency.postgresql.version} + + + org.alfresco + alfresco-mmt + ${dependency.alfresco-mmt.version} + + + org.alfresco + alfresco-share-services + ${alfresco.alfresco-share-services.version} + amp + + + org.alfresco.aos-module + alfresco-aos-module + ${alfresco.aos-module.version} + amp + + + org.alfresco.aos-module + alfresco-vti-bin + ${alfresco.aos-module.version} + war + + + org.alfresco.integrations + alfresco-googledocs-repo-community + ${alfresco.googledocs.version} + amp + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.2 + + + unpack-resources + process-resources + + unpack + + + + + org.alfresco + content-services-community + ${project.version} + war + false + ${project.build.directory}/war/alfresco + alfresco.war + + + + + + copy-resources-war + process-resources + + copy + + + + + org.postgresql + postgresql + ${dependency.postgresql.version} + jar + false + ${project.build.directory}/connector + + + org.alfresco + alfresco-mmt + ${dependency.alfresco-mmt.version} + jar + false + ${project.build.directory}/alfresco-mmt + + + org.alfresco + alfresco-server-root + ${dependency.alfresco-server-root.version} + war + false + ${project.build.directory}/server-root + ROOT.war + + + + + + + copy-resources-amps + process-resources + + copy + + + + + org.alfresco + alfresco-share-services + ${alfresco.alfresco-share-services.version} + amp + false + ${project.build.directory}/amps + + + org.alfresco.aos-module + alfresco-aos-module + ${alfresco.aos-module.version} + amp + false + ${project.build.directory}/amps + + + org.alfresco.integrations + alfresco-googledocs-repo-community + ${alfresco.googledocs.version} + amp + false + ${project.build.directory}/amps + + + + + + + + + io.fabric8 + fabric8-maven-plugin + ${dependency.fabric8.version} + + + + ${image.name} + + ${project.basedir}/ + + + + + + + + + + + communityDocker + + + + io.fabric8 + fabric8-maven-plugin + ${dependency.fabric8.version} + + + build-image + install + + build + + + + + + + + + + internal + + + + io.fabric8 + fabric8-maven-plugin + ${dependency.fabric8.version} + + + + ${image.name}:${image.tag} + ${image.registry} + + ${project.basedir}/ + + + + + + + build-push-image + install + + build + push + + + + + + + + + + master + + + + io.fabric8 + fabric8-maven-plugin + ${dependency.fabric8.version} + + + + ${image.name} + ${image.registry} + + ${project.basedir}/ + + + + ${image.name} + + ${project.basedir}/ + + + + + + + build-push-image + install + + build + push + + + + + + + + + + release + + + + io.fabric8 + fabric8-maven-plugin + ${dependency.fabric8.version} + + + + ${image.name}:${project.version} + ${image.registry} + + ${project.basedir}/ + + + + ${image.name}:${project.version} + + ${project.basedir}/ + + + + + + + build-push-image + deploy + + build + push + + + + + + + + + + + \ No newline at end of file diff --git a/docker-alfresco/test/docker-alfresco-community-test/test/.env b/docker-alfresco/test/docker-alfresco-community-test/test/.env new file mode 100644 index 0000000000..ad8589921a --- /dev/null +++ b/docker-alfresco/test/docker-alfresco-community-test/test/.env @@ -0,0 +1,5 @@ +ALFRESCO_TAG=latest +SHARE_TAG=6.0.b +SOLR6_TAG=1.1.1 +POSTGRES_TAG=10.1 +REGISTRY= \ No newline at end of file diff --git a/docker-alfresco/test/docker-alfresco-community-test/test/docker-compose.yml b/docker-alfresco/test/docker-alfresco-community-test/test/docker-compose.yml new file mode 100644 index 0000000000..553ff0ef15 --- /dev/null +++ b/docker-alfresco/test/docker-alfresco-community-test/test/docker-compose.yml @@ -0,0 +1,90 @@ +version: "3" + +# The acs-community-deployment project contains the product version of docker-compose. +# +# This version is for testing use. For testing and debug we need to have a more open version. +# For remote debug we need the CATALINA_OPTS and to expose port 8000. + +services: + alfresco: + image: ${REGISTRY}alfresco/alfresco-content-repository-community-test:${ALFRESCO_TAG} + environment: + CATALINA_OPTS : " + -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n + " + 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=8983 + -Dsolr.secureComms=none + -Dsolr.base.url=/solr + -Dindex.subsystem.name=solr6 + -Dalfresco.restApi.basicAuthScheme=true + -Dimap.server.enabled=true + -Dftp.enabled=true + -Dftp.dataPortFrom=30000 + -Dftp.dataPortTo=30099 + -Dcifs.enabled=true + -Dshare.host=localhost + -Dalfresco.host=localhost + -Dalfresco.port.ssl=80 + -Dalfresco.protocol=http + -Dalfresco.port=8082 + -Dimap.server.enabled=true + -Dimap.server.port=1143 + -Dimap.server.imaps.port=1143 + -Dimap.server.host=0.0.0.0 + -Dmail.protocol=smtp + -Dmail.port=465 + -Dmail.host=smtp.gmail.com + -Demail.inbound.unknownUser=anonymous + -Demail.inbound.enabled=true + -Demail.server.enabled=true + -Demail.server.port=1126 + -Dsystem.usages.enabled=true + -Dcsrf.filter.enabled=false + " + ports: + - 8082:8080 + - 8000:8000 + - 446:445 + - 143:143 + - "21:21" + - 1143:1143 + - 1126:1126 + - 1125:1125 + - "30000-30099:30000-30099" + + share: + image: alfresco/alfresco-share:${SHARE_TAG} + environment: + - REPO_HOST=alfresco + - REPO_PORT=8080 + ports: + - 8080:8080 + + postgres: + image: library/postgres:${POSTGRES_TAG} + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + ports: + - 5432:5432 + + solr6: + image: alfresco/alfresco-search-services:${SOLR6_TAG} + environment: + #Solr needs to know how to register itself with Alfresco + - SOLR_ALFRESCO_HOST=alfresco + - SOLR_ALFRESCO_PORT=8080 + #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 + ports: + - 8083:8983 #Browser port diff --git a/pom.xml b/pom.xml index 93042bd47c..4f732a994b 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,7 @@ war docker-alfresco + docker-alfresco/test/docker-alfresco-community-test @@ -35,6 +36,7 @@ distribution public-javadoc docker-alfresco + docker-alfresco/test/docker-alfresco-community-test