| name: "hugegraph-ci" |
| |
| on: |
| push: |
| branches: |
| - master |
| - 'release-*' |
| - 'test-*' |
| pull_request: |
| |
| jobs: |
| build: |
| # TODO: we need test & replace it to ubuntu-24.04 or ubuntu-latest |
| runs-on: ubuntu-20.04 |
| env: |
| USE_STAGE: 'false' # Whether to include the stage repository. |
| TRAVIS_DIR: hugegraph-server/hugegraph-dist/src/assembly/travis |
| REPORT_DIR: target/site/jacoco |
| BACKEND: ${{ matrix.BACKEND }} |
| TRIGGER_BRANCH_NAME: ${{ github.ref_name }} |
| HEAD_BRANCH_NAME: ${{ github.head_ref }} |
| BASE_BRANCH_NAME: ${{ github.base_ref }} |
| TARGET_BRANCH_NAME: ${{ github.base_ref != '' && github.base_ref || github.ref_name }} |
| RELEASE_BRANCH: ${{ startsWith(github.ref_name, 'release-') || startsWith(github.ref_name, 'test-') }} |
| RAFT_MODE: ${{ startsWith(github.head_ref, 'test') || startsWith(github.head_ref, 'raft') }} |
| |
| strategy: |
| fail-fast: false |
| matrix: |
| BACKEND: [ memory, rocksdb, hbase, cassandra, mysql, postgresql, scylladb ] |
| JAVA_VERSION: [ '8', '11' ] |
| |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| with: |
| fetch-depth: 2 |
| |
| # TODO: Remove this step after install-backend.sh updated |
| - name: Install Java8 for backend |
| uses: actions/setup-java@v3 |
| with: |
| java-version: '8' |
| distribution: 'zulu' |
| |
| - name: Prepare backend environment |
| run: | |
| $TRAVIS_DIR/install-backend.sh $BACKEND && jps -l |
| |
| - name: Install Java ${{ matrix.JAVA_VERSION }} |
| uses: actions/setup-java@v3 |
| with: |
| java-version: ${{ matrix.JAVA_VERSION }} |
| distribution: 'zulu' |
| |
| - name: Cache Maven packages |
| uses: actions/cache@v3 |
| with: |
| path: ~/.m2 |
| key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} |
| restore-keys: ${{ runner.os }}-m2 |
| |
| - name: Use staged maven repo settings |
| if: ${{ env.USE_STAGE == 'true' }} |
| run: | |
| cp $HOME/.m2/settings.xml /tmp/settings.xml |
| cp -vf .github/configs/settings.xml $HOME/.m2/settings.xml && cat $HOME/.m2/settings.xml |
| |
| - name: Compile |
| run: | |
| mvn clean compile -U -Dmaven.javadoc.skip=true -ntp |
| |
| - name: Run unit test |
| run: | |
| $TRAVIS_DIR/run-unit-test.sh $BACKEND |
| |
| - name: Run core test |
| run: | |
| $TRAVIS_DIR/run-core-test.sh $BACKEND |
| |
| - name: Run api test |
| run: | |
| $TRAVIS_DIR/run-api-test.sh $BACKEND $REPORT_DIR |
| |
| # TODO: disable raft test in normal PR due to the always timeout problem |
| - name: Run raft test |
| if: ${{ env.RAFT_MODE == 'true' && env.BACKEND == 'rocksdb' }} |
| run: | |
| $TRAVIS_DIR/run-api-test-for-raft.sh $BACKEND $REPORT_DIR |
| |
| - name: Run TinkerPop test |
| if: ${{ env.RELEASE_BRANCH == 'true' }} |
| run: | |
| $TRAVIS_DIR/run-tinkerpop-test.sh $BACKEND tinkerpop |
| |
| - name: Upload coverage to Codecov |
| uses: codecov/codecov-action@v3 |
| with: |
| token: ${{ secrets.CODECOV_TOKEN }} |
| file: ${{ env.REPORT_DIR }}/*.xml |