Skip to content

Commit

Permalink
Make parameters more generic
Browse files Browse the repository at this point in the history
Signed-off-by: Zelin Hao <[email protected]>
  • Loading branch information
zelinh committed Jan 17, 2024
1 parent a20f2fb commit 1d82df6
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 10 deletions.
6 changes: 4 additions & 2 deletions tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
}
}
Expand Down
4 changes: 2 additions & 2 deletions tests/jenkins/jobs/RetrievePreviousBuild_Jenkinsfile.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
Expand All @@ -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})
Expand Down
5 changes: 3 additions & 2 deletions vars/buildManifest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@
@param args.snapshot <optional> - Boolean value. Defaults to null.
@param args.lock <optional> - Generate a stable reference manifest. Defaults to null.
@param args.continueOnError <optional> - Do not fail the distribution build on any plugin component failure. Defaults to null
@param args.incremental <optional> - 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)
}

Expand Down
9 changes: 5 additions & 4 deletions vars/retrievePreviousBuild.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -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 <required> - Relative path to input manifest containing all the components to build.
@param args.jobName <optional> - Relative path to input manifest containing all the components to build.
@param args.platform <required> - Platform of previous build to retrieve.
@param args.architecture <required> - Architecture of previous build to retrieve.
@param args.distribution <required> - Distribution of previous build to retrieve.
@param args.incremental <required> - String value contains the build number of previous build or the latest.
@param args.previousBuildId <optional> - 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
Expand All @@ -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}"
Expand Down

0 comments on commit 1d82df6

Please sign in to comment.