name: Multi-Language Client
on:
  push:
    branches:
      - master
      - "rc/*"
      - 'force_ci/**'
      - 'cpp_client_artifact'
    paths:
      - 'pom.xml'
      - 'iotdb-client/pom.xml'
      - 'iotdb-client/client-py/**'
      - 'iotdb-client/client-cpp/**'
      - 'example/client-cpp-example/**'
      - 'iotdb-protocol/thrift-datanode/src/main/thrift/client.thrift'
      - 'iotdb-protocol/thrift-commons/src/main/thrift/common.thrift'
      - '.github/workflows/multi-language-client.yml'
  pull_request:
    branches:
      - master
      - "rc/*"
      - 'force_ci/**'
    paths:
      - 'pom.xml'
      - 'iotdb-client/pom.xml'
      - 'iotdb-client/client-py/**'
      - 'iotdb-client/client-cpp/**'
      - 'example/client-cpp-example/**'
      - 'iotdb-protocol/thrift-datanode/src/main/thrift/client.thrift'
      - 'iotdb-protocol/thrift-commons/src/main/thrift/common.thrift'
      - '.github/workflows/multi-language-client.yml'
  # allow manually run the action:
  workflow_dispatch:


concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3
  MAVEN_ARGS: --batch-mode --no-transfer-progress

jobs:
  cpp:
    strategy:
      fail-fast: false
      max-parallel: 15
      matrix:
        os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, windows-2019, windows-2022, macos-latest]
    runs-on: ${{ matrix.os}}

    steps:
      - uses: actions/checkout@v4
      - name: Install CPP Dependencies (Ubuntu)
        if: runner.os == 'Linux'
        shell: bash
        run: |
          sudo apt-get update
          sudo apt-get install libboost-all-dev
      - name: Install CPP Dependencies (Mac)
        # remove some xcode to release disk space
        if: runner.os == 'macOS'
        shell: bash
        run: |
          brew install boost
          sudo rm -rf /Applications/Xcode_14.3.1.app
          sudo rm -rf /Applications/Xcode_15.0.1.app
          sudo rm -rf /Applications/Xcode_15.1.app
          sudo rm -rf /Applications/Xcode_15.2.app
          sudo rm -rf /Applications/Xcode_15.3.app
      - name: Install CPP Dependencies (Windows)
        if: runner.os == 'Windows'
        run: |
          choco install winflexbison3
          if ("${{ matrix.os }}" -eq "windows-2019") {
            choco install boost-msvc-14.2
          } else {
            choco install boost-msvc-14.3
          }
          $boost_path = (Get-ChildItem -Path 'C:\local\' -Filter 'boost_*').FullName
          echo $boost_path >> $env:GITHUB_PATH
      - name: Cache Maven packages
        uses: actions/cache@v4
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2-
      - name: Build IoTDB server
        shell: bash
        run: ./mvnw clean install -pl distribution -am -DskipTests
      - name: Test with Maven
        shell: bash
        # Explicitly using mvnw here as the build requires maven 3.9 and the default installation is older
        # Explicitly using "install" instead of package in order to be sure we're using libs built on this machine
        # (was causing problems on windows, but could cause problem on linux, when updating the thrift module)
        run: |
          if [[ "$RUNNER_OS" == "Linux" ]]; then
            ./mvnw clean verify -P with-cpp -pl iotdb-client/client-cpp,example/client-cpp-example -am -Diotdb-tools-thrift.version=0.14.1.1-glibc223-SNAPSHOT
          elif [[ "${{ matrix.os }}" == "windows-2019" ]]; then
            ./mvnw clean verify -P with-cpp -pl iotdb-client/client-cpp,example/client-cpp-example -am -Diotdb-tools-thrift.version=0.14.1.1-msvc142-SNAPSHOT -Dcmake.generator="Visual Studio 16 2019"
          else  
            ./mvnw clean verify -P with-cpp -pl iotdb-client/client-cpp,example/client-cpp-example -am
          fi
      - name: Upload Cpp Client Artifact
        uses: actions/upload-artifact@v4
        with:
          name: client-cpp-${{ matrix.os }}
          path: iotdb-client/client-cpp/target/*.zip
          retention-days: 1
      - name: Upload Artifact
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: cpp-IT-${{ runner.os }}
          path: distribution/target/apache-iotdb-*-all-bin/apache-iotdb-*-all-bin/logs
          retention-days: 1

  go:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
        with:
          token: ${{secrets.GITHUB_TOKEN}}
          submodules: recursive
      - name: Cache Maven packages
        uses: actions/cache@v4
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2-
      - name: Compile IoTDB Server
        run: mvn clean package -pl distribution -am -DskipTests
      - name: Integration test
        shell: bash
        run: |
          cd iotdb-client 
          git clone https://github.com/apache/iotdb-client-go.git 
          cd iotdb-client-go 
          make e2e_test_for_parent_git_repo e2e_test_clean_for_parent_git_repo

  python:
    strategy:
      fail-fast: false
      max-parallel: 15
      matrix:
        python: [ '3.6', '3.x' ]
    runs-on: ${{ (matrix.python == '3.6' && 'ubuntu-20.04') || 'ubuntu-latest' }}

    steps:
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python }}
      - uses: actions/checkout@v4
      - name: Cache Maven packages
        uses: actions/cache@v4
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2-
      - name: Cache pip packages
        uses: actions/cache@v4
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
          restore-keys: ${{ runner.os }}-pip-
      - name: Build IoTDB server distribution zip and python client
        run: mvn -B clean install -pl distribution,iotdb-client/client-py -am -DskipTests
      - name: Build IoTDB server docker image
        run: |
          docker build . -f docker/src/main/Dockerfile-1c1d -t "iotdb:dev"
          docker images
      - name: Install IoTDB python client requirements
        run: pip3 install -r iotdb-client/client-py/requirements_dev.txt
      - name: Check code style
        if: ${{ matrix.python == '3.x'}}
        shell: bash
        run: black iotdb-client/client-py/ --check --diff
      - name: Integration test and test make package
        shell: bash
        run: |
          cd iotdb-client/client-py/ && pytest .
          ./release.sh
