diff --git a/tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile b/tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile index 3fd6d55cc..8c60673ca 100644 --- a/tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile +++ b/tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile @@ -18,14 +18,16 @@ pipeline { distribution: "tar", architecture: "x64", platform: "linux", - incremental: "123" + incremental: true, + previousBuildId: "123" ) retrievePreviousBuild( inputManifest: "tests/data/opensearch-dashboards-input-2.12.0.yml", distribution: "zip", architecture: "x64", platform: "windows", - incremental: "1234" + incremental: true, + previousBuildId: "1234" ) } } diff --git a/tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile.txt b/tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile.txt index 891e3c188..c9c5e7c09 100644 --- a/tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile.txt +++ b/tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile.txt @@ -3,7 +3,7 @@ RetrievePreviousBuild_Jenkinsfile.echo(Executing on agent [label:none]) RetrievePreviousBuild_Jenkinsfile.stage(Test build manifest jenkins var, groovy.lang.Closure) RetrievePreviousBuild_Jenkinsfile.script(groovy.lang.Closure) - RetrievePreviousBuild_Jenkinsfile.retrievePreviousBuild({inputManifest=tests/data/opensearch-input-2.12.0.yml, distribution=tar, architecture=x64, platform=linux, incremental=123}) + RetrievePreviousBuild_Jenkinsfile.retrievePreviousBuild({inputManifest=tests/data/opensearch-input-2.12.0.yml, distribution=tar, architecture=x64, platform=linux, incremental=true, previousBuildId=123}) retrievePreviousBuild.legacySCM(groovy.lang.Closure) retrievePreviousBuild.library({identifier=jenkins@main, retriever=null}) retrievePreviousBuild.readYaml({file=tests/data/opensearch-input-2.12.0.yml}) @@ -18,7 +18,7 @@ retrievePreviousBuild.sh(mkdir -p tar && mv -v /tmp/workspace/download/dummy_job/2.12.0/123/linux/x64/tar /tmp/workspace) retrievePreviousBuild.echo(Setting up Maven Local for OpenSearch build.) retrievePreviousBuild.sh(mkdir -p ~/.m2/repository/org/ && cp -r tar/builds/opensearch/maven/org/opensearch/ ~/.m2/repository/org/) - RetrievePreviousBuild_Jenkinsfile.retrievePreviousBuild({inputManifest=tests/data/opensearch-dashboards-input-2.12.0.yml, distribution=zip, architecture=x64, platform=windows, incremental=1234}) + RetrievePreviousBuild_Jenkinsfile.retrievePreviousBuild({inputManifest=tests/data/opensearch-dashboards-input-2.12.0.yml, distribution=zip, architecture=x64, platform=windows, incremental=true, previousBuildId=1234}) retrievePreviousBuild.legacySCM(groovy.lang.Closure) retrievePreviousBuild.library({identifier=jenkins@main, retriever=null}) retrievePreviousBuild.readYaml({file=tests/data/opensearch-dashboards-input-2.12.0.yml}) diff --git a/vars/buildManifest.groovy b/vars/buildManifest.groovy index 19317d34a..110e24391 100644 --- a/vars/buildManifest.groovy +++ b/vars/buildManifest.groovy @@ -16,12 +16,13 @@ @param args.snapshot - Boolean value. Defaults to null. @param args.lock - Generate a stable reference manifest. Defaults to null. @param args.continueOnError - Do not fail the distribution build on any plugin component failure. Defaults to null + @param args.incremental - Boolean value to enable incremental build. */ void call(Map args = [:]) { - boolean incremental_enabled = args.incremental != null && !args.incremental.isEmpty() && !args.incremental.equalsIgnoreCase("false") + boolean incremental_enabled = args.incremental != null && args.incremental if (incremental_enabled) { - echo("Incremental build enabled! Retrieving previous build library") + echo("Incremental build enabled! Retrieving previous build library.") retrievePreviousBuild(args) } diff --git a/vars/retrievePreviousBuild.groovy b/vars/retrievePreviousBuild.groovy index 4bdc97b15..a1fa182be 100644 --- a/vars/retrievePreviousBuild.groovy +++ b/vars/retrievePreviousBuild.groovy @@ -9,16 +9,17 @@ /** Library to download previous build artifacts used for incremental build. @param Map args = [:] args A map of the following parameters @param args.inputManifest - Relative path to input manifest containing all the components to build. + @param args.jobName - Relative path to input manifest containing all the components to build. @param args.platform - Platform of previous build to retrieve. @param args.architecture - Architecture of previous build to retrieve. @param args.distribution - Distribution of previous build to retrieve. - @param args.incremental - String value contains the build number of previous build or the latest. + @param args.previousBuildId - Build id of previous build for incremental build. Defaults to latest. */ void call(Map args = [:]) { def lib = library(identifier: 'jenkins@main', retriever: legacySCM(scm)) def inputManifestObj = lib.jenkins.InputManifest.new(readYaml(file: args.inputManifest)) - def DISTRIBUTION_JOB_NAME = "${JOB_NAME}" + def DISTRIBUTION_JOB_NAME = args.jobName ? args.jobName : "${JOB_NAME}" def revision = inputManifestObj.build.version def DISTRIBUTION_PLATFORM = args.platform @@ -27,14 +28,14 @@ void call(Map args = [:]) { def prefixPath = "${WORKSPACE}/download" def DISTRIBUTION_BUILD_NUMBER - if (args.incremental.equalsIgnoreCase("latest")) { + if (args.previousBuildId.equalsIgnoreCase("latest")) { DISTRIBUTION_BUILD_NUMBER = sh( script: "curl -sL https://ci.opensearch.org/ci/dbc/${DISTRIBUTION_JOB_NAME}/${revision}/index.json | jq -r \".latest\"", returnStdout: true ).trim() //Once we have new index.json, URL will be changed to: https://ci.opensearch.org/ci/dbc/${DISTRIBUTION_JOB_NAME}/${revision}/index/${platform}/${architecture}/${distribution}/index.json } else { - DISTRIBUTION_BUILD_NUMBER = args.incremental + DISTRIBUTION_BUILD_NUMBER = args.previousBuildId } def artifactPath = "${DISTRIBUTION_JOB_NAME}/${revision}/${DISTRIBUTION_BUILD_NUMBER}/${DISTRIBUTION_PLATFORM}/${DISTRIBUTION_ARCHITECTURE}/${distribution}"