diff --git a/Jenkinsfile b/Jenkinsfile index a18d9ebdb..5c62291a8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,12 @@ import groovy.json.JsonOutput +class JdbcJobDefinition { + String jdk + List params + String jobToRun + String runName +} + pipeline { // TODO Please migrate this to C7 as sfc-dev2 servers do not support c6 nodes agent { label 'regular-memory-node' } @@ -23,7 +30,6 @@ pipeline { } timestamps { - // TODO Please migrate this to C7 as sfc-dev2 servers do not support c6 nodes node('regular-memory-node') { stage('checkout') { scmInfo = checkout scm @@ -40,39 +46,50 @@ timestamps { '''.stripMargin() } - params = [ - string(name: 'client_git_branch', value: scmInfo.GIT_BRANCH), - string(name: 'client_git_commit', value: scmInfo.GIT_COMMIT), - string(name: 'branch', value: 'main'), - string(name: 'TARGET_DOCKER_TEST_IMAGE', value: 'jdbc-centos6-default'), - string(name: 'parent_job', value: env.JOB_NAME), - string(name: 'parent_build_number', value: env.BUILD_NUMBER), - string(name: 'timeout_value', value: '420'), - string(name: 'PR_Key', value: scmInfo.GIT_BRANCH.substring(3)) - ] - stage('Test') { - try { - def commit_hash = "main" // default which we want to override - def bptp_tag = "bptp-built" + def commit_hash = "main" // default which we want to override + def bptp_tag = "bptp-built" + try { def response = authenticatedGithubCall("https://api.github.com/repos/snowflakedb/snowflake/git/ref/tags/${bptp_tag}") commit_hash = response.object.sha - // Append the bptp-built commit sha to params - params += [string(name: 'svn_revision', value: commit_hash)] - } catch(Exception e) { - println("Exception computing commit hash from: ${response}") + } catch (Exception e) { + println("error when calling Github API: ${e.message}") + e.printStackTrace() + } + + jdkToParams = ['openjdk8': 'jdbc-centos7-openjdk8', 'openjdk11': 'jdbc-centos7-openjdk11', 'openjdk17': 'jdbc-centos7-openjdk17'].collectEntries { jdk, image -> + return [(jdk): [ + string(name: 'client_git_branch', value: scmInfo.GIT_BRANCH), + string(name: 'client_git_commit', value: scmInfo.GIT_COMMIT), + string(name: 'branch', value: 'main'), + string(name: 'TARGET_DOCKER_TEST_IMAGE', value: image), + string(name: 'parent_job', value: env.JOB_NAME), + string(name: 'parent_build_number', value: env.BUILD_NUMBER), + string(name: 'timeout_value', value: '420'), + string(name: 'PR_Key', value: scmInfo.GIT_BRANCH.substring(3)), + string(name: 'svn_revision', value: commit_hash) + ]] + } + + jobDefinitions = jdkToParams.collectMany { jdk, params -> + return [ + 'RT-LanguageJDBC1-PC' : "Test JDBC 1 - $jdk", + 'RT-LanguageJDBC2-PC' : "Test JDBC 2 - $jdk", + 'RT-LanguageJDBC3-PC' : "Test JDBC 3 - $jdk", + 'RT-LanguageJDBC4-PC' : "Test JDBC 4 - $jdk", + 'RT-LanguageJDBC-CodeCoverage-PC' : "CodeCoverage JDBC - $jdk" + ].collect { jobToRun, runName -> + return new JdbcJobDefinition( + jdk: jdk, + params: params, + jobToRun: jobToRun, + runName: runName + ) } - parallel ( - 'Test JDBC 1': { build job: 'RT-LanguageJDBC1-PC',parameters: params - }, - 'Test JDBC 2': { build job: 'RT-LanguageJDBC2-PC',parameters: params - }, - 'Test JDBC 3': { build job: 'RT-LanguageJDBC3-PC',parameters: params - }, - 'Test JDBC 4': { build job: 'RT-LanguageJDBC4-PC',parameters: params - }, - 'CodeCoverage JDBC': { build job: 'RT-LanguageJDBC-CodeCoverage-PC',parameters: params - } - ) + }.collectEntries { jobDefinition -> + return [(jobDefinition.runName): { build job: jobDefinition.jobToRun, parameters: jobDefinition.params }] + } + stage('Test') { + parallel (jobDefinitions) } } }