# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Sonar-Coveralls

on:
  push:
    branches:
      - master
      - "rel/*"
      - "new_*"
    paths-ignore:
      - "docs/**"
  pull_request:
    branches:
      - master
      - "rel/*"
      - "new_*"
    paths-ignore:
      - "docs/**"
  pull_request_target:
    branches:
      - master
      - "rel/*"
      - "new_*"
    paths-ignore:
      - "docs/**"
  # allow manually run the action:
  workflow_dispatch:

env:
  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3
  PR_NUMBER: ${{ github.event.number }}

jobs:
  ubuntu:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: Cache Maven packages
        uses: actions/cache@v2
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2-
      - name: IT/UT Test
        # we do not compile client-cpp for saving time, it is tested in client.yml
        run: mvn -B clean compile post-integration-test -Dtest.port.closed=true -Pcode-coverage -P '!testcontainer,!influxdb-protocol'
      - name: Code Coverage (Coveralls)
        if: ${{ success() && (github.event_name == 'pull_request_target' || github.event_name == 'push')}}
        run: |
          mvn -B post-integration-test -Pcode-coverage -pl code-coverage
          mvn -B coveralls:report \
          -DserviceName=travis_ci \
          -Dbranch=$BRANCH_NAME \
          -DpullRequest=$PR_NUMBER \
          -DrepoToken=${{ secrets.COVERALL_TOKEN }} \
          -Pcode-coverage -P '!testcontainer'
      - name: SonarCloud Report
        if: ${{ success() && (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == 'apache/iotdb' || github.event_name == 'push')}}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
        run: |
          mvn -B verify sonar:sonar \
          -Dsonar.organization=apache \
          -Dsonar.projectKey=apache_incubator-iotdb \
          -Dsonar.host.url=https://sonarcloud.io \
          -Dsonar.login=${{ secrets.SONARCLOUD_TOKEN }} \
          -DskipTests -pl '!distribution'  -P '!testcontainer' -am
