Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
ce4184b
IGNITE-27303 C++ 3.0: [ODBC] Use distribution packages to run ODBC tests
Feb 3, 2026
6788a7e
Add dependency for gradle cmakeCpack
Feb 3, 2026
f55e332
Add Setup Docker Proxy script
Feb 3, 2026
08d0b7a
Update docker image
Feb 3, 2026
01773f5
Update rpm install script
Feb 3, 2026
a52c859
Switch compiler for ODBC tests build
Feb 3, 2026
fc70e82
Make separate build directory for docker build
Feb 3, 2026
f6da1a1
Fix packages and cmake parameter
Feb 3, 2026
f9a2fe5
Disable Werror for tests
Feb 3, 2026
71778cf
Add JAVA_HOME variable for container
Feb 3, 2026
b2b9cef
Move ODBC tests to separate suite
Feb 4, 2026
382af32
Fix
Feb 4, 2026
fe342b5
Add ODBC suite as dependency
Feb 4, 2026
d6c9b8d
Remove unused parameter
Feb 4, 2026
a2554c3
Verify that ignite-runner is built
Feb 4, 2026
90d06ef
Cleanup after gradle task
Feb 4, 2026
f0f4b1d
Build runner inside docker
Feb 4, 2026
8cc55b7
Add ulimit output to the Build info
Feb 4, 2026
02112d1
Move build info inside docker
Feb 4, 2026
964f2ca
Set ulimit for container
Feb 4, 2026
8393043
Fix dependencies for deb package
Feb 5, 2026
a130ad1
Add ubuntu22_04 dockerfile and TC job to test ODBC deb package
Feb 5, 2026
82e490f
Fix JAVA_HOME variables for different containers
Feb 5, 2026
cbd4650
Fix cmake build directories
Feb 5, 2026
b91d763
Fix test results xml path
Feb 5, 2026
71dae6e
Split ODBC tasks into separate suites
Feb 10, 2026
4e8ce8d
Fix dependencies of RunPlatformTests
Feb 10, 2026
28054b1
Fix deps
Feb 10, 2026
8b91557
Fix names
Feb 10, 2026
75f70bd
Cleanup
Feb 10, 2026
f85a20b
Fix install directories and add TGZ test suite
Feb 10, 2026
0f0a0cc
Fix RPM task name
Feb 10, 2026
bdae18b
Fix directory
Feb 10, 2026
ec3e312
Fix file extension
Feb 10, 2026
7c2fc74
Make task name more clear and disable client compilation for odbc tests
Feb 12, 2026
4d5879f
Enable client compilation back for odbc-test
Feb 12, 2026
e324605
Remove DIND_ENABLED requirements
Feb 12, 2026
9dd98eb
Revert "Remove DIND_ENABLED requirements"
Feb 12, 2026
9484821
Remove obsolete requirement
Feb 12, 2026
f2c1786
Remove ODBC tests from common suite
Feb 12, 2026
9d94cfc
Fix version parsing algorithm
Feb 12, 2026
731fc55
Fix task name
Feb 12, 2026
05ded25
Remove unused check env script
Feb 13, 2026
63eebbe
Cleanup imports
Feb 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .teamcity/build/distributions/CppClientPackages.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package build.distributions

import jetbrains.buildServer.configs.kotlin.BuildType
import jetbrains.buildServer.configs.kotlin.buildSteps.GradleBuildStep
import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customGradle
import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customScript

object CppClientPackages : BuildType({
name = "[11] ODBC and C++ Client packages"
description = "Apache Ignite 3 ODBC and C++ Client Packages"

artifactRules = """
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.deb => odbc-deb
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.deb.sha256 => odbc-deb
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.deb => client-deb
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.deb.sha256 => client-deb

%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.rpm => odbc-rpm
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.rpm.sha256 => odbc-rpm
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.rpm => client-rpm
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.rpm.sha256 => client-rpm

%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.tar.gz => odbc-tgz
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.tar.gz.sha256 => odbc-tgz
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.tar.gz => client-tgz
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.tar.gz.sha256 => client-tgz
""".trimIndent()

params {
param("CONTAINER_JAVA_HOME", "/usr/lib/jvm/java-17-openjdk/")
}

steps {
customScript(type = "bash") {
name = "Setup Docker Proxy"
}

customGradle {
name = "Build ODBC and Client packages. RPM, DEB, TGZ. (Under Rocky Linux 8 container)"
tasks = ":platforms:cmakeCpack"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
}
}
})
2 changes: 1 addition & 1 deletion .teamcity/build/distributions/OdbcDeb.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ object OdbcDeb : BuildType({
tasks = ":packaging-odbc:buildDeb"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.0"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
Expand Down
2 changes: 1 addition & 1 deletion .teamcity/build/distributions/OdbcRpm.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ object OdbcRpm : BuildType({
tasks = ":packaging-odbc:buildRpm"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.0"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
Expand Down
4 changes: 2 additions & 2 deletions .teamcity/build/distributions/OdbcZip.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ object OdbcZip : BuildType({
tasks = ":packaging-odbc:distZip"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.0"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
Expand All @@ -50,7 +50,7 @@ object OdbcZip : BuildType({
tasks = ":packaging-odbc:distTar"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.0"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
Expand Down
1 change: 1 addition & 0 deletions .teamcity/build/distributions/Project.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ object Project : Project({
listOf(
CliDeb,
CliRpm,
CppClientPackages,
Deb,
Docs,
Docker,
Expand Down
8 changes: 8 additions & 0 deletions .teamcity/files/docker/rockylinux8-odbc-cpp.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM rockylinux:8
# Install dependencies
RUN dnf update -y
RUN dnf -y install epel-release
RUN dnf update -y
RUN dnf install -y --setopt=max_parallel_downloads=10 --setopt=fastestmirror=True git gcc gcc-c++ clang make cmake unixODBC-devel openssl-devel java-11-openjdk-devel java-17-openjdk-devel rpm-build dpkg
RUN dnf clean all
RUN rm -rf /var/cache/dnf
5 changes: 5 additions & 0 deletions .teamcity/files/docker/ubuntu22_04-odbc-cpp.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM ubuntu:22.04
# Install dependencies
RUN apt update
RUN apt install -y git gcc g++ clang make cmake unixodbc unixodbc-dev odbcinst libssl-dev openjdk-11-jdk openjdk-17-jdk rpm
RUN apt clean
3 changes: 3 additions & 0 deletions .teamcity/test/build_types/RunPlatformTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ object RunPlatformTests : BuildType({

dependencies {
snapshot(PlatformCppTestsLinux) {}
snapshot(PlatformCppOdbcTestsDebLinux) {}
snapshot(PlatformCppOdbcTestsRpmLinux) {}
snapshot(PlatformCppOdbcTestsTgzLinux) {}
// snapshot(PlatformCppTestsWindows) {} // Always falling, under investigation
snapshot(PlatformDotnetTestsWindows) {}
snapshot(PlatformDotnetTestsLinux) {}
Expand Down
114 changes: 114 additions & 0 deletions .teamcity/test/platform_tests/PlatformCppOdbcTestsDebLinux.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package test.platform_tests

import build.distributions.CppClientPackages
import jetbrains.buildServer.configs.kotlin.BuildType
import jetbrains.buildServer.configs.kotlin.ParameterDisplay
import jetbrains.buildServer.configs.kotlin.buildFeatures.XmlReport
import jetbrains.buildServer.configs.kotlin.buildFeatures.xmlReport
import jetbrains.buildServer.configs.kotlin.buildSteps.script
import jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnText
import jetbrains.buildServer.configs.kotlin.failureConditions.failOnText
import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customScript
import org.apache.ignite.teamcity.Teamcity

object PlatformCppOdbcTestsDebLinux : BuildType({
id(Teamcity.getId(this::class))
name = "Platform C++ ODBC Tests. DEB package (Ubuntu 22.04 Linux container)"

artifactRules = """
%PATH__CMAKE_BUILD_DIRECTORY%/core => core_dumps
""".trimIndent()

params {
param("env.IGNITE_CPP_TESTS_USE_SINGLE_NODE", "")
param("PATH__CMAKE_BUILD_DIRECTORY", "%PATH__WORKING_DIR%/cmake-build-debug")
param("PATH__ODBC_TEST_RESULTS", "%PATH__WORKING_DIR%/odbc_tests_results.xml")
text("PATH__WORKING_DIR", "%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%/modules/platforms/cpp", display = ParameterDisplay.HIDDEN, allowEmpty = true)
text("PATH__IGNITE_DIR", "%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%", display = ParameterDisplay.HIDDEN, allowEmpty = true)
param("env.CPP_STAGING", "/tmp/cpp_staging")
param("CONTAINER_JAVA_HOME", "/usr/lib/jvm/java-17-openjdk-amd64/")
}

dependencies {
dependency(CppClientPackages) {
snapshot {}
artifacts {
cleanDestination = true
artifactRules = """
odbc-deb => ignite3-odbc-deb
""".trimIndent()
}
}
}

steps {
customScript(type = "bash") {
name = "Setup Docker Proxy"
}

script {
name = "Install ODBC and build C++ tests in Ubuntu 22.04 container"
dockerImage = "docker.gridgain.com/ci/tc-ubuntu22_04-odbc:v1.0"
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME% --ulimit nofile=32768:32768"
scriptContent = """
clang --version
clang++ --version
ulimit -a

dpkg -i ignite3-odbc-deb/*.deb

cd %PATH__IGNITE_DIR%
./gradlew :ignite-runner:integrationTestClasses
mkdir %PATH__CMAKE_BUILD_DIRECTORY% || exit 2
cd %PATH__CMAKE_BUILD_DIRECTORY% || exit 3

cmake .. -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DENABLE_TESTS=ON -DENABLE_ODBC=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=%env.CPP_STAGING% || (echo 'CMake configuration failed' && exit 5)
cmake --build . -j8 || (echo 'CMake build failed' && exit 6)

./bin/ignite-odbc-test --gtest_output=xml:%PATH__ODBC_TEST_RESULTS%
""".trimIndent()
}

customScript(type = "bash") {
name = "Clean Up Remaining Processes"
}
}

failureConditions {
executionTimeoutMin = 15
failOnText {
conditionType = BuildFailureOnText.ConditionType.CONTAINS
pattern = "CMake configuration failed"
failureMessage = "CMake configuration failed"
reverse = false
}
failOnText {
conditionType = BuildFailureOnText.ConditionType.CONTAINS
pattern = "CMake build failed"
failureMessage = "CMake build failed"
reverse = false
}
failOnText {
conditionType = BuildFailureOnText.ConditionType.CONTAINS
pattern = "CMake install failed"
failureMessage = "CMake install failed"
reverse = false
}
failOnText {
conditionType = BuildFailureOnText.ConditionType.CONTAINS
pattern = "FAILED TEST SUITE"
failureMessage = "One or several test suites have failed during SetUpTestSuite"
reverse = false
}
}

features {
xmlReport {
reportType = XmlReport.XmlReportType.GOOGLE_TEST
rules = """
+:%PATH__ODBC_TEST_RESULTS%
""".trimIndent()
verbose = true
}
}
})
114 changes: 114 additions & 0 deletions .teamcity/test/platform_tests/PlatformCppOdbcTestsRpmLinux.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package test.platform_tests

import build.distributions.CppClientPackages
import jetbrains.buildServer.configs.kotlin.BuildType
import jetbrains.buildServer.configs.kotlin.ParameterDisplay
import jetbrains.buildServer.configs.kotlin.buildFeatures.XmlReport
import jetbrains.buildServer.configs.kotlin.buildFeatures.xmlReport
import jetbrains.buildServer.configs.kotlin.buildSteps.*
import jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnText
import jetbrains.buildServer.configs.kotlin.failureConditions.failOnText
import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customScript
import org.apache.ignite.teamcity.Teamcity

object PlatformCppOdbcTestsRpmLinux : BuildType({
id(Teamcity.getId(this::class))
name = "Platform C++ ODBC Tests. RPM package (Rockylinux 8 Linux container)"

artifactRules = """
%PATH__CMAKE_BUILD_DIRECTORY%/core => core_dumps
""".trimIndent()

params {
param("env.IGNITE_CPP_TESTS_USE_SINGLE_NODE", "")
param("PATH__CMAKE_BUILD_DIRECTORY", "%PATH__WORKING_DIR%/cmake-build-debug")
param("PATH__ODBC_TEST_RESULTS", "%PATH__WORKING_DIR%/odbc_tests_results.xml")
text("PATH__WORKING_DIR", "%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%/modules/platforms/cpp", display = ParameterDisplay.HIDDEN, allowEmpty = true)
text("PATH__IGNITE_DIR", "%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%", display = ParameterDisplay.HIDDEN, allowEmpty = true)
param("env.CPP_STAGING", "/tmp/cpp_staging")
param("CONTAINER_JAVA_HOME", "/usr/lib/jvm/java-17-openjdk/")
}

dependencies {
dependency(CppClientPackages) {
snapshot {}
artifacts {
cleanDestination = true
artifactRules = """
odbc-rpm => ignite3-odbc-rpm
""".trimIndent()
}
}
}

steps {
customScript(type = "bash") {
name = "Setup Docker Proxy"
}

script {
name = "Install ODBC and build C++ tests in Rockylinux 8 container"
dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME% --ulimit nofile=32768:32768"
scriptContent = """
clang --version
clang++ --version
ulimit -a

rpm -i ignite3-odbc-rpm/*.rpm

cd %PATH__IGNITE_DIR%
./gradlew :ignite-runner:integrationTestClasses
mkdir %PATH__CMAKE_BUILD_DIRECTORY% || exit 2
cd %PATH__CMAKE_BUILD_DIRECTORY% || exit 3

cmake .. -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DENABLE_TESTS=ON -DENABLE_ODBC=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=%env.CPP_STAGING% || (echo 'CMake configuration failed' && exit 5)
cmake --build . -j8 || (echo 'CMake build failed' && exit 6)

./bin/ignite-odbc-test --gtest_output=xml:%PATH__ODBC_TEST_RESULTS%
""".trimIndent()
}

customScript(type = "bash") {
name = "Clean Up Remaining Processes"
}
}

failureConditions {
executionTimeoutMin = 15
failOnText {
conditionType = BuildFailureOnText.ConditionType.CONTAINS
pattern = "CMake configuration failed"
failureMessage = "CMake configuration failed"
reverse = false
}
failOnText {
conditionType = BuildFailureOnText.ConditionType.CONTAINS
pattern = "CMake build failed"
failureMessage = "CMake build failed"
reverse = false
}
failOnText {
conditionType = BuildFailureOnText.ConditionType.CONTAINS
pattern = "CMake install failed"
failureMessage = "CMake install failed"
reverse = false
}
failOnText {
conditionType = BuildFailureOnText.ConditionType.CONTAINS
pattern = "FAILED TEST SUITE"
failureMessage = "One or several test suites have failed during SetUpTestSuite"
reverse = false
}
}

features {
xmlReport {
reportType = XmlReport.XmlReportType.GOOGLE_TEST
rules = """
+:%PATH__ODBC_TEST_RESULTS%
""".trimIndent()
verbose = true
}
}
})
Loading