diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 4ee9d703370c..000000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,679 +0,0 @@ -name: ci - -on: - push: - branches: - - master - pull_request: - paths-ignore: - - 'docs/**' - -env: - # An envar that signals to tests we are executing in the CI environment - CONTINUOUS_INTEGRATION: true - # allow overriding Maven command - MAVEN: ./mvnw - # maven.wagon.rto is in millis, defaults to 30m - MAVEN_OPTS: "-Xmx512M -XX:+ExitOnOutOfMemoryError -Dmaven.wagon.rto=60000" - MAVEN_INSTALL_OPTS: "-Xmx3G -XX:+ExitOnOutOfMemoryError -Dmaven.wagon.rto=60000" - MAVEN_FAST_INSTALL: "-B --strict-checksums -V --quiet -T C1 -DskipTests -Dmaven.source.skip=true -Dair.check.skip-all -P gib -Dgib.referenceBranch=refs/remotes/origin/${{ github.event.pull_request.base.ref }}" - MAVEN_TEST: "-B --strict-checksums -Dmaven.source.skip=true -Dair.check.skip-all --fail-at-end -P gib -Dgib.referenceBranch=refs/remotes/origin/${{ github.event.pull_request.base.ref }}" - RETRY: .github/bin/retry - # Testcontainers kills image pulls if they don't make progress for > 30s and retries for 2m before failing. This means - # that if an image doesn't download all it's layers within ~2m then any other concurrent pull will be killed because - # the Docker daemon only downloads 3 layers concurrently which prevents the other pull from making any progress. - # This value should be greater than the time taken for the longest image pull. - TESTCONTAINERS_PULL_PAUSE_TIMEOUT: 600 - TEST_REPORT_RETENTION_DAYS: 5 - -# Cancel previous PR builds. -concurrency: - # Cancel all workflow runs except latest within a concurrency group. This is achieved by defining a concurrency group for the PR. - # Non-PR builds have singleton concurrency groups. - group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.number || github.sha }} - cancel-in-progress: true - -jobs: - maven-checks: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java-version: - - 11 - - 17 - timeout-minutes: 45 - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits, as the build result depends on `git describe` equivalent - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: ${{ matrix.java-version }} - cache: 'maven' - - name: Configure Problem Matchers - run: echo "::add-matcher::.github/problem-matcher.json" - - name: Maven Checks - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY $MAVEN clean install -B --strict-checksums -V -T C1 -DskipTests -P ci -pl '!:trino-server-rpm' - - name: Test Server RPM - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY bash -c "$MAVEN verify -B --strict-checksums -P ci -pl :trino-server-rpm || find core/trino-server-rpm/ -exec ls -ald {} +" - - name: Clean Maven Output - run: $MAVEN clean -pl '!:trino-server,!:trino-cli' - - uses: docker/setup-qemu-action@v1 - with: - platforms: arm64 - - name: Test Docker Image - run: core/docker/build-local.sh - - error-prone-checks: - runs-on: ubuntu-latest - timeout-minutes: 45 - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits to be able to determine merge base for GIB - - name: Fetch base ref to find merge-base for GIB - run: .github/bin/git-fetch-base-ref.sh - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - cache: 'maven' - - name: Configure Problem Matchers - run: echo "::add-matcher::.github/problem-matcher.json" - - name: Maven Install - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY $MAVEN clean install ${MAVEN_FAST_INSTALL} -pl '!:trino-docs,!:trino-server,!:trino-server-rpm' - - name: Error Prone Checks - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - # Run Error Prone on one module with a retry to ensure all runtime dependencies are fetched - $RETRY $MAVEN ${MAVEN_TEST} -T C1 clean test-compile -P gib,errorprone-compiler -pl ':trino-spi' - # The main Error Prone run - $MAVEN ${MAVEN_TEST} -T C1 clean test-compile -P gib,errorprone-compiler \ - -pl '!:trino-docs,!:trino-server,!:trino-server-rpm' - - web-ui-checks: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits: it's not needed here, but it's needed almost always, so let's do this for completeness - - name: Web UI Checks - run: core/trino-main/bin/check_webui.sh - - test-jdbc-compatibility: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout tags so version in Manifest is set properly - - name: Fetch base ref to find merge-base for GIB - run: .github/bin/git-fetch-base-ref.sh - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - cache: 'maven' - - name: Configure Problem Matchers - run: echo "::add-matcher::.github/problem-matcher.json" - - name: Maven Install - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY $MAVEN clean install ${MAVEN_FAST_INSTALL} -pl '!:trino-docs,!:trino-server,!:trino-server-rpm' - - name: Test old JDBC vs current server - run: | - if [ ! -f gib-impacted.log ] || grep -q testing/trino-test-jdbc-compatibility-old-driver gib-impacted.log; then - testing/trino-test-jdbc-compatibility-old-driver/bin/run_tests.sh - fi - - name: Test current JDBC vs old server - if: always() - run: | - if [ ! -f gib-impacted.log ] || grep -q testing/trino-test-jdbc-compatibility-old-server gib-impacted.log; then - $MAVEN test ${MAVEN_TEST} -pl :trino-test-jdbc-compatibility-old-server - fi - - name: Upload test results - uses: actions/upload-artifact@v2 - # Upload all test reports only on failure, because the artifacts are large - if: failure() - with: - name: result ${{ github.job }} - path: | - **/target/surefire-reports - **/target/checkstyle-* - - name: Upload test report - uses: actions/upload-artifact@v2 - # Always upload the test report for the annotate.yml workflow, - # but only the single XML file to keep the artifact small - if: always() - with: - # Name prefix is checked in the `Annotate checks` workflow - name: test report ${{ github.job }} - path: | - **/surefire-reports/TEST-*.xml - retention-days: ${{ env.TEST_REPORT_RETENTION_DAYS }} - - hive-tests: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - config: - - config-empty - - config-hdp3 - # TODO: config-cdh5 - # TODO: config-apache-hive3 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits to be able to determine merge base for GIB - - name: Fetch base ref to find merge-base for GIB - run: .github/bin/git-fetch-base-ref.sh - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - cache: 'maven' - - name: Configure Problem Matchers - run: echo "::add-matcher::.github/problem-matcher.json" - - name: Install Hive Module - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY $MAVEN clean install ${MAVEN_FAST_INSTALL} -am -pl :trino-hive-hadoop2 - - name: Run Hive Tests - run: | - source plugin/trino-hive-hadoop2/conf/hive-tests-${{ matrix.config }}.sh && - plugin/trino-hive-hadoop2/bin/run_hive_tests.sh - - name: Run Hive S3 Tests - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESSKEY }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRETKEY }} - S3_BUCKET: "presto-ci-test" - S3_BUCKET_ENDPOINT: "s3.us-east-2.amazonaws.com" - run: | - if [ "${AWS_ACCESS_KEY_ID}" != "" ]; then - source plugin/trino-hive-hadoop2/conf/hive-tests-${{ matrix.config }}.sh && - plugin/trino-hive-hadoop2/bin/run_hive_s3_tests.sh - fi - - name: Run Hive Glue Tests - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESSKEY }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRETKEY }} - AWS_REGION: us-east-2 - run: | - if [ "${AWS_ACCESS_KEY_ID}" != "" ]; then - $MAVEN test ${MAVEN_TEST} -pl :trino-hive -P test-hive-glue - fi - - name: Run Hive Azure ABFS Access Key Tests - if: matrix.config != 'config-empty' # Hive 1.x does not support Azure storage - env: - ABFS_CONTAINER: ${{ secrets.AZURE_ABFS_CONTAINER }} - ABFS_ACCOUNT: ${{ secrets.AZURE_ABFS_ACCOUNT }} - ABFS_ACCESS_KEY: ${{ secrets.AZURE_ABFS_ACCESSKEY }} - run: | - if [ "${ABFS_CONTAINER}" != "" ]; then - source plugin/trino-hive-hadoop2/conf/hive-tests-${{ matrix.config }}.sh && - plugin/trino-hive-hadoop2/bin/run_hive_abfs_access_key_tests.sh - fi - - name: Run Hive Azure ABFS OAuth Tests - if: matrix.config != 'config-empty' # Hive 1.x does not support Azure storage - env: - ABFS_CONTAINER: ${{ secrets.AZURE_ABFS_CONTAINER }} - ABFS_ACCOUNT: ${{ secrets.AZURE_ABFS_ACCOUNT }} - ABFS_OAUTH_ENDPOINT: ${{ secrets.AZURE_ABFS_OAUTH_ENDPOINT }} - ABFS_OAUTH_CLIENTID: ${{ secrets.AZURE_ABFS_OAUTH_CLIENTID }} - ABFS_OAUTH_SECRET: ${{ secrets.AZURE_ABFS_OAUTH_SECRET }} - run: | - if [ -n "$ABFS_CONTAINER" ]; then - source plugin/trino-hive-hadoop2/conf/hive-tests-${{ matrix.config }}.sh && - plugin/trino-hive-hadoop2/bin/run_hive_abfs_oauth_tests.sh - fi - - name: Run Hive Azure WASB Tests - if: matrix.config != 'config-empty' # Hive 1.x does not support Azure storage - env: - WASB_CONTAINER: ${{ secrets.AZURE_WASB_CONTAINER }} - WASB_ACCOUNT: ${{ secrets.AZURE_WASB_ACCOUNT }} - WASB_ACCESS_KEY: ${{ secrets.AZURE_WASB_ACCESSKEY }} - run: | - if [ "${WASB_CONTAINER}" != "" ]; then - source plugin/trino-hive-hadoop2/conf/hive-tests-${{ matrix.config }}.sh && - plugin/trino-hive-hadoop2/bin/run_hive_wasb_tests.sh - fi - - name: Run Hive Azure ADL Tests - if: matrix.config != 'config-empty' # Hive 1.x does not support Azure storage - env: - ADL_NAME: ${{ secrets.AZURE_ADL_NAME }} - ADL_CLIENT_ID: ${{ secrets.AZURE_ADL_CLIENTID }} - ADL_CREDENTIAL: ${{ secrets.AZURE_ADL_CREDENTIAL }} - ADL_REFRESH_URL: ${{ secrets.AZURE_ADL_REFRESHURL }} - run: | - if [ "${ADL_NAME}" != "" ]; then - source plugin/trino-hive-hadoop2/conf/hive-tests-${{ matrix.config }}.sh && - plugin/trino-hive-hadoop2/bin/run_hive_adl_tests.sh - fi - - name: Run Hive Alluxio Tests - run: | - source plugin/trino-hive-hadoop2/conf/hive-tests-${{ matrix.config }}.sh && - plugin/trino-hive-hadoop2/bin/run_hive_alluxio_tests.sh - - name: Upload test results - uses: actions/upload-artifact@v2 - # Upload all test reports only on failure, because the artifacts are large - if: failure() - with: - name: result ${{ github.job }} - path: | - **/target/surefire-reports - **/target/checkstyle-* - - name: Upload test report - uses: actions/upload-artifact@v2 - # Always upload the test report for the annotate.yml workflow, - # but only the single XML file to keep the artifact small - if: always() - with: - # Name prefix is checked in the `Annotate checks` workflow - name: test report ${{ github.job }} (${{ matrix.config }}) - path: | - **/surefire-reports/TEST-*.xml - retention-days: ${{ env.TEST_REPORT_RETENTION_DAYS }} - - test-other-modules: - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits to be able to determine merge base for GIB - - name: Fetch base ref to find merge-base for GIB - run: .github/bin/git-fetch-base-ref.sh - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - cache: 'maven' - - name: Configure Problem Matchers - run: echo "::add-matcher::.github/problem-matcher.json" - - name: Maven Install - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY $MAVEN clean install ${MAVEN_FAST_INSTALL} -pl '!:trino-docs,!:trino-server,!:trino-server-rpm' - - name: Maven Tests - run: | - $MAVEN test ${MAVEN_TEST} -pl ' - !:trino-main, - !:trino-tests, - !:trino-raptor-legacy, - !:trino-accumulo, - !:trino-cassandra, - !:trino-clickhouse, - !:trino-delta-lake, - !:trino-hive, - !:trino-elasticsearch, - !:trino-mongodb, - !:trino-kafka, - !:trino-pinot, - !:trino-redis, - !:trino-mysql, - !:trino-postgresql, - !:trino-sqlserver, - !:trino-oracle, - !:trino-kudu, - !:trino-druid, - !:trino-iceberg, - !:trino-phoenix,!:trino-phoenix5, - !:trino-jdbc,!:trino-base-jdbc,!:trino-thrift,!:trino-memory, - !:trino-docs,!:trino-server,!:trino-server-rpm, - !:trino-test-jdbc-compatibility-old-server, - !:trino-singlestore, - !:trino-bigquery' - - name: Upload test results - uses: actions/upload-artifact@v2 - # Upload all test reports only on failure, because the artifacts are large - if: failure() - with: - name: result ${{ github.job }} - path: | - **/target/surefire-reports - **/target/checkstyle-* - - name: Upload test report - uses: actions/upload-artifact@v2 - # Always upload the test report for the annotate.yml workflow, - # but only the single XML file to keep the artifact small - if: always() - with: - # Name prefix is checked in the `Annotate checks` workflow - name: test report ${{ github.job }} - path: | - **/surefire-reports/TEST-*.xml - retention-days: ${{ env.TEST_REPORT_RETENTION_DAYS }} - - build-test-matrix: - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits to be able to determine merge base for GIB - - name: Fetch base ref to find merge-base for GIB - run: .github/bin/git-fetch-base-ref.sh - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - - name: Maven validate - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY $MAVEN validate ${MAVEN_FAST_INSTALL} -P disable-check-spi-dependencies -pl '!:trino-docs,!:trino-server,!:trino-server-rpm' - - name: Set matrix - id: set-matrix - run: | - # GIB doesn't run on master, so make sure the file always exist - touch gib-impacted.log - cat < .github/test-matrix.yaml - include: - - { modules: core/trino-main } - - { modules: testing/trino-tests } - - { modules: plugin/trino-raptor-legacy } - - { modules: plugin/trino-accumulo } - - { modules: plugin/trino-cassandra } - - { modules: plugin/trino-clickhouse } - - { modules: plugin/trino-delta-lake } - - { modules: plugin/trino-delta-lake, profile: test-failure-recovery } - - { modules: plugin/trino-hive } - - { modules: plugin/trino-hive, profile: test-parquet } - - { modules: plugin/trino-hive, profile: test-failure-recovery } - - { modules: plugin/trino-hive, profile: test-fault-tolerant-execution } - - { modules: plugin/trino-elasticsearch } - - { modules: plugin/trino-elasticsearch, profile: test-stats } - - { modules: plugin/trino-mongodb } - - { modules: plugin/trino-kafka } - - { modules: plugin/trino-pinot } - - { modules: plugin/trino-redis } - - { modules: plugin/trino-mysql } - - { modules: plugin/trino-postgresql } - - { modules: plugin/trino-sqlserver } - - { modules: plugin/trino-singlestore } - - { modules: plugin/trino-oracle } - - { modules: plugin/trino-kudu } - - { modules: plugin/trino-druid } - - { modules: plugin/trino-iceberg } - - { modules: plugin/trino-iceberg, profile: test-failure-recovery } - - { modules: [ plugin/trino-phoenix, plugin/trino-phoenix5 ] } - - { modules: [ client/trino-jdbc, plugin/trino-base-jdbc, plugin/trino-thrift, plugin/trino-memory ] } - - { modules: plugin/trino-bigquery } - EOF - ./.github/bin/build-matrix-from-impacted.py -v -i gib-impacted.log -m .github/test-matrix.yaml -o matrix.json - echo "Matrix: $(jq '.' matrix.json)" - echo "::set-output name=matrix::$(jq -c '.' matrix.json)" - - test: - runs-on: ubuntu-latest - needs: build-test-matrix - if: needs.build-test-matrix.outputs.matrix != '{}' - strategy: - fail-fast: false - matrix: ${{ fromJson(needs.build-test-matrix.outputs.matrix) }} - timeout-minutes: 60 - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits to be able to determine merge base for GIB - - name: Fetch base ref to find merge-base for GIB - run: .github/bin/git-fetch-base-ref.sh - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - cache: 'maven' - - name: Configure Problem Matchers - run: echo "::add-matcher::.github/problem-matcher.json" - - name: Cleanup node - # This is required as a virtual environment update 20210219.1 left too little space for MemSQL to work - if: matrix.modules == 'plugin/trino-singlestore' - run: .github/bin/cleanup-node.sh - - name: Maven Install - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY $MAVEN clean install ${MAVEN_FAST_INSTALL} -am -pl "${{ matrix.modules }}" - - name: Maven Tests - if: matrix.modules != 'plugin/trino-singlestore' - run: $MAVEN test ${MAVEN_TEST} -pl ${{ matrix.modules }} ${{ matrix.profile != '' && format('-P {0}', matrix.profile) || '' }} - # Additional tests for selected modules - - name: Cloud Delta Lake Tests - env: - ABFS_CONTAINER: ${{ secrets.AZURE_ABFS_CONTAINER }} - ABFS_ACCOUNT: ${{ secrets.AZURE_ABFS_ACCOUNT }} - ABFS_ACCESSKEY: ${{ secrets.AZURE_ABFS_ACCESSKEY }} - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESSKEY }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRETKEY }} - AWS_REGION: us-east-2 - # Run tests if any of the secrets is present. Do not skip tests when one secret renamed, or secret name has a typo. - if: >- - contains(matrix.modules, 'trino-delta-lake') && - (env.ABFS_ACCOUNT != '' || env.ABFS_CONTAINER != '' || env.ABFS_ACCESSKEY != '' || env.AWS_ACCESS_KEY_ID != '' || env.AWS_SECRET_ACCESS_KEY != '') - run: | - $MAVEN test ${MAVEN_TEST} -P cloud-tests -pl :trino-delta-lake \ - -Dhive.hadoop2.azure-abfs-container="${ABFS_CONTAINER}" \ - -Dhive.hadoop2.azure-abfs-account="${ABFS_ACCOUNT}" \ - -Dhive.hadoop2.azure-abfs-access-key="${ABFS_ACCESSKEY}" - - name: Memsql Tests - env: - MEMSQL_LICENSE: ${{ secrets.MEMSQL_LICENSE }} - if: matrix.modules == 'plugin/trino-singlestore' && env.MEMSQL_LICENSE != '' - run: | - $MAVEN test ${MAVEN_TEST} -pl :trino-singlestore -Dmemsql.license=${MEMSQL_LICENSE} - - name: Cloud BigQuery Tests - env: - BIGQUERY_CREDENTIALS_KEY: ${{ secrets.BIGQUERY_CREDENTIALS_KEY }} - if: matrix.modules == 'plugin/trino-bigquery' && env.BIGQUERY_CREDENTIALS_KEY != '' - run: | - $MAVEN test ${MAVEN_TEST} -pl :trino-bigquery -Pcloud-tests -Dbigquery.credentials-key="${BIGQUERY_CREDENTIALS_KEY}" - - name: Cloud BigQuery Case Insensitive Mapping Tests - env: - BIGQUERY_CASE_INSENSITIVE_CREDENTIALS_KEY: ${{ secrets.BIGQUERY_CASE_INSENSITIVE_CREDENTIALS_KEY }} - if: matrix.modules == 'plugin/trino-bigquery' && env.BIGQUERY_CASE_INSENSITIVE_CREDENTIALS_KEY != '' - run: | - $MAVEN test ${MAVEN_TEST} -pl :trino-bigquery -Pcloud-tests-case-insensitive-mapping -Dbigquery.credentials-key="${BIGQUERY_CASE_INSENSITIVE_CREDENTIALS_KEY}" - - name: Iceberg Glue Catalog Tests - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESSKEY }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRETKEY }} - AWS_REGION: us-east-2 - S3_BUCKET: presto-ci-test - if: contains(matrix.modules, 'plugin/trino-iceberg') && (env.AWS_ACCESS_KEY_ID != '' || env.AWS_SECRET_ACCESS_KEY != '') - run: | - $MAVEN test ${MAVEN_TEST} -pl :trino-iceberg -P test-glue-catalog -Ds3.bucket=${S3_BUCKET} - - name: Sanitize artifact name - if: always() - run: | - # Generate a valid artifact name and make it available to next steps as - # an environment variable ARTIFACT_NAME - # ", :, <, >, |, *, ?, \, / are not allowed in artifact names, replace it with an underscore - name=$(echo -n "${{ matrix.modules }}" | sed -e 's/[":<>|\*\?\\\/]/_/g') - echo "ARTIFACT_NAME=$name" >> $GITHUB_ENV - - name: Upload test results - uses: actions/upload-artifact@v2 - # Upload all test reports only on failure, because the artifacts are large - if: failure() - with: - name: result ${{ env.ARTIFACT_NAME }} - path: | - **/target/surefire-reports - **/target/checkstyle-* - - name: Upload test report - uses: actions/upload-artifact@v2 - # Always upload the test report for the annotate.yml workflow, - # but only the single XML file to keep the artifact small - if: always() - with: - # Name prefix is checked in the `Annotate checks` workflow - name: test report ${{ github.job }} (${{ env.ARTIFACT_NAME }}) - path: | - **/surefire-reports/TEST-*.xml - retention-days: ${{ env.TEST_REPORT_RETENTION_DAYS }} - - build-pt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits, as the build result depends on `git describe` equivalent - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - cache: 'maven' - - name: Maven Install - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - # GIB needs to be explicitly disabled, because the gib profile enables it, but the trino-server module requires all of its dependencies to be built - $RETRY $MAVEN clean install ${MAVEN_FAST_INSTALL} -Dgib.disable -pl '!:trino-docs,!:trino-server-rpm' - - name: Product tests artifact - uses: actions/upload-artifact@v2 - with: - name: product tests and server tarball - path: | - core/trino-server/target/*.tar.gz - testing/trino-product-tests-launcher/target/*-executable.jar - testing/trino-product-tests/target/*-executable.jar - client/trino-cli/target/*-executable.jar - retention-days: 1 - - pt: - runs-on: ubuntu-latest - # explicitly define the name to avoid adding the value of the `ignore exclusion if` matrix item - name: pt (${{ matrix.config }}, ${{ matrix.suite }}, ${{ matrix.jdk }}) - strategy: - fail-fast: false - matrix: - config: - - default - - hdp3 - - cdh5 - # TODO: config-apache-hive3 - suite: - - suite-1 - - suite-2 - - suite-3 - # suite-4 does not exist - - suite-5 - jdk: - - 11 - exclude: - - config: cdh5 - ignore exclusion if: >- - ${{ github.event_name != 'pull_request' - || contains(github.event.pull_request.labels.*.name, 'tests:all') - || contains(github.event.pull_request.labels.*.name, 'tests:hive') - }} - - - config: default - ignore exclusion if: >- - ${{ github.event_name != 'pull_request' - || contains(github.event.pull_request.labels.*.name, 'tests:all') - || contains(github.event.pull_request.labels.*.name, 'tests:hive') - }} - - ignore exclusion if: - # Do not use this property outside of the matrix configuration. - # - # This is added to all matrix entries so they may be conditionally - # excluded by adding them to the excludes list with a GHA expression - # for this property. - # - If the expression evaluates to true, it will never match the a - # actual value of the property, and will therefore not be excluded. - # - If the expression evaluates to false, it will match the actual - # value of the property, and the exclusion will apply normally. - - false - include: - # this suite is not meant to be run with different configs - - config: default - suite: suite-6-non-generic - jdk: 11 - # this suite is not meant to be run with different configs - - config: default - suite: suite-7-non-generic - jdk: 11 - # this suite is not meant to be run with different configs - - config: default - suite: suite-8-non-generic - jdk: 11 - # this suite is not meant to be run with different configs - - config: default - suite: suite-tpcds - jdk: 11 - # this suite is not meant to be run with different configs - - config: default - suite: suite-oauth2 - jdk: 11 - # this suite is not meant to be run with different configs - - config: default - suite: suite-ldap - jdk: 11 - # this suite is not meant to be run with different configs - - config: default - suite: suite-compatibility - jdk: 11 - # this suite is designed specifically for apache-hive3. TODO remove the suite once we can run all regular tests on apache-hive3. - - config: apache-hive3 - suite: suite-hms-only - jdk: 11 - # suite-1 does not contain Kerberos/encrypted Hive environments - - config: hdp3 - suite: suite-1 - jdk: 17 - # suite-2 contains Kerberos/encrypted Hive environments - - config: hdp3 - suite: suite-2 - jdk: 17 - # PT Launcher's timeout defaults to 2h, add some margin - timeout-minutes: 130 - needs: build-pt - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # checkout all commits, as the build result depends on `git describe` equivalent - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - - name: Product tests artifact - uses: actions/download-artifact@v2 - with: - name: product tests and server tarball - - name: Fix artifact permissions - run: | - find . -type f -name \*-executable.jar -exec chmod 0777 {} \; - - name: Product Tests - run: | - testing/bin/ptl suite run \ - --suite ${{ matrix.suite }} --config config-${{ matrix.config }} --bind=off --logs-dir logs/ --timeout 2h \ - --trino-jdk-version zulu_${{ matrix.jdk }} - - name: Upload test logs and results - uses: actions/upload-artifact@v2 - # Upload all test reports only on failure, because the artifacts are large - if: failure() - with: - name: result pt (${{ matrix.config }}, ${{ matrix.suite }}, ${{ matrix.jdk }}) - path: | - testing/trino-product-tests/target/* - logs/* - - name: Upload test report - uses: actions/upload-artifact@v2 - # Always upload the test report for the annotate.yml workflow, - # but only the single XML file to keep the artifact small - if: always() - with: - # Name prefix is checked in the `Annotate checks` workflow - name: test report pt (${{ matrix.config }}, ${{ matrix.suite }}, ${{ matrix.jdk }}) - path: testing/trino-product-tests/target/reports/**/testng-results.xml - retention-days: ${{ env.TEST_REPORT_RETENTION_DAYS }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 4d4fa5753100..5e6d4bfeb6b3 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -25,42 +25,7 @@ concurrency: cancel-in-progress: true jobs: - path-filters: - runs-on: ubuntu-latest - outputs: - docs: ${{ steps.filter.outputs.docs }} - other: ${{ steps.filter.outputs.other }} - steps: - - uses: dorny/paths-filter@v2 - id: filter - with: - filters: | - docs: 'docs/**' - other: '!docs/**' - - docs-checks: - needs: path-filters - if: ${{ needs.path-filters.outputs.docs == 'true' && needs.path-filters.outputs.other == 'false' }} - runs-on: ubuntu-latest - timeout-minutes: 45 - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: 11 - cache: 'maven' - - name: Configure Problem Matchers - run: | - echo "::add-matcher::.github/problem-matcher.json" - - name: Maven Checks - run: | - export MAVEN_OPTS="${MAVEN_INSTALL_OPTS}" - $RETRY $MAVEN install -B --strict-checksums -V -T C1 -DskipTests -P ci -am -pl ':trino-docs' - test-docs: - needs: path-filters - if: ${{ needs.path-filters.outputs.docs == 'true' && needs.path-filters.outputs.other == 'false' && !contains(github.event.pull_request.labels.*.name, 'release-notes') }} runs-on: ubuntu-latest strategy: fail-fast: false @@ -73,6 +38,8 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v2 + with: + fetch-depth: 0 - uses: actions/setup-java@v2 with: distribution: 'zulu' diff --git a/docs/README.md b/docs/README.md index 82fdd5175e3d..cd6942f80ab0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -215,3 +215,4 @@ contribution](https://trino.io/development/process.html). Docker](https://www.youtube.com/watch?v=y58sb9bW2mA) gives you a starting point for setting up a test system on your laptop. +Edit for running docs CI