INFRA-1299: retire parallel builds for JDK11 releases (#6913)

This commit is contained in:
Waldemar Żurowski 2021-06-07 10:05:18 +02:00 committed by GitHub
parent b8dc6be9d3
commit 3cc8d93e3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -23,7 +23,7 @@ boolean isReleaseTag = (env.TAG_NAME =~ /^release.*JDK11$/)
** calculate the stage for NexusIQ evaluation ** calculate the stage for NexusIQ evaluation
** * build for snapshots ** * build for snapshots
** * stage-release: for release candidates and for health checks ** * stage-release: for release candidates and for health checks
** * operate: for final release ** * release: for GA release
*/ */
def nexusDefaultIqStage = "build" def nexusDefaultIqStage = "build"
if (isReleaseTag) { if (isReleaseTag) {
@ -47,32 +47,80 @@ def nexusIqStageChoices = [nexusDefaultIqStage].plus(
'operate' 'operate'
].minus([nexusDefaultIqStage])) ].minus([nexusDefaultIqStage]))
/**
* Common Gradle arguments for all Gradle executions
*/
String COMMON_GRADLE_PARAMS = [
'--no-daemon',
'--stacktrace',
'--info',
'-Pcompilation.warningsAsErrors=false',
'-Ptests.failFast=true',
].join(' ')
/**
* The name of subfolders to run tests previously on Another Agent and Same Agent
*/
String sameAgentFolder = 'sameAgent'
String anotherAgentFolder = 'anotherAgent'
pipeline { pipeline {
agent { label 'k8s' } agent {
dockerfile {
label 'standard'
additionalBuildArgs '--build-arg USER="${USER}"' // DON'T change quotation - USER variable is substituted by SHELL!!!!
filename "${sameAgentFolder}/.ci/dev/compatibility/DockerfileJDK11"
}
}
/*
* List options in alphabetical order
*/
options { options {
timestamps()
timeout(time: 3, unit: 'HOURS')
buildDiscarder(logRotator(daysToKeepStr: '14', artifactDaysToKeepStr: '14')) buildDiscarder(logRotator(daysToKeepStr: '14', artifactDaysToKeepStr: '14'))
checkoutToSubdirectory "${sameAgentFolder}"
parallelsAlwaysFailFast()
timeout(time: 6, unit: 'HOURS')
timestamps()
} }
parameters { parameters {
choice choices: nexusIqStageChoices, description: 'NexusIQ stage for code evaluation', name: 'nexusIqStage' choice choices: nexusIqStageChoices, description: 'NexusIQ stage for code evaluation', name: 'nexusIqStage'
} }
/*
* List environment variables in alphabetical order
*/
environment { environment {
DOCKER_TAG_TO_USE = "${env.GIT_COMMIT.subSequence(0, 8)}JDK11" ARTIFACTORY_BUILD_NAME = "Corda :: Publish :: Publish JDK 11 Release to Artifactory :: ${env.BRANCH_NAME}"
EXECUTOR_NUMBER = "${env.EXECUTOR_NUMBER}"
BUILD_ID = "${env.BUILD_ID}-${env.JOB_NAME}"
ARTIFACTORY_CREDENTIALS = credentials('artifactory-credentials') ARTIFACTORY_CREDENTIALS = credentials('artifactory-credentials')
ARTIFACTORY_BUILD_NAME = "Corda / Publish / Publish JDK 11 Release to Artifactory".replaceAll("/", "::")
CORDA_ARTIFACTORY_USERNAME = "${env.ARTIFACTORY_CREDENTIALS_USR}"
CORDA_ARTIFACTORY_PASSWORD = "${env.ARTIFACTORY_CREDENTIALS_PSW}" CORDA_ARTIFACTORY_PASSWORD = "${env.ARTIFACTORY_CREDENTIALS_PSW}"
CORDA_ARTIFACTORY_USERNAME = "${env.ARTIFACTORY_CREDENTIALS_USR}"
} }
stages { stages {
stage('Compile') {
steps {
dir(sameAgentFolder) {
sh script: [
'./gradlew',
COMMON_GRADLE_PARAMS,
'clean',
'jar'
].join(' ')
}
}
}
stage('Copy') {
steps {
sh "rm -rf ${anotherAgentFolder} && mkdir -p ${anotherAgentFolder} && cd ${sameAgentFolder} && cp -aR . ../${anotherAgentFolder}"
}
}
stage('Sonatype Check') { stage('Sonatype Check') {
steps { steps {
sh "./gradlew --no-daemon clean jar" dir(sameAgentFolder) {
script { script {
sh "./gradlew --no-daemon properties | grep -E '^(version|group):' >version-properties" sh "./gradlew --no-daemon properties | grep -E '^(version|group):' >version-properties"
/* every build related to Corda X.Y (GA, RC, HC, patch or snapshot) uses the same NexusIQ application */ /* every build related to Corda X.Y (GA, RC, HC, patch or snapshot) uses the same NexusIQ application */
@ -89,68 +137,99 @@ pipeline {
) )
} }
} }
stage('Generate Build Image') {
steps {
withCredentials([string(credentialsId: 'container_reg_passwd', variable: 'DOCKER_PUSH_PWD')]) {
sh "./gradlew " +
"-Dkubenetize=true " +
"-Ddocker.push.password=\"\${DOCKER_PUSH_PWD}\" " +
"-Ddocker.work.dir=\"/tmp/\${EXECUTOR_NUMBER}\" " +
"-Ddocker.build.tag=\"\${DOCKER_TAG_TO_USE}\" " +
"-Ddocker.buildbase.tag=11latest " +
"-Ddocker.container.env.parameter.CORDA_ARTIFACTORY_USERNAME=\"\${ARTIFACTORY_CREDENTIALS_USR}\" " +
"-Ddocker.container.env.parameter.CORDA_ARTIFACTORY_PASSWORD=\"\${ARTIFACTORY_CREDENTIALS_PSW}\" " +
"-Ddocker.dockerfile=DockerfileJDK11Azul" +
" clean pushBuildImage preAllocateForParallelRegressionTest preAllocateForAllParallelSlowIntegrationTest --stacktrace"
}
sh "kubectl auth can-i get pods"
}
} }
stage('Testing phase') { stage('All Tests') {
parallel { parallel {
stage('Regression Test') { stage('Another agent') {
post {
always {
dir(anotherAgentFolder) {
archiveArtifacts artifacts: '**/*.log', fingerprint: false
junit testResults: '**/build/test-results/**/*.xml', keepLongStdio: true
}
}
}
stages {
stage('Unit Test') {
steps { steps {
sh "./gradlew " + dir(anotherAgentFolder) {
"-DbuildId=\"\${BUILD_ID}\" " + sh script: [
"-Dkubenetize=true " + './gradlew',
"-Ddocker.run.tag=\"\${DOCKER_TAG_TO_USE}\" " + COMMON_GRADLE_PARAMS,
"-Dartifactory.username=\"\${ARTIFACTORY_CREDENTIALS_USR}\" " + 'test'
"-Dartifactory.password=\"\${ARTIFACTORY_CREDENTIALS_PSW}\" " + ].join(' ')
"-Dgit.branch=\"\${GIT_BRANCH}\" " + }
"-Dgit.target.branch=\"\${GIT_BRANCH}\" " + }
" parallelRegressionTest --stacktrace" }
stage('Smoke Test') {
steps {
dir(anotherAgentFolder) {
sh script: [
'./gradlew',
COMMON_GRADLE_PARAMS,
'smokeTest'
].join(' ')
}
} }
} }
stage('Slow Integration Test') { stage('Slow Integration Test') {
steps { steps {
sh "./gradlew " + dir(anotherAgentFolder) {
"-DbuildId=\"\${BUILD_ID}\" " + sh script: [
"-Dkubenetize=true " + './gradlew',
"-Ddocker.run.tag=\"\${DOCKER_TAG_TO_USE}\" " + COMMON_GRADLE_PARAMS,
"-Dartifactory.username=\"\${ARTIFACTORY_CREDENTIALS_USR}\" " + 'slowIntegrationTest'
"-Dartifactory.password=\"\${ARTIFACTORY_CREDENTIALS_PSW}\" " + ].join(' ')
"-Dgit.branch=\"\${GIT_BRANCH}\" " + }
"-Dgit.target.branch=\"\${GIT_BRANCH}\" " + }
" allParallelSlowIntegrationTest --stacktrace" }
}
}
stage('Same agent') {
post {
always {
dir(sameAgentFolder) {
archiveArtifacts artifacts: '**/*.log', fingerprint: false
junit testResults: '**/build/test-results/**/*.xml', keepLongStdio: true
}
}
}
stages {
stage('Integration Test') {
steps {
dir(sameAgentFolder) {
sh script: [
'./gradlew',
COMMON_GRADLE_PARAMS,
'integrationTest'
].join(' ')
}
}
}
stage('Deploy Node') {
steps {
dir(sameAgentFolder) {
sh script: [
'./gradlew',
COMMON_GRADLE_PARAMS,
'deployNode'
].join(' ')
}
}
}
} }
} }
} }
} }
stage('Publish to Artifactory') { stage('Publish to Artifactory') {
agent {
dockerfile {
reuseNode true
additionalBuildArgs "--build-arg USER=stresstester"
filename '.ci/dev/compatibility/DockerfileJDK11'
}
}
when { when {
expression { isReleaseTag } expression { isReleaseTag }
} }
steps { steps {
dir(sameAgentFolder) {
rtServer( rtServer(
id: 'R3-Artifactory', id: 'R3-Artifactory',
url: 'https://software.r3.com/artifactory', url: 'https://software.r3.com/artifactory',
@ -176,12 +255,9 @@ pipeline {
} }
} }
} }
}
post { post {
always {
archiveArtifacts artifacts: '**/pod-logs/**/*.log', fingerprint: false
junit testResults: '**/build/test-results-xml/**/*.xml', keepLongStdio: true
}
cleanup { cleanup {
deleteDir() /* clean up our workspace */ deleteDir() /* clean up our workspace */
} }