diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 969a1d983c..291e160a33 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,20 +46,14 @@ jobs: - name: "Clean Maven cache" run: bash ./scripts/ci/cleanup_cache.sh - repository_postgresql_tests: - name: "Repository - PostgreSQL ${{ matrix.version }} tests" + 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 db]')) || - contains(github.event.head_commit.message, '[db]')) && + ((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]') - strategy: - fail-fast: false - matrix: - version: [ '10.9', '11.7', '11.12', '12.4', '12.7', '13.1' ] steps: - uses: actions/checkout@v3 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0 @@ -68,23 +62,19 @@ jobs: 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 + - 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 - repository_postgresql_latest_tests: - name: "Repository - PostgreSQL 13.3 tests" + 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 db]') || - contains(github.event.head_commit.message, '[latest db]') || - contains(github.event.head_commit.message, '[db]')) && + !contains(github.event.head_commit.message, '[skip repo]') && !contains(github.event.head_commit.message, '[skip tests]') && !contains(github.event.head_commit.message, '[force]') steps: @@ -95,126 +85,10 @@ jobs: 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_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', '10.6' ] - 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_latest_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_8_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 + run: | + mvn -B test -pl core,data-model -am -DfailIfNoTests=false + mvn -B test -pl repository -am -Dtest=AllUnitTestsSuite -DfailIfNoTests=false - name: "Clean Maven cache" run: bash ./scripts/ci/cleanup_cache.sh @@ -253,6 +127,8 @@ jobs: 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" @@ -260,6 +136,204 @@ jobs: - 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 @@ -300,6 +374,8 @@ jobs: 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 @@ -311,57 +387,10 @@ jobs: - 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 -am -Dtest=AllUnitTestsSuite -DfailIfNoTests=false - - 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 - tas_tests: name: ${{ matrix.test-name }} runs-on: ubuntu-latest needs: [prepare] - # TAS tests are generally skipped on feature branches as they will be repeated on the enterprise repo or community packaging builds if: > (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/') || github.event_name == 'pull_request' ) && !contains(github.event.head_commit.message, '[skip tas]')) || @@ -375,36 +404,27 @@ jobs: - test-name: "REST API TAS tests part1" pom-dir: tas-restapi test-profile: run-restapi-part1 - docker-compose: docker-compose-minimal+transforms.yml - test-name: "REST API TAS tests part2" pom-dir: tas-restapi test-profile: run-restapi-part2 - docker-compose: docker-compose-minimal+transforms.yml - test-name: "REST API TAS tests part3" pom-dir: tas-restapi test-profile: run-restapi-part3 - docker-compose: docker-compose-minimal+transforms.yml - test-name: "CMIS TAS tests - BROWSER binding" pom-dir: tas-cmis test-profile: run-cmis-browser - docker-compose: docker-compose-minimal+transforms.yml - test-name: "CMIS TAS tests - ATOM binding" pom-dir: tas-cmis test-profile: run-cmis-atom - docker-compose: docker-compose-minimal+transforms.yml - test-name: "CMIS TAS tests - WEBSERVICES binding" pom-dir: tas-cmis test-profile: run-cmis-webservices - docker-compose: docker-compose-minimal+transforms.yml - test-name: "Email TAS tests" pom-dir: tas-email - docker-compose: docker-compose-minimal.yml - test-name: "WebDAV TAS tests" pom-dir: tas-webdav - docker-compose: docker-compose-minimal.yml - test-name: "Integration TAS tests" pom-dir: tas-integration - docker-compose: docker-compose-minimal.yml env: REQUIRES_LOCAL_IMAGES: true steps: @@ -420,12 +440,21 @@ jobs: bash ./scripts/ci/build.sh - name: "Set up the environment" run: | - ${{ env.TAS_SCRIPTS }}/start-compose.sh ${{ env.TAS_ENVIRONMENT }}/${{ matrix.docker-compose }} + ${{ 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 install -f packaging/tests/${{ matrix.pom-dir }}/pom.xml -Pall-tas-tests,${{ matrix.test-profile }} -Denvironment=default -DrunBugs=false + 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 @@ -455,7 +484,7 @@ jobs: ags_postgresql_tests: name: AGS Integration Tests 0${{ matrix.part }} (PostgreSQL) ${{ matrix.test-name }} runs-on: ubuntu-latest - needs: [ prepare ] + 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]')) || @@ -465,7 +494,7 @@ jobs: strategy: fail-fast: false matrix: - part: [ 1, 2, 3 ] + part: [1, 2, 3] env: REQUIRES_INSTALLED_ARTIFACTS: true steps: @@ -488,7 +517,7 @@ jobs: ags_mysql_tests: name: AGS Integration Tests 0${{ matrix.part }} (MySQL) ${{ matrix.test-name }} runs-on: ubuntu-latest - needs: [ prepare ] + 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]')) || @@ -498,7 +527,7 @@ jobs: strategy: fail-fast: false matrix: - part: [ 1, 2, 3 ] + part: [1, 2, 3] env: REQUIRES_INSTALLED_ARTIFACTS: true steps: @@ -550,9 +579,19 @@ jobs: - 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: "Get logs" + - 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 index a74b154478..5c4f0d539e 100644 --- a/.github/workflows/master_release.yml +++ b/.github/workflows/master_release.yml @@ -80,4 +80,4 @@ jobs: env: COMMIT_MESSAGE: ${{ github.event.head_commit.message }} - name: "Clean Maven cache" - run: bash ./scripts/ci/cleanup_cache.sh \ No newline at end of file + run: bash ./scripts/ci/cleanup_cache.sh diff --git a/amps/ags/ci/scripts/getLogs.sh b/amps/ags/ci/scripts/getLogs.sh old mode 100644 new mode 100755 diff --git a/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplans/FilePlanTests.java b/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplans/FilePlanTests.java index e95a24f527..aa9314c49a 100644 --- a/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplans/FilePlanTests.java +++ b/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplans/FilePlanTests.java @@ -142,7 +142,7 @@ public class FilePlanTests extends BaseRMRestTest * Then I am given the details of the file plan * */ - @Test + @Test(enabled = false) public void getFilePlanWhenRMIsCreated() { // Create RM Site if doesn't exist @@ -164,7 +164,7 @@ public class FilePlanTests extends BaseRMRestTest * Then I am given the allowableOperations property with the update and create operations. * */ - @Test + @Test(enabled = false) public void includeAllowableOperations() { // Check the list of allowableOperations returned 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 5f4ddeb7b4..5836f9594d 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,7 @@ 5.23.0 5.23.0 1.4.0 + 2.5.6 6.2 0.0.13 diff --git a/scripts/ci/build.sh b/scripts/ci/build.sh index 02a9541850..6b25a69374 100644 --- a/scripts/ci/build.sh +++ b/scripts/ci/build.sh @@ -6,10 +6,21 @@ 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 -# Build the current project -mvn -B -V install -DskipTests -Dmaven.javadoc.skip=true -Pbuild-docker-images -Pags +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 diff --git a/scripts/ci/build_functions.sh b/scripts/ci/build_functions.sh index 103ed2e0ee..cb72ee6852 100644 --- a/scripts/ci/build_functions.sh +++ b/scripts/ci/build_functions.sh @@ -184,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 index e7439e121b..2110f4901e 100644 --- a/scripts/ci/cleanup_cache.sh +++ b/scripts/ci/cleanup_cache.sh @@ -1,20 +1,5 @@ #!/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*" +find "${HOME}/.m2/repository/" -type d -name "*-SNAPSHOT" | xargs -r -l rm -rf diff --git a/scripts/ci/docker-compose/docker-compose.yaml b/scripts/ci/docker-compose/docker-compose.yaml index 8efe69e113..374d5c81c9 100644 --- a/scripts/ci/docker-compose/docker-compose.yaml +++ b/scripts/ci/docker-compose/docker-compose.yaml @@ -3,7 +3,7 @@ version: "3" services: transform-core-aio: profiles: ["with-transform-core-aio"] - image: alfresco/alfresco-transform-core-aio:2.5.6 + image: alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} environment: JAVA_OPTS: " -Xms256m -Xmx256m" ports: diff --git a/scripts/ci/init.sh b/scripts/ci/init.sh index 47b1fc1bb7..f5416fef06 100644 --- a/scripts/ci/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 .ci.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/ci/maven_release.sh b/scripts/ci/maven_release.sh index d4db16324f..752bed2b1c 100755 --- a/scripts/ci/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 index 454151de31..709a570d00 100644 --- a/scripts/ci/prepare.sh +++ b/scripts/ci/prepare.sh @@ -23,9 +23,7 @@ if [ $M2_REPO_EXPIRED -eq 1 ];then rm -rf "$M2_REPO_DIR" fi -if [ $M2_REPO_FILE_COUNT -lt 1000 ] || [ $ORG_ALFRESCO_M2_REPO_EXPIRED -eq 1 ] || [ $M2_REPO_EXPIRED -eq 1 ];then - echo "Populating maven cache." - 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" -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/update_downstream.sh b/scripts/ci/update_downstream.sh index c81e0ac547..53c9cac26a 100644 --- a/scripts/ci/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