This is an automated email from the ASF dual-hosted git repository.

jt2594838 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new d142b7517d3 CI: Add GitHub Actions workflow to package C++ client 
binaries (#17528)
d142b7517d3 is described below

commit d142b7517d36f7cabc93a829c9f348ea9f5fc47e
Author: Hongzhi Gao <[email protected]>
AuthorDate: Tue Apr 21 16:41:53 2026 +0800

    CI: Add GitHub Actions workflow to package C++ client binaries (#17528)
    
    * add cpp client package ci
    
    * fix ci
    
    * remove vs2019 cpp client package
    
    * arm ubuntu22.04
---
 .github/workflows/client-cpp-package.yml | 226 +++++++++++++++++++++++++++++++
 1 file changed, 226 insertions(+)

diff --git a/.github/workflows/client-cpp-package.yml 
b/.github/workflows/client-cpp-package.yml
new file mode 100644
index 00000000000..c6412b001e7
--- /dev/null
+++ b/.github/workflows/client-cpp-package.yml
@@ -0,0 +1,226 @@
+# 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
+      - 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 \
+            -Dspotless.check.skip=true -Dspotless.apply.skip=true
+      - 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
+      - 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 \
+            -Dspotless.check.skip=true -Dspotless.apply.skip=true
+      - 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
+      - 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 \
+            -Dspotless.check.skip=true -Dspotless.apply.skip=true)
+          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

Reply via email to