diff --git a/.travis.settings.xml b/.travis.settings.xml new file mode 100644 index 0000000000..e60b0e0c4c --- /dev/null +++ b/.travis.settings.xml @@ -0,0 +1,68 @@ + + + + alfresco-internal + + true + + + + alfresco-internal + + true + + + true + + Alfresco Internal Repository + https://artifacts.alfresco.com/nexus/content/groups/internal + + + + + alfresco-internal + Alfresco Internal Repository + https://artifacts.alfresco.com/nexus/content/groups/internal + + + alfresco-public + Alfresco Public Repository + https://artifacts.alfresco.com/nexus/content/groups/public + + + alfresco-private + Alfresco Private Repository + https://artifacts.alfresco.com/nexus/content/groups/private + + + + + + + + docker.io + ${env.DOCKERHUB_USERNAME} + ${env.DOCKERHUB_PASSWORD} + + + quay.io + ${env.QUAY_USERNAME} + ${env.QUAY_PASSWORD} + + + alfresco-internal + ${env.MAVEN_USERNAME} + ${env.MAVEN_PASSWORD} + + + alfresco-private + ${env.MAVEN_USERNAME} + ${env.MAVEN_PASSWORD} + + + alfresco-internal-snapshots + ${env.MAVEN_USERNAME} + ${env.MAVEN_PASSWORD} + + + diff --git a/.travis.yml b/.travis.yml index 2172514ab1..598593f5a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,107 @@ +os: linux +dist: xenial language: java jdk: - openjdk11 -sudo: false -install: true -script: travis_wait 35 mvn -B clean verify -Dcommunity -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + +services: + - docker + +branches: + only: + - /release\/V3.\d+.*/ + - /feature-3.\d+\/.*/ + - /merge-3.\d+\/.*/ + - /hotfix-3.\d+\/.*/ + +cache: + directories: + - $HOME/.m2 + +# the cache can grow constantly +before_cache: + - rm -rf $HOME/.m2/repository/org/alfresco/alfresco-governance-services* + +before_install: + - "cp .travis.settings.xml $HOME/.m2/settings.xml" +install: skip + +stages: + - name: Build AGS + - name: Tests + if: commit_message !~ /\[skip tests\]/ + - name: Security Scans + - name: Release + - name: Publish + +jobs: + include: + - name: "Build AGS Community" + stage: Build AGS + before_script: source scripts/setUpMavenPhase.sh + script: + - travis_retry travis_wait 120 mvn -B -q clean ${MAVEN_PHASE} -P${BUILD_PROFILE} -Dimage.tag=${IMAGE_TAG} -Dskip.integrationtests=false -Dcommunity -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + + - name: "Build AGS Enterprise" + stage: Build AGS + before_script: source scripts/setUpMavenPhase.sh + install: + - travis_retry travis_wait 60 mvn -B -q clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -f rm-community/pom.xml -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + script: + - travis_retry travis_wait 80 mvn -B -q ${MAVEN_PHASE} -P${BUILD_PROFILE} -Dimage.tag=${IMAGE_TAG} -Dskip.integrationtests=false -f rm-enterprise/pom.xml -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + + - name: "Build AGS Benchmark" + stage: Build AGS + before_script: source scripts/setUpMavenPhase.sh + install: + - travis_retry travis_wait 80 mvn -B -q clean install -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + script: + - travis_retry travis_wait 35 mvn -B -q ${MAVEN_PHASE} -Dskip.integrationtests=false -f rm-benchmark/pom.xml -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + + - name: "Community Integrations Tests on MySQL" + stage: Tests + script: + - echo "Community Integrations Tests on MySQL" + - name: "Enterprise Integrations Tests on MySQL" + stage: Tests + script: + - echo "Enterprise Integrations Tests on MySQL" + - name: "Community Rest API Tests" + stage: Tests + script: + - echo "Community Rest API Tests" + - name: "Enterprise Rest API Tests" + stage: Tests + script: + - echo "Enterprise Rest API Tests" + - name: "Community UI Tests ..." + stage: Tests + script: + - echo "Community UI Tests ..." + - name: "Enterprise UI Tests ..." + stage: Tests + script: + - echo "Enterprise UI Tests ..." + + - name: "Source Clear Scan (SCA)" + stage: Security Scans + script: + - echo "Source Clear Scan (SCA)" + - name: "Static Analysis (SAST)" + stage: Security Scans + script: + - echo "Static Analysis (SAST)" + + - name: "Community Release" + stage: Release + script: + - echo "Community Release" + - name: "Enterprise Release" + stage: Release + script: + - echo "Enterprise Release" + + - name: "Copy to S3 Release Bucket" + stage: Publish + script: + - echo "Copy to S3 Release Bucket" diff --git a/pom.xml b/pom.xml index 66e9d23947..2f68a47086 100644 --- a/pom.xml +++ b/pom.xml @@ -468,6 +468,7 @@ start pre-integration-test + stop start diff --git a/scripts/setUpMavenPhase.sh b/scripts/setUpMavenPhase.sh new file mode 100644 index 0000000000..688f019df8 --- /dev/null +++ b/scripts/setUpMavenPhase.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +echo "Branch name: ${TRAVIS_BRANCH}" +echo "Pull request: ${TRAVIS_PULL_REQUEST}" +echo "Travis job name: ${TRAVIS_JOB_NAME}" +branchName=${TRAVIS_BRANCH} +imageTag=${branchName:8} +echo "Image tag: ${imageTag}" + + if [[ ${TRAVIS_JOB_NAME} == "Build AGS Enterprise" ]]; + then + export BUILD_PROFILE="internal" + else + export BUILD_PROFILE="master" + fi + + if [[ "${TRAVIS_BRANCH}" == "master" && "${TRAVIS_PULL_REQUEST}" == "false" ]]; + then + export MAVEN_PHASE="deploy" + export IMAGE_TAG="latest" + elif [[ ${TRAVIS_BRANCH} = release* && "${TRAVIS_PULL_REQUEST}" == "false" ]]; + then + export MAVEN_PHASE="deploy" + export IMAGE_TAG="${imageTag}-latest" + else + export MAVEN_PHASE="verify" + export BUILD_PROFILE="buildDockerImage" + export IMAGE_TAG="latest" + fi