diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index 6a68f395e83..edef19e55b6 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -name: Maven CI +name: Maven MySQL Tests CI on: push: @@ -115,13 +115,13 @@ jobs: if: ${{ github.event_name == 'pull_request_target' }} run: | git fetch --no-tags https://github.com/open-metadata/OpenMetadata.git +refs/heads/main:refs/remotes/origin/main - mvn -Dsonar.login=${{ secrets.SONAR_TOKEN }} \ + mvn -pl :openmetadata-service -Dsonar.login=${{ secrets.SONAR_TOKEN }} \ -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \ -Dsonar.pullrequest.branch=${{ github.head_ref }} \ -Dsonar.pullrequest.base=main \ -Dsonar.pullrequest.github.repository=OpenMetadata \ -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} \ - -Dsonar.pullrequest.provider=github clean install + -Dsonar.pullrequest.provider=github clean test - name: Build with Maven env: diff --git a/.github/workflows/maven-psotgres-tests-build.yml b/.github/workflows/maven-psotgres-tests-build.yml new file mode 100644 index 00000000000..da6f90009cf --- /dev/null +++ b/.github/workflows/maven-psotgres-tests-build.yml @@ -0,0 +1,144 @@ +# Copyright 2021 Collate +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Maven Postgres Tests CI + +on: + push: + branches: + - main + - '0.[0-9]+.[0-9]+' + paths: + - "openmetadata-service/**" + - "openmetadata-ui/**" + - "openmetadata-spec/src/main/resources/json/schema/**" + - "openmetadata-dist/**" + - "openmetadata-clients/**" + - "common/**" + - "pom.xml" + - "yarn.lock" + - "Makefile" + - "bootstrap/**" + pull_request_target: + types: [labeled, opened, synchronize, reopened] + paths: + - "openmetadata-service/**" + - "openmetadata-ui/**" + - "openmetadata-spec/src/main/resources/json/schema/**" + - "openmetadata-dist/**" + - "openmetadata-clients/**" + - "common/**" + - "pom.xml" + - "yarn.lock" + - "Makefile" + - "bootstrap/**" + +permissions: + contents: read + checks: write + +concurrency: + group: maven-build-${{ github.head_ref || github.run_id }} + cancel-in-progress: true +jobs: + test: + runs-on: ${{matrix.os}} + strategy: + matrix: + os: + - ubuntu-latest + node-version: + - 16.x + steps: + - name: Wait for the labeler + uses: lewagon/wait-on-check-action@0179dfc359f90a703c41240506f998ee1603f9ea #v1.0.0 + if: ${{ github.event_name == 'pull_request_target' }} + with: + ref: ${{ github.event.pull_request.head.sha }} + check-name: Team Label + repo-token: ${{ secrets.GITHUB_TOKEN }} + wait-interval: 90 + + - name: Verify PR labels + uses: jesusvasquez333/verify-pr-label-action@v1.4.0 + if: ${{ github.event_name == 'pull_request_target' }} + with: + github-token: '${{ secrets.GITHUB_TOKEN }}' + valid-labels: 'safe to test' + pull-request-number: '${{ github.event.pull_request.number }}' + disable-reviews: true # To not auto approve changes + + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - name: Cache Maven dependencies + id: cache-output + uses: actions/cache@v3 + with: + path: ~/.m2 + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Set up JDK 11 + if: steps.cache-output.outputs.exit-code == 0 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'adopt' + + - name: Install Ubuntu dependencies + if: steps.cache-output.outputs.exit-code == 0 + run: | + sudo apt-get update + sudo apt-get install -y unixodbc-dev python3-venv librdkafka-dev gcc libsasl2-dev build-essential libssl-dev libffi-dev \ + librdkafka-dev unixodbc-dev libevent-dev jq + + - name: Setup Test Containers Properties + run: | + sudo make install_antlr_cli + echo 'testcontainers.reuse.enable=true' >> $HOME/.testcontainers.properties + + - name: Build PR with Maven + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: ${{ github.event_name == 'pull_request_target' }} + run: | + git fetch --no-tags https://github.com/open-metadata/OpenMetadata.git +refs/heads/main:refs/remotes/origin/main + mvn -pl :openmetadata-service -Dsonar.login=${{ secrets.SONAR_TOKEN }} \ + -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \ + -Dsonar.pullrequest.branch=${{ github.head_ref }} \ + -Dsonar.pullrequest.base=main \ + -Dsonar.pullrequest.github.repository=OpenMetadata \ + -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} \ + -Dsonar.pullrequest.provider=github :openmetadata-service -Dprofile=postgres-tests clean test + + - name: Build with Maven + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: ${{ github.event_name == 'push' }} + run: mvn clean test + + - name: Clean Up + run: | + cd ./docker/development + docker compose down --remove-orphans + sudo rm -rf ${PWD}/docker-volume + + - name: Publish Test Report + if: ${{ always() }} + uses: scacap/action-surefire-report@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + fail_on_test_failures: true + report_paths: 'openmetadata-service/target/surefire-reports/TEST-*.xml' diff --git a/openmetadata-service/pom.xml b/openmetadata-service/pom.xml index 3a359a0bce1..21ef8578a7d 100644 --- a/openmetadata-service/pom.xml +++ b/openmetadata-service/pom.xml @@ -539,6 +539,117 @@ + + postgres-tests + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire.version} + + false + classes + 1C + -Xmx512m + + + + default-test + + true + + docker.elastic.co/elasticsearch/elasticsearch:7.16.3 + opensearchproject/opensearch:1.3.0 + false + + + + + + test + + postgres-integration-tests + test + + + **/*ResourceTest.java + + + org.testcontainers.containers.PostgreSQLContainer + postgres:12.10 + + + + + + + + + + mysql-tests + + true + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire.version} + + false + classes + 1C + -Xmx512m + + + + default-test + + true + + docker.elastic.co/elasticsearch/elasticsearch:7.16.3 + opensearchproject/opensearch:1.3.0 + false + + + + + + test + + unit-tests + + **/*Test.java + **/*ResourceTest.java + + org.testcontainers.containers.MySQLContainer + mysql:8 + + + + + + test + + mysql-integration-tests + test + + + **/*ResourceTest.java + + + org.testcontainers.containers.MySQLContainer + mysql:8 + + + + + + + + @@ -627,77 +738,6 @@ org.apache.maven.plugins maven-source-plugin - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire.version} - - false - classes - 1 - 2C - -Xmx512m - - - - default-test - - true - - docker.elastic.co/elasticsearch/elasticsearch:7.16.3 - opensearchproject/opensearch:1.3.0 - false - - - - - - test - - unit-tests - - **/*Test.java - **/*ResourceTest.java - - org.testcontainers.containers.MySQLContainer - mysql:8 - - - - - - test - - postgres-integration-tests - test - - - **/*ResourceTest.java - - - org.testcontainers.containers.PostgreSQLContainer - postgres:15.3 - - - - - - test - - mysql-integration-tests - test - - - **/*ResourceTest.java - - - org.testcontainers.containers.MySQLContainer - mysql:8 - - - - -