diff --git a/.travis.settings.xml b/.ci.settings.xml similarity index 100% rename from .travis.settings.xml rename to .ci.settings.xml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..0b19c4c394 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,597 @@ +name: Alfresco Community Repo CI + +on: + pull_request: + branches: + - feature/** + - fix/** + - master + - release/** + push: + branches: + - feature/** + - fix/** + workflow_call: + workflow_dispatch: + +env: + DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} + GITHUB_ACTIONS_DEPLOY_TIMEOUT: 60 + LOG_WARN: "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" + MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }} + MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }} + QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }} + QUAY_USERNAME: ${{ secrets.QUAY_USERNAME }} + TAS_ENVIRONMENT: ./packaging/tests/environment + TAS_SCRIPTS: ../alfresco-community-repo/packaging/tests/scripts + +jobs: + prepare: + name: "Prepare" + runs-on: ubuntu-latest + if: > + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Prepare maven cache and check compilation" + run: bash ./scripts/ci/prepare.sh + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + veracode: + name: "Source Clear Scan (SCA)" + runs-on: ubuntu-latest + needs: [prepare] + if: > + ((github.ref_name == 'master' || startsWith(github.ref_name, 'release/')) && github.event_name != 'pull_request') && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - uses: Alfresco/alfresco-build-tools/.github/actions/veracode@v1.33.0 + continue-on-error: true + with: + srcclr-api-token: ${{ secrets.SRCCLR_API_TOKEN }} + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + all_unit_tests_suite: + name: "Core, Data-Model, Repository - AllUnitTestsSuite - Build and test" + runs-on: ubuntu-latest + needs: [prepare] + if: > + !contains(github.event.head_commit.message, '[skip repo]') && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Run tests" + run: | + mvn -B test -pl core,data-model -am -DfailIfNoTests=false + mvn -B test -pl "repository,mmt" -am "-Dtest=AllUnitTestsSuite,AllMmtUnitTestSuite" -DfailIfNoTests=false + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + remote_api_app_context_test_suites: + name: Remote-api - ${{ matrix.testSuite }} + runs-on: ubuntu-latest + needs: [prepare] + if: > + !contains(github.event.head_commit.message, '[skip repo]') && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + strategy: + fail-fast: false + matrix: + include: + - testSuite: AppContext01TestSuite + compose-profile: default + - testSuite: AppContext02TestSuite + compose-profile: with-transform-core-aio + - testSuite: AppContext03TestSuite + compose-profile: with-transform-core-aio + - testSuite: AppContext04TestSuite + compose-profile: with-transform-core-aio + - testSuite: AppContextExtraTestSuite + compose-profile: default + env: + REQUIRES_INSTALLED_ARTIFACTS: true + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Build" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: | + bash ./scripts/ci/init.sh + bash ./scripts/ci/build.sh + - name: "Set transformers tag" + run: echo "TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout)" >> $GITHUB_ENV + - name: "Set up the environment" + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile ${{ matrix.compose-profile }} up -d + - name: "Run tests" + run: mvn -B test -pl remote-api -Dtest=${{ matrix.testSuite }} -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + repository_mariadb_tests: + name: Repository - MariaDB ${{ matrix.version }} tests + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/')) && + github.event_name != 'pull_request' && + !contains(github.event.head_commit.message, '[skip db]')) || + contains(github.event.head_commit.message, '[db]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + strategy: + fail-fast: false + matrix: + version: ['10.2.18', '10.4', '10.5'] + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: Run MariaDB ${{ matrix.version }} database + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mariadb up -d + env: + MARIADB_VERSION: ${{ matrix.version }} + - name: "Run tests" + run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + repository_mariadb_10_6_tests: + name: "Repository - MariaDB 10.6 tests" + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/') || github.event_name == 'pull_request') && + !contains(github.event.head_commit.message, '[skip db]')) || + contains(github.event.head_commit.message, '[latest db]') || + contains(github.event.head_commit.message, '[db]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Run MariaDB 10.6 database" + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mariadb up -d + env: + MARIADB_VERSION: 10.6 + - name: "Run tests" + run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + repository_mysql_5_7_28_tests: + name: Repository - MySQL 5.7.28 tests + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/')) && + github.event_name != 'pull_request' && + !contains(github.event.head_commit.message, '[skip db]')) || + contains(github.event.head_commit.message, '[db]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Run MySQL 5.7.28 database" + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mysql up -d + env: + MYSQL_VERSION: 5.7.28 + - name: "Run tests" + run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + repository_mysql_tests: + name: Repository - MySQL 8 tests + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/') || github.event_name == 'pull_request') && + !contains(github.event.head_commit.message, '[skip db]')) || + contains(github.event.head_commit.message, '[latest db]') || + contains(github.event.head_commit.message, '[db]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Run MySQL 8 database" + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mysql up -d + env: + MYSQL_VERSION: 8 + - name: "Run tests" + run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + repository_postgresql_tests: + name: Repository - PostgreSQL ${{ matrix.version }} tests + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/')) && + github.event_name != 'pull_request' && + !contains(github.event.head_commit.message, '[skip db]')) || + contains(github.event.head_commit.message, '[db]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + strategy: + fail-fast: false + matrix: + version: ['10.9', '11.12', '11.7', '12.4', '12.7', '13.1'] + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: Run PostgreSQL ${{ matrix.version }} database + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d + env: + POSTGRES_VERSION: ${{ matrix.version }} + - name: "Run tests" + run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + repository_postgresql_13_3_tests: + name: "Repository - PostgreSQL 13.3 tests" + runs-on: ubuntu-latest + needs: [prepare] + if: > + (!contains(github.event.head_commit.message, '[skip db]') || + contains(github.event.head_commit.message, '[latest db]') || + contains(github.event.head_commit.message, '[db]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Run PostgreSQL 13.3 database" + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d + env: + POSTGRES_VERSION: 13.3 + - name: "Run tests" + run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + repository_messaging_tests: + name: Repository - Messaging tests + runs-on: ubuntu-latest + needs: [prepare] + if: > + !contains(github.event.head_commit.message, '[skip repo]') && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Run ActiveMQ" + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile activemq up -d + - name: "Run tests" + run: mvn -B test -pl repository -am -Dtest=CamelRoutesTest,CamelComponentsTest -DfailIfNoTests=false + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + repository_app_context_test_suites: + name: Repository - ${{ matrix.testSuite }} + runs-on: ubuntu-latest + needs: [prepare] + if: > + !contains(github.event.head_commit.message, '[skip repo]') && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + strategy: + fail-fast: false + matrix: + include: + - testSuite: AppContext01TestSuite + compose-profile: with-transform-core-aio + - testSuite: AppContext02TestSuite + compose-profile: default + - testSuite: AppContext03TestSuite + compose-profile: with-transform-core-aio + - testSuite: AppContext04TestSuite + compose-profile: with-transform-core-aio + - testSuite: AppContext05TestSuite + compose-profile: default + mvn-options: '"-Didentity-service.auth-server-url=http://${HOST_IP}:8999/auth"' + - testSuite: AppContext06TestSuite + compose-profile: with-transform-core-aio + - testSuite: AppContextExtraTestSuite + compose-profile: with-transform-core-aio + - testSuite: MiscContextTestSuite + compose-profile: with-transform-core-aio + - testSuite: SearchTestSuite + compose-profile: default + mvn-options: '-Dindex.subsystem.name=solr6' + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Set transformers tag" + run: echo "TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout)" >> $GITHUB_ENV + - name: "Set up the environment" + run: | + if [ -e ./scripts/ci/tests/${{ matrix.testSuite }}-setup.sh ]; then + bash ./scripts/ci/tests/${{ matrix.testSuite }}-setup.sh + fi + docker-compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile ${{ matrix.compose-profile }} up -d + - name: "Run tests" + run: mvn -B test -pl repository -am -Dtest=${{ matrix.testSuite }} -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco ${{ matrix.mvn-options }} + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + tas_tests: + name: ${{ matrix.test-name }} + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/') || github.event_name == 'pull_request' ) && + !contains(github.event.head_commit.message, '[skip tas]')) || + contains(github.event.head_commit.message, '[tas]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + strategy: + fail-fast: false + matrix: + include: + - test-name: "REST API TAS tests part1" + pom-dir: tas-restapi + test-profile: run-restapi-part1 + - test-name: "REST API TAS tests part2" + pom-dir: tas-restapi + test-profile: run-restapi-part2 + - test-name: "REST API TAS tests part3" + pom-dir: tas-restapi + test-profile: run-restapi-part3 + - test-name: "CMIS TAS tests - BROWSER binding" + pom-dir: tas-cmis + test-profile: run-cmis-browser + - test-name: "CMIS TAS tests - ATOM binding" + pom-dir: tas-cmis + test-profile: run-cmis-atom + - test-name: "CMIS TAS tests - WEBSERVICES binding" + pom-dir: tas-cmis + test-profile: run-cmis-webservices + - test-name: "Email TAS tests" + pom-dir: tas-email + - test-name: "WebDAV TAS tests" + pom-dir: tas-webdav + - test-name: "Integration TAS tests" + pom-dir: tas-integration + env: + REQUIRES_LOCAL_IMAGES: true + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Build" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: | + bash ./scripts/ci/init.sh + bash ./scripts/ci/build.sh + - name: "Set up the environment" + run: | + ${{ env.TAS_SCRIPTS }}/start-compose.sh ${{ env.TAS_ENVIRONMENT }}/docker-compose-minimal+transforms.yml + ${{ env.TAS_SCRIPTS }}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" + - name: "Build TAS integration tests" + if: ${{ matrix.test-name }} == 'Integration TAS tests' + run: mvn install -pl :alfresco-community-repo-integration-test -am -DskipTests -Pall-tas-tests + - name: "Run tests" + id: tests + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: mvn -B verify -f packaging/tests/${{ matrix.pom-dir }}/pom.xml -Pall-tas-tests,${{ matrix.test-profile }} -Denvironment=default -DrunBugs=false + - name: "Print output after success" + if: ${{ always() && steps.tests.outcome == 'success' }} + run: ${TAS_SCRIPTS}/output_tests_run.sh "packaging/tests/${{ matrix.pom-dir }}" + - name: "Print output after failure" + if: ${{ always() && steps.tests.outcome == 'failure' }} + run: ${TAS_SCRIPTS}/output_logs_for_failures.sh "packaging/tests/${{ matrix.pom-dir }}" + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + share_services_test_suite: + name: Share Services - ShareServicesTestSuite + runs-on: ubuntu-latest + needs: [prepare] + if: > + !contains(github.event.head_commit.message, '[skip repo]') && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Init" + run: bash ./scripts/ci/init.sh + - name: "Run Postgres 14.4 database" + run: docker-compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile postgres up -d + - name: "Run tests" + run: mvn -B test -pl :alfresco-share-services -am -Dtest=ShareServicesTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + ags_postgresql_tests: + name: AGS Integration Tests 0${{ matrix.part }} (PostgreSQL) ${{ matrix.test-name }} + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/') || github.event_name == 'pull_request' ) && + !contains(github.event.head_commit.message, '[skip ags]')) || + contains(github.event.head_commit.message, '[ags]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + strategy: + fail-fast: false + matrix: + part: [1, 2, 3] + env: + REQUIRES_INSTALLED_ARTIFACTS: true + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Build" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: | + bash ./scripts/ci/init.sh + bash ./scripts/ci/build.sh + - name: "Verify" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: mvn --file amps/ags/pom.xml -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt${{ matrix.part }} ${{ env.LOG_WARN }} + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + ags_mysql_tests: + name: AGS Integration Tests 0${{ matrix.part }} (MySQL) ${{ matrix.test-name }} + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/') || github.event_name == 'pull_request' ) && + !contains(github.event.head_commit.message, '[skip ags]')) || + contains(github.event.head_commit.message, '[ags on MySQL]')) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + strategy: + fail-fast: false + matrix: + part: [1, 2, 3] + env: + REQUIRES_INSTALLED_ARTIFACTS: true + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Build" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: | + bash ./scripts/ci/init.sh + bash ./scripts/ci/build.sh + - name: "Verify" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: mvn --file amps/ags/pom.xml -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql -PagsAllTestSuitePt${{ matrix.part }} ${{ env.LOG_WARN }} + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + + ags_community_rest_api_tests: + name: "AGS Community Rest API Tests" + runs-on: ubuntu-latest + needs: [prepare] + if: > + (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/') || github.event_name == 'pull_request' ) && + !contains(github.event.head_commit.message, '[skip ags]') && !contains(github.event.head_commit.message, '[skip tas]')) || + (contains(github.event.head_commit.message, '[ags]') && contains(github.event.head_commit.message, '[tas]'))) && + !contains(github.event.head_commit.message, '[skip tests]') && + !contains(github.event.head_commit.message, '[force]') + env: + REQUIRES_LOCAL_IMAGES: true + steps: + - uses: actions/checkout@v3 + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + with: + java-version: "11" + - name: "Build" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: | + bash ./scripts/ci/init.sh + bash ./scripts/ci/build.sh + - name: "Set up the environment" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: | + ${{ env.TAS_SCRIPTS }}/start-compose.sh ./amps/ags/rm-community/rm-community-repo/docker-compose.yml + ${{ env.TAS_SCRIPTS }}/wait-for-alfresco-start.sh "http://localhost:8080/alfresco" + mvn -B install -pl :alfresco-governance-services-automation-community-rest-api -am -Pags -Pall-tas-tests -DskipTests + - name: "Test" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: mvn -B test -pl :alfresco-governance-services-automation-community-rest-api -Dskip.automationtests=false -Pags -Pall-tas-tests + - name: "Configure AWS credentials" + if: ${{ always() }} + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AGS_AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AGS_AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + - name: "Upload artifacts to Amazon S3 bucket" + if: ${{ always() }} + run: | + bash amps/ags/ci/scripts/getLogs.sh + aws s3 cp --acl private alfresco.log s3://ags-travis-artifacts/community/${{ github.run_number }}/AGS-Community-Rest-API-Tests/alfresco.log + aws s3 cp --acl private solr.log s3://ags-travis-artifacts/community/${{ github.run_number }}/AGS-Community-Rest-API-Tests/solr.log + aws s3 cp --acl private ./amps/ags/rm-automation/rm-automation-community-rest-api/target/reports/rm-automation-community-rest-api.log s3://ags-travis-artifacts/community/${{ github.run_number }}/AGS-Community-Rest-API-Tests/rm-automation-community-rest-api.log + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh diff --git a/.github/workflows/master_release.yml b/.github/workflows/master_release.yml new file mode 100644 index 0000000000..048fc98de3 --- /dev/null +++ b/.github/workflows/master_release.yml @@ -0,0 +1,79 @@ +name: Master/Release branch workflow + +on: + push: + branches: + - master + - release/** + +env: + GIT_USERNAME: ${{ secrets.BOT_GITHUB_USERNAME }} + GIT_EMAIL: ${{ secrets.BOT_GITHUB_EMAIL }} + GIT_PASSWORD: ${{ secrets.BOT_GITHUB_TOKEN }} + DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }} + MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }} + QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }} + QUAY_USERNAME: ${{ secrets.QUAY_USERNAME }} + GITHUB_ACTIONS_DEPLOY_TIMEOUT: 60 + +jobs: + run_ci: + uses: ./.github/workflows/ci.yml + secrets: inherit + push_to_nexus: + name: "Push to Nexus" + runs-on: ubuntu-latest + needs: [run_ci] + if: > + !failure() && + !contains(github.event.head_commit.message, '[no release]') && + github.event_name != 'pull_request' + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + - name: "Init" + run: bash ./scripts/ci/init.sh + - uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v1.33.0 + with: + username: ${{ env.GIT_USERNAME }} + email: ${{ env.GIT_EMAIL }} + global: true + - name: "Release" + timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} + run: | + bash scripts/ci/verify_release_tag.sh + bash scripts/ci/maven_release.sh + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh + update_downstream: + name: "Update alfresco-enterprise-repo" + runs-on: ubuntu-latest + needs: [push_to_nexus] + if: > + !failure() && + !contains(github.event.head_commit.message, '[no downstream]') && + github.event_name != 'pull_request' + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 + - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0 + - name: "Init" + run: bash ./scripts/ci/init.sh + - uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v1.33.0 + with: + username: ${{ env.GIT_USERNAME }} + email: ${{ env.GIT_EMAIL }} + global: true + - name: "Update downstream" + run: bash ./scripts/ci/update_downstream.sh + env: + COMMIT_MESSAGE: ${{ github.event.head_commit.message }} + - name: "Clean Maven cache" + run: bash ./scripts/ci/cleanup_cache.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c64cb12dbf..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,388 +0,0 @@ ---- -dist: focal -language: java -jdk: openjdk11 - -services: - - docker - -git: - depth: false - quiet: true - -cache: - directories: - - ${HOME}/.m2/repository - -# the cache can grow constantly -before_cache: bash scripts/travis/cleanup_cache.sh - -branches: - only: - - master - - /release\/.*/ - - /feature\/.*/ - - /fix\/.*/ - -env: - global: - - TAS_SCRIPTS=../alfresco-community-repo/packaging/tests/scripts - - TAS_ENVIRONMENT=./packaging/tests/environment - - LOG_WARN="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" - -stages: - - name: test - if: commit_message !~ /\[skip tests\]/ - - name: release - if: commit_message !~ /\[no release\]/ AND (branch = master OR branch =~ /release\/.*/) AND type != pull_request AND fork = false - - name: update_downstream - if: commit_message !~ /\[no downstream\]/ AND (branch = master OR branch =~ /release\/.*/) AND type != pull_request AND fork = false - -before_install: travis_retry bash scripts/travis/init.sh -install: travis_retry travis_wait 40 bash scripts/travis/build.sh - -jobs: - include: - - name: "Source Clear Scan (SCA)" - if: branch = master OR branch =~ /release\/.*/ - # Run Veracode - install: skip - script: travis_wait 30 bash scripts/travis/source_clear.sh - - - name: "Core, Data-Model, Repository - AllUnitTestsSuite - Build and test" - if: commit_message !~ /\[skip repo\]/ - script: - - travis_retry mvn -B test -pl core,data-model - - travis_retry mvn -B test -pl "repository,mmt" "-Dtest=AllUnitTestsSuite,AllMmtUnitTestSuite" - - - name: "Repository - AppContext01TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext01TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - AppContext02TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - AppContext03TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - AppContext04TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - AppContext05TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - mkdir -p "${HOME}/tmp" - - cp repository/src/test/resources/realms/alfresco-realm.json "${HOME}/tmp" - - export HOST_IP=$(hostname -I | cut -f1 -d' ') - - docker run -d -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e DB_VENDOR=h2 -p 8999:8080 -e KEYCLOAK_IMPORT=/tmp/alfresco-realm.json -v $HOME/tmp/alfresco-realm.json:/tmp/alfresco-realm.json alfresco/alfresco-identity-service:1.2 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext05TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco "-Didentity-service.auth-server-url=http://${HOST_IP}:8999/auth" - - - name: "Repository - AppContext06TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext06TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - AppContextExtraTestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContextExtraTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - MiscContextTestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl repository -Dtest=MiscContextTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - SearchTestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=SearchTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco -Dindex.subsystem.name=solr6 - - - name: "Repository - MariaDB 10.2.18 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.2.18 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver - - - name: "Repository - MariaDB 10.4 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.4 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver - - - name: "Repository - MariaDB 10.5 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.5 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver - - - name: "Repository - MariaDB 10.6 tests" - # We run tests on the latest version of MariaDB on pull requests plus the normal master and release branches - ignored on feature branches - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ - before_script: - - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.6 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver - - - name: "Repository - MySQL 5.7.28 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mysql:5.7.28 --transaction-isolation='READ-COMMITTED' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - MySQL 8 tests" - # We run tests on the latest version of MySQL on pull requests plus the normal master and release branches - ignored on feature branches - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ - before_script: - - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mysql:8 --transaction-isolation='READ-COMMITTED' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - PostgreSQL 10.9 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:10.9 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - PostgreSQL 11.7 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.7 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - PostgreSQL 11.12 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.12 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - PostgreSQL 12.4 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.4 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - PostgreSQL 12.7 tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.7 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - PostgreSQL 13.1 tests" - # We only run DB tests on the latest version of PostgreSQL on feature branches - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - PostgreSQL 13.3 tests" - # We only run DB tests on the latest version of PostgreSQL on feature branches - if: commit_message !~ /\[skip db\]/ OR commit_message =~ /\[latest db\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Repository - Messaging tests" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl repository -Dtest=CamelRoutesTest,CamelComponentsTest - - - name: "Remote-api - AppContext01TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext01TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Remote-api - AppContext02TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Remote-api - AppContext03TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Remote-api - AppContext04TestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 - script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "Remote-api - AppContextExtraTestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContextExtraTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "REST API TAS tests part1" - # TAS tests are generally skipped on feature branches as they will be repeated on the enterprise repo or community packaging builds - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part1 -Denvironment=default -DrunBugs=false - - - name: "REST API TAS tests part2" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part2 -Denvironment=default -DrunBugs=false - - - name: "REST API TAS tests part3" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part3 -Denvironment=default -DrunBugs=false - - - name: "CMIS TAS tests - BROWSER binding" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-browser -Denvironment=default -DrunBugs=false - - - name: "CMIS TAS tests - ATOM binding" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-atom -Denvironment=default -DrunBugs=false - - - name: "CMIS TAS tests - WEBSERVICES binding" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-webservices -Denvironment=default -DrunBugs=false - - - name: "Email TAS tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 30 mvn -B install -f packaging/tests/tas-email/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false - - - name: "WebDAV TAS tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 30 mvn -B install -f packaging/tests/tas-webdav/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false - - - name: "Integration TAS tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" - script: travis_wait 30 mvn -B install -f packaging/tests/tas-integration/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false - - - name: "Share Services - ShareServicesTestSuite" - if: commit_message !~ /\[skip repo\]/ - before_script: - - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' - script: travis_wait 20 mvn -B test -pl :alfresco-share-services -Dtest=ShareServicesTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - - - name: "AGS Unit & Integration Tests 01 (PostgreSQL)" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ - script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt1 -f amps/ags/pom.xml ${LOG_WARN} - - - name: "AGS Integration Tests 02 (PostgreSQL)" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ - script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} - - - name: "AGS Integration Tests 03 (PostgreSQL)" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ - script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt3 -f amps/ags/pom.xml ${LOG_WARN} - - - name: "AGS Unit & Integration Tests 01 (MySQL) " - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ - script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql -PagsAllTestSuitePt1 -f amps/ags/pom.xml ${LOG_WARN} - - - name: "AGS Integration Tests 02 (MySQL) " - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ - script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} - - - name: "AGS Integration Tests 03 (MySQL) " - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ - script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql -PagsAllTestSuitePt3 -f amps/ags/pom.xml ${LOG_WARN} - - - name: "AGS Community Rest API Tests" - if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ - addons: - artifacts: - paths: - - ./amps/ags/rm-automation/rm-automation-community-rest-api/target/reports/rm-automation-community-rest-api.log - - alfresco.log - - solr.log - target_paths: community/${TRAVIS_BUILD_NUMBER}/${TRAVIS_JOB_NAME} - before_script: - - ${TAS_SCRIPTS}/start-compose.sh ./amps/ags/rm-community/rm-community-repo/docker-compose.yml - - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8080/alfresco" - script: travis_wait 40 mvn -B test -pl :alfresco-governance-services-automation-community-rest-api -Dskip.automationtests=false -Pags - after_script: bash amps/ags/travis/scripts/getLogs.sh - - - name: "Push to Nexus" - stage: release - before_script: bash scripts/travis/verify_release_tag.sh - script: travis_wait 40 bash scripts/travis/maven_release.sh - - - name: "Update alfresco-enterprise-repo" - stage: update_downstream - install: skip - script: bash scripts/travis/update_downstream.sh - diff --git a/README.md b/README.md index 55508f952b..e573f4a960 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # alfresco-community-repo -[![Build Status](https://travis-ci.com/Alfresco/alfresco-community-repo.svg?branch=master)](https://travis-ci.com/Alfresco/alfresco-community-repo) +[![Build Status](https://github.com/Alfresco/alfresco-community-repo/actions/workflows/master_release.yml/badge.svg?branch=release/7.2.1)](https://github.com/Alfresco/alfresco-community-repo/actions/workflows/master_release.yml) #### Alfresco Core diff --git a/amps/ags/travis/scripts/getLogs.sh b/amps/ags/ci/scripts/getLogs.sh old mode 100644 new mode 100755 similarity index 100% rename from amps/ags/travis/scripts/getLogs.sh rename to amps/ags/ci/scripts/getLogs.sh diff --git a/packaging/tests/scripts/output_logs_for_failures.sh b/packaging/tests/scripts/output_logs_for_failures.sh new file mode 100755 index 0000000000..ed4f0453a5 --- /dev/null +++ b/packaging/tests/scripts/output_logs_for_failures.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +TAS_DIRECTORY=$1 + +cd ${TAS_DIRECTORY} + +failures=$(grep 'status="FAIL"' target/surefire-reports/testng-results.xml | sed 's|^.*[ ]name="\([^"]*\)".*$|\1|g') + +for failure in ${failures} +do + cat target/reports/alfresco-tas.log | sed '/STARTING Test: \['${failure}'\]/,/ENDING Test: \['${failure}'\]/!d;/ENDING Test: \['${failure}'\]/q' +done \ No newline at end of file diff --git a/packaging/tests/scripts/output_tests_run.sh b/packaging/tests/scripts/output_tests_run.sh new file mode 100755 index 0000000000..282e9d9807 --- /dev/null +++ b/packaging/tests/scripts/output_tests_run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +TAS_DIRECTORY=$1 + +cd ${TAS_DIRECTORY} + +cat target/reports/alfresco-tas.log | grep -a "*** STARTING" \ No newline at end of file diff --git a/packaging/tests/scripts/start-compose.sh b/packaging/tests/scripts/start-compose.sh index 96c5cacf20..00e3cc8a15 100755 --- a/packaging/tests/scripts/start-compose.sh +++ b/packaging/tests/scripts/start-compose.sh @@ -1,9 +1,21 @@ #!/usr/bin/env bash +set -x export DOCKER_COMPOSE_PATH=$1 -export CLEAN_UP="$2" +export DOCKER_COMPOSES="" +export CLEAN_UP="" -if [ -z "$DOCKER_COMPOSE_PATH" ] +for var in "$@" +do + if [ "$var" == "no-clean-up" ] + then + export CLEAN_UP="$var" + else + export DOCKER_COMPOSES+="--file $var " + fi +done + +if [ -z "$DOCKER_COMPOSES" ] then echo "Please provide path to docker-compose.yml: \"${0##*/} /path/to/docker-compose.yml\"" exit 1 @@ -15,8 +27,8 @@ fi # The second parameter can be used to avoid doing a clean up if we are doing a restart test. if [ "$CLEAN_UP" != "no-clean-up" ] then - docker-compose --file "${DOCKER_COMPOSE_PATH}" kill - docker-compose --file "${DOCKER_COMPOSE_PATH}" rm -f + docker-compose ${DOCKER_COMPOSES} --project-directory $(dirname "${DOCKER_COMPOSE_PATH}") kill + docker-compose ${DOCKER_COMPOSES} --project-directory $(dirname "${DOCKER_COMPOSE_PATH}") rm -f export GENERATED_IMAGES=$(docker images | grep '^environment_' | awk '{ print $3 }') if [ -n "$GENERATED_IMAGES" ] @@ -28,7 +40,7 @@ fi echo "Starting ACS stack in ${DOCKER_COMPOSE_PATH}" # .env files are picked up from project directory correctly on docker-compose 1.23.0+ -docker-compose --file "${DOCKER_COMPOSE_PATH}" --project-directory $(dirname "${DOCKER_COMPOSE_PATH}") up -d +docker-compose ${DOCKER_COMPOSES} --project-directory $(dirname "${DOCKER_COMPOSE_PATH}") up -d if [ $? -eq 0 ] then diff --git a/packaging/tests/tas-webdav/src/test/java/org/alfresco/webdav/WebDavTest.java b/packaging/tests/tas-webdav/src/test/java/org/alfresco/webdav/WebDavTest.java index f75eed0f92..ca71c0ab91 100644 --- a/packaging/tests/tas-webdav/src/test/java/org/alfresco/webdav/WebDavTest.java +++ b/packaging/tests/tas-webdav/src/test/java/org/alfresco/webdav/WebDavTest.java @@ -1,17 +1,25 @@ package org.alfresco.webdav; +import java.lang.reflect.Method; + import org.alfresco.utility.data.DataContent; import org.alfresco.utility.data.DataSite; import org.alfresco.utility.data.DataUser; +import org.alfresco.utility.LogFactory; import org.alfresco.utility.network.ServerHealth; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; +import org.slf4j.Logger; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; @ContextConfiguration("classpath:alfresco-webdav-context.xml") public abstract class WebDavTest extends AbstractTestNGSpringContextTests { + private static final Logger LOG = LogFactory.getLogger(); + @Autowired protected DataSite dataSite; @@ -36,4 +44,16 @@ public abstract class WebDavTest extends AbstractTestNGSpringContextTests // The webdav protocol is enabled by default. //webDavProtocol.assertThat().protocolIsEnabled(); } -} + + @BeforeMethod(alwaysRun=true) + public void showStartTestInfo(Method method) + { + LOG.info(String.format("*** STARTING Test: [%s] ***", method.getName())); + } + + @AfterMethod(alwaysRun=true) + public void showEndTestInfo(Method method) + { + LOG.info(String.format("*** ENDING Test: [%s] ***", method.getName())); + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6f92bf8145..60ab88bda2 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,7 @@ 5.23.0 5.23.0 1.4.15 + 2.5.7 6.2 0.0.13 diff --git a/scripts/ci/build.sh b/scripts/ci/build.sh new file mode 100644 index 0000000000..6b25a69374 --- /dev/null +++ b/scripts/ci/build.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +echo "=========================== Starting Build Script ===========================" +PS4="\[\e[35m\]+ \[\e[m\]" +set -vex +pushd "$(dirname "${BASH_SOURCE[0]}")/../../" + +source "$(dirname "${BASH_SOURCE[0]}")/build_functions.sh" + +if [[ -n ${BUILD_PROFILES} ]]; then + PROFILES="${BUILD_PROFILES}" +elif [[ "${REQUIRES_LOCAL_IMAGES}" == "true" ]]; then + PROFILES="-Pbuild-docker-images -Pags" +else + PROFILES="-Pags" +fi + +if [[ "${REQUIRES_INSTALLED_ARTIFACTS}" == "true" ]]; then + PHASE="install" +else + PHASE="package" +fi + +mvn -B -V $PHASE -DskipTests -Dmaven.javadoc.skip=true $PROFILES $BUILD_OPTIONS + +popd +set +vex +echo "=========================== Finishing Build Script ==========================" + diff --git a/scripts/travis/build_functions.sh b/scripts/ci/build_functions.sh similarity index 89% rename from scripts/travis/build_functions.sh rename to scripts/ci/build_functions.sh index be8247265f..cb72ee6852 100644 --- a/scripts/travis/build_functions.sh +++ b/scripts/ci/build_functions.sh @@ -2,18 +2,18 @@ set +vx function isPullRequestBuild() { - test "${TRAVIS_PULL_REQUEST}" != "false" + test "${PULL_REQUEST}" != "false" } function isBranchBuild() { - test "${TRAVIS_PULL_REQUEST}" = "false" + test "${PULL_REQUEST}" = "false" } function cloneRepo() { local REPO="${1}" local TAG_OR_BRANCH="${2}" - printf "Clonning \"%s\" on %s\n" "${TAG_OR_BRANCH}" "${REPO}" + printf "Cloning \"%s\" on %s\n" "${TAG_OR_BRANCH}" "${REPO}" # clone the repository branch/tag pushd "$(dirname "${BASH_SOURCE[0]}")/../../../" >/dev/null @@ -82,15 +82,9 @@ function remoteBranchExists() { function identifyUpstreamSourceBranch() { local UPSTREAM_REPO="${1}" - # if it's a pull request, use the source branch name (if it exists) - if isPullRequestBuild && remoteBranchExists "${UPSTREAM_REPO}" "${TRAVIS_PULL_REQUEST_BRANCH}" ; then - echo "${TRAVIS_PULL_REQUEST_BRANCH}" - exit 0 - fi - # otherwise use the current branch name (or in case of PRs, the target branch name) - if remoteBranchExists "${UPSTREAM_REPO}" "${TRAVIS_BRANCH}" ; then - echo "${TRAVIS_BRANCH}" + if remoteBranchExists "${UPSTREAM_REPO}" "${BRANCH_NAME}" ; then + echo "${BRANCH_NAME}" exit 0 fi @@ -190,4 +184,4 @@ function retieveLatestTag() { rm -rf "${LOCAL_PATH}" } -set -vx +set -vx \ No newline at end of file diff --git a/scripts/ci/cleanup_cache.sh b/scripts/ci/cleanup_cache.sh new file mode 100644 index 0000000000..2110f4901e --- /dev/null +++ b/scripts/ci/cleanup_cache.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -ev + +find "${HOME}/.m2/repository/" -type d -name "*-SNAPSHOT" | xargs -r -l rm -rf + diff --git a/scripts/ci/docker-compose/docker-compose-db.yaml b/scripts/ci/docker-compose/docker-compose-db.yaml new file mode 100644 index 0000000000..cba56639ae --- /dev/null +++ b/scripts/ci/docker-compose/docker-compose-db.yaml @@ -0,0 +1,40 @@ +version: "3" + +services: + postgres: + profiles: ["postgres"] + image: postgres:${POSTGRES_VERSION} + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 + ports: + - "5433:5432" + mariadb: + profiles: ["mariadb"] + image: mariadb:${MARIADB_VERSION} + command: --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci + environment: + - MYSQL_ROOT_PASSWORD=alfresco + - MYSQL_USER=alfresco + - MYSQL_DATABASE=alfresco + - MYSQL_PASSWORD=alfresco + ports: + - "3307:3306" + mysql: + profiles: ["mysql"] + image: mysql:${MYSQL_VERSION} + command: --transaction-isolation='READ-COMMITTED' + environment: + - MYSQL_ROOT_PASSWORD=alfresco + - MYSQL_USER=alfresco + - MYSQL_DATABASE=alfresco + - MYSQL_PASSWORD=alfresco + ports: + - "3307:3306" + activemq: + image: alfresco/alfresco-activemq:5.16.1 + ports: + - "5672:5672" # AMQP + - "61616:61616" # OpenWire \ No newline at end of file diff --git a/scripts/ci/docker-compose/docker-compose.yaml b/scripts/ci/docker-compose/docker-compose.yaml new file mode 100644 index 0000000000..dc72d49ef9 --- /dev/null +++ b/scripts/ci/docker-compose/docker-compose.yaml @@ -0,0 +1,26 @@ +version: "3" + +services: + transform-core-aio: + profiles: ["with-transform-core-aio"] + image: alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} + environment: + JAVA_OPTS: " -Xms256m -Xmx256m" + ports: + - "8090:8090" + postgres: + image: postgres:13.3 + profiles: ["default", "with-transform-core-aio", "postgres"] + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + command: postgres -c max_connections=300 + ports: + - "5433:5432" + activemq: + profiles: ["default", "with-transform-core-aio", "activemq"] + image: alfresco/alfresco-activemq:5.16.1 + ports: + - "5672:5672" # AMQP + - "61616:61616" # OpenWire \ No newline at end of file diff --git a/scripts/travis/init.sh b/scripts/ci/init.sh similarity index 87% rename from scripts/travis/init.sh rename to scripts/ci/init.sh index ca1081746b..c806257f83 100644 --- a/scripts/travis/init.sh +++ b/scripts/ci/init.sh @@ -5,7 +5,6 @@ set -vex pushd "$(dirname "${BASH_SOURCE[0]}")/../../" # Maven Setup -mkdir -p "${HOME}/.m2" && cp -f .travis.settings.xml "${HOME}/.m2/settings.xml" find "${HOME}/.m2/repository/" -type d -name "*-SNAPSHOT*" | xargs -r -l rm -rf # Docker Logins diff --git a/scripts/travis/maven_release.sh b/scripts/ci/maven_release.sh similarity index 83% rename from scripts/travis/maven_release.sh rename to scripts/ci/maven_release.sh index d4db16324f..752bed2b1c 100755 --- a/scripts/travis/maven_release.sh +++ b/scripts/ci/maven_release.sh @@ -4,23 +4,19 @@ PS4="\[\e[35m\]+ \[\e[m\]" set -vex pushd "$(dirname "${BASH_SOURCE[0]}")/../../" - # Use full history for release -git checkout -B "${TRAVIS_BRANCH}" -# Add email to link commits to user -git config user.email "${GIT_EMAIL}" +git checkout -B "${BRANCH_NAME}" # Run the release plugin - with "[skip ci]" in the release commit message mvn -B \ -Pall-tas-tests \ -Pags \ - "-Darguments=-Pall-tas-tests -Pags -DskipTests -Dbuild-number=${TRAVIS_BUILD_NUMBER}" \ + "-Darguments=-Pall-tas-tests -Pags -DskipTests -Dbuild-number=${BUILD_NUMBER}" \ release:clean release:prepare release:perform \ -DscmCommentPrefix="[maven-release-plugin][skip ci] " \ -Dusername="${GIT_USERNAME}" \ -Dpassword="${GIT_PASSWORD}" - popd set +vex echo "=========================== Finishing Release Script ==========================" diff --git a/scripts/ci/prepare.sh b/scripts/ci/prepare.sh new file mode 100755 index 0000000000..709a570d00 --- /dev/null +++ b/scripts/ci/prepare.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -e + +M2_REPO_DIR="$HOME/.m2/repository" +M2_REPO_TTL_MINUTES=10080 +M2_REPO_EXPIRED="$(find $M2_REPO_DIR -type f -mmin +$M2_REPO_TTL_MINUTES 2>/dev/null | head -n 1 | wc -l)" +M2_REPO_FILE_COUNT="$(find $M2_REPO_DIR -type f 2>/dev/null | wc -l)" + +ORG_ALFRESCO_M2_REPO_DIR="$M2_REPO_DIR/org/alfresco" +ORG_ALFRESCO_M2_REPO_TTL_MINUTES=1440 +ORG_ALFRESCO_M2_REPO_EXPIRED="$(find $ORG_ALFRESCO_M2_REPO_DIR -type f -mmin +$ORG_ALFRESCO_M2_REPO_TTL_MINUTES 2>/dev/null | head -n 1 | wc -l)" + +echo "Files in the maven repo: $M2_REPO_FILE_COUNT" + +if [ $ORG_ALFRESCO_M2_REPO_EXPIRED -eq 1 ];then + echo "Invalidating org/alfresco maven local cache." + rm -rf "$ORG_ALFRESCO_M2_REPO_DIR" +fi + +if [ $M2_REPO_EXPIRED -eq 1 ];then + echo "Invalidating maven local cache." + rm -rf "$M2_REPO_DIR" +fi + +echo "Verifying compilation and ensuring maven cache populated." +export BUILD_PROFILES="-Pall-tas-tests,ags" +export BUILD_OPTIONS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.artifact.threads=8" +source "$(dirname "${BASH_SOURCE[0]}")/build.sh" diff --git a/scripts/ci/tests/AppContext05TestSuite-setup.sh b/scripts/ci/tests/AppContext05TestSuite-setup.sh new file mode 100644 index 0000000000..c8458de3c8 --- /dev/null +++ b/scripts/ci/tests/AppContext05TestSuite-setup.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +echo "=========================== Starting AppContext05TestSuite setup ===========================" +PS4="\[\e[35m\]+ \[\e[m\]" +set -vex +pushd "$(dirname "${BASH_SOURCE[0]}")/../../../" + +mkdir -p "${HOME}/tmp" +cp repository/src/test/resources/realms/alfresco-realm.json "${HOME}/tmp" +echo "HOST_IP=$(hostname -I | cut -f1 -d' ')" >> $GITHUB_ENV +docker run -d -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e DB_VENDOR=h2 -p 8999:8080 -e KEYCLOAK_IMPORT=/tmp/alfresco-realm.json -v $HOME/tmp/alfresco-realm.json:/tmp/alfresco-realm.json alfresco/alfresco-identity-service:1.2 + +popd +set +vex +echo "=========================== Finishing AppContext05TestSuite setup ==========================" \ No newline at end of file diff --git a/scripts/travis/update_downstream.sh b/scripts/ci/update_downstream.sh similarity index 70% rename from scripts/travis/update_downstream.sh rename to scripts/ci/update_downstream.sh index c81e0ac547..53c9cac26a 100644 --- a/scripts/travis/update_downstream.sh +++ b/scripts/ci/update_downstream.sh @@ -6,9 +6,9 @@ pushd "$(dirname "${BASH_SOURCE[0]}")/../../" source "$(dirname "${BASH_SOURCE[0]}")/build_functions.sh" -#Fetch the latest changes, as Travis will only checkout the PR commit -git fetch origin "${TRAVIS_BRANCH}" -git checkout "${TRAVIS_BRANCH}" +#Fetch the latest changes, as GHA will only checkout the PR commit +git fetch origin "${BRANCH_NAME}" +git checkout "${BRANCH_NAME}" git pull # Retrieve the current Community version - latest tag on the current branch @@ -16,7 +16,7 @@ VERSION="$(git describe --abbrev=0 --tags)" DOWNSTREAM_REPO="github.com/Alfresco/alfresco-enterprise-repo.git" -cloneRepo "${DOWNSTREAM_REPO}" "${TRAVIS_BRANCH}" +cloneRepo "${DOWNSTREAM_REPO}" "${BRANCH_NAME}" cd "$(dirname "${BASH_SOURCE[0]}")/../../../$(basename "${DOWNSTREAM_REPO%.git}")" @@ -33,7 +33,11 @@ git status git --no-pager diff pom.xml git add pom.xml -if git status --untracked-files=no --porcelain | grep -q '^' ; then +if [[ "${COMMIT_MESSAGE}" =~ \[force[^\]]*\] ]]; then + FORCE_TOKEN=$(echo "${COMMIT_MESSAGE}" | sed "s|^.*\(\[force[^]]*\]\).*$|\1|g") + git commit --allow-empty -m "${FORCE_TOKEN} Update upstream version to ${VERSION}" + git push +elif git status --untracked-files=no --porcelain | grep -q '^' ; then git commit -m "Update upstream version to ${VERSION}" git push else diff --git a/scripts/travis/verify_release_tag.sh b/scripts/ci/verify_release_tag.sh similarity index 100% rename from scripts/travis/verify_release_tag.sh rename to scripts/ci/verify_release_tag.sh diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh deleted file mode 100644 index 02a9541850..0000000000 --- a/scripts/travis/build.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -echo "=========================== Starting Build Script ===========================" -PS4="\[\e[35m\]+ \[\e[m\]" -set -vex -pushd "$(dirname "${BASH_SOURCE[0]}")/../../" - -source "$(dirname "${BASH_SOURCE[0]}")/build_functions.sh" - - -# Build the current project -mvn -B -V install -DskipTests -Dmaven.javadoc.skip=true -Pbuild-docker-images -Pags - - -popd -set +vex -echo "=========================== Finishing Build Script ==========================" - diff --git a/scripts/travis/cleanup_cache.sh b/scripts/travis/cleanup_cache.sh deleted file mode 100644 index e7439e121b..0000000000 --- a/scripts/travis/cleanup_cache.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -set -ev - -rm -rf "${HOME}/.m2/repository/org/alfresco/acs-community-packaging" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-community-repo" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-community-repo-*" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-core" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-data-model" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-remote-api" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-repo-*" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-repository" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-remote-api" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-repository" -rm -rf "${HOME}/.m2/repository/org/alfresco/content-services" -rm -rf "${HOME}/.m2/repository/org/alfresco/content-services*" -rm -rf "${HOME}/.m2/repository/org/alfresco/content-services-community" -rm -rf "${HOME}/.m2/repository/org/alfresco/tas/alfresco-community-repo-*-test" -rm -rf "${HOME}/.m2/repository/org/alfresco/tas/alfresco-enterprise-repo-*-test" -rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-governance-services*" - diff --git a/scripts/travis/source_clear.sh b/scripts/travis/source_clear.sh deleted file mode 100755 index babb8e7f3e..0000000000 --- a/scripts/travis/source_clear.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash - -echo "=========================== Starting SourceClear Script ===========================" -PS4="\[\e[35m\]+ \[\e[m\]" -set +e -v -x -pushd "$(dirname "${BASH_SOURCE[0]}")/../../" - -mvn -B -q clean install \ - -DskipTests \ - -Dmaven.javadoc.skip=true \ - com.srcclr:srcclr-maven-plugin:scan \ - -Dcom.srcclr.apiToken=${SRCCLR_API_TOKEN} > scan.log - -SUCCESS=$? # this will read exit code of the previous command - -if [ -z "$VERACODE_FAILS_BUILD" ] || [ "$VERACODE_FAILS_BUILD" = false ] ; then - SUCCESS=0 -fi - -cat scan.log | grep -e 'Full Report Details' -e 'Failed' - -popd -set +vex -echo "=========================== Finishing SourceClear Script ==========================" - -exit ${SUCCESS} \ No newline at end of file