Fix IoTConsensus multi-folder snapshot load for DataRegion (#17974) #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Manual run; Release published; v* tag pushes; rc/** pushes only when C++-related paths change | |
| # (job should-package). release events use the workflow file from the default branch. | |
| name: C++ Client package | |
| on: | |
| workflow_dispatch: | |
| release: | |
| types: [published] | |
| push: | |
| branches: | |
| - "rc/**" | |
| tags: | |
| - "v*" | |
| concurrency: | |
| group: client-cpp-package-${{ 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: | |
| should-package: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| run: ${{ steps.result.outputs.run }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/rc/') | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/rc/') | |
| with: | |
| filters: | | |
| cpp: | |
| - 'pom.xml' | |
| - 'iotdb-client/**' | |
| - 'iotdb-protocol/**' | |
| - '.github/workflows/client-cpp-package.yml' | |
| - id: result | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| E="${{ github.event_name }}" | |
| R="${{ github.ref }}" | |
| if [[ "$E" == "workflow_dispatch" ]] || [[ "$E" == "release" ]]; then | |
| echo "run=true" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| if [[ "$E" == "push" ]] && [[ "$R" == refs/tags/v* ]]; then | |
| echo "run=true" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| if [[ "$E" == "push" ]] && [[ "$R" =~ ^refs/heads/rc/ ]]; then | |
| if [[ "${{ steps.filter.outputs.cpp }}" == "true" ]]; then | |
| echo "run=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "run=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| exit 0 | |
| fi | |
| echo "run=false" >> "$GITHUB_OUTPUT" | |
| package-linux: | |
| name: Package (${{ matrix.name }}) | |
| needs: should-package | |
| if: needs.should-package.outputs.run == 'true' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: linux-x86_64 | |
| runs-on: ubuntu-22.04 | |
| - name: linux-aarch64 | |
| runs-on: ubuntu-22.04-arm | |
| runs-on: ${{ matrix.runs-on }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: "17" | |
| - name: Install C++ dependencies (Linux) | |
| shell: bash | |
| run: | | |
| set -euxo pipefail | |
| sudo apt-get update | |
| sudo apt-get install -y libboost-all-dev openssl libssl-dev wget | |
| . /etc/os-release | |
| if [[ "${VERSION_CODENAME}" == "jammy" ]]; then | |
| wget -qO /tmp/llvm.sh https://apt.llvm.org/llvm.sh | |
| chmod +x /tmp/llvm.sh | |
| sudo DEBIAN_FRONTEND=noninteractive /tmp/llvm.sh 17 | |
| # llvm.sh installs clang-17/lldb/lld/clangd but not the clang-format-17 package | |
| sudo apt-get install -y clang-format-17 | |
| else | |
| sudo apt-get install -y clang-format-17 | |
| fi | |
| sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-17 100 | |
| sudo update-alternatives --set clang-format /usr/bin/clang-format-17 | |
| clang-format --version | |
| - name: Cache Maven packages | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.m2 | |
| key: ${{ runner.os }}-${{ runner.arch }}-m2-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ runner.arch }}-m2- | |
| - name: Package client-cpp | |
| shell: bash | |
| run: | | |
| set -euxo pipefail | |
| ./mvnw clean package -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests | |
| - name: Upload zip artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: client-cpp-${{ matrix.name }} | |
| path: iotdb-client/client-cpp/target/client-cpp-*-cpp-*.zip | |
| if-no-files-found: error | |
| package-macos: | |
| name: Package (${{ matrix.name }}) | |
| needs: should-package | |
| if: needs.should-package.outputs.run == 'true' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: macos-x86_64 | |
| runs-on: macos-15-intel | |
| - name: macos-arm64 | |
| runs-on: macos-latest | |
| runs-on: ${{ matrix.runs-on }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: "17" | |
| - name: Install C++ dependencies (macOS) | |
| shell: bash | |
| run: | | |
| set -euxo pipefail | |
| brew install boost openssl llvm@17 | |
| ln -sf "$(brew --prefix llvm@17)/bin/clang-format" "$(brew --prefix)/bin/clang-format" | |
| echo "$(brew --prefix llvm@17)/bin" >> "$GITHUB_PATH" | |
| clang-format --version | |
| - name: Cache Maven packages | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.m2 | |
| key: ${{ runner.os }}-${{ runner.arch }}-m2-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ runner.arch }}-m2- | |
| - name: Package client-cpp | |
| shell: bash | |
| env: | |
| MACOSX_DEPLOYMENT_TARGET: "12.0" | |
| run: | | |
| set -euxo pipefail | |
| ./mvnw clean package -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests | |
| - name: Upload zip artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: client-cpp-${{ matrix.name }} | |
| path: iotdb-client/client-cpp/target/client-cpp-*-cpp-*.zip | |
| if-no-files-found: error | |
| package-windows: | |
| name: Package (${{ matrix.name }}) | |
| needs: should-package | |
| if: needs.should-package.outputs.run == 'true' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: windows-vs2022 | |
| runs-on: windows-2022 | |
| boost_choco: boost-msvc-14.3 | |
| cmake_generator: "" | |
| iotdb_tools_thrift_version: "" | |
| - name: windows-vs2026 | |
| runs-on: windows-2025-vs2026 | |
| boost_choco: boost-msvc-14.3 | |
| cmake_generator: Visual Studio 18 2026 | |
| iotdb_tools_thrift_version: "" | |
| runs-on: ${{ matrix.runs-on }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: "17" | |
| - name: Install C++ dependencies (Windows) | |
| shell: pwsh | |
| run: | | |
| choco install winflexbison3 -y | |
| choco install ${{ matrix.boost_choco }} -y | |
| $boost_path = (Get-ChildItem -Path 'C:\local\' -Filter 'boost_*').FullName | |
| echo $boost_path >> $env:GITHUB_PATH | |
| choco install openssl -y | |
| $sslPath = (Get-ChildItem 'C:\Program Files\OpenSSL*' -Directory | Select-Object -First 1).FullName | |
| echo "$sslPath\bin" >> $env:GITHUB_PATH | |
| echo "OPENSSL_ROOT_DIR=$sslPath" >> $env:GITHUB_ENV | |
| choco install llvm --version=17.0.6 --force -y | |
| clang-format --version | |
| - name: Cache Maven packages | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.m2 | |
| key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-m2- | |
| - name: Package client-cpp | |
| shell: bash | |
| env: | |
| CMAKE_GENERATOR: ${{ matrix.cmake_generator }} | |
| IOTDB_TOOLS_THRIFT_VERSION: ${{ matrix.iotdb_tools_thrift_version }} | |
| run: | | |
| set -euxo pipefail | |
| MVN_ARGS=(./mvnw clean package -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests) | |
| if [ -n "${CMAKE_GENERATOR:-}" ]; then | |
| MVN_ARGS+=("-Dcmake.generator=${CMAKE_GENERATOR}") | |
| fi | |
| if [ -n "${IOTDB_TOOLS_THRIFT_VERSION:-}" ]; then | |
| MVN_ARGS+=("-Diotdb-tools-thrift.version=${IOTDB_TOOLS_THRIFT_VERSION}") | |
| fi | |
| "${MVN_ARGS[@]}" | |
| - name: Upload zip artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: client-cpp-${{ matrix.name }} | |
| path: iotdb-client/client-cpp/target/client-cpp-*-cpp-*.zip | |
| if-no-files-found: error |