diff --git a/jenkins/validate-artifacts/validate-artifacts.jenkinsfile b/jenkins/validate-artifacts/validate-artifacts.jenkinsfile index 4bf9ac3020..2d02eb83f5 100644 --- a/jenkins/validate-artifacts/validate-artifacts.jenkinsfile +++ b/jenkins/validate-artifacts/validate-artifacts.jenkinsfile @@ -7,7 +7,7 @@ * compatible open source license. */ -lib = library(identifier: 'jenkins@4.2.2', retriever: modernSCM([ +lib = library(identifier: 'jenkins@6.3.2', retriever: modernSCM([ $class: 'GitSCMSource', remote: 'https://github.com/opensearch-project/opensearch-build-libraries.git', ])) @@ -138,7 +138,21 @@ pipeline { if(OPENSEARCH_ARTIFACT_URL) { ARCHITECTURE = url_paths.values().find { it.contains("x64") } ? "x64" : "arm64" - DISTRIBUTION = url_paths.values().find { it.contains("tar.gz") } ? "tar" : url_paths.values().find { it.contains("zip") } ? "zip" : url_paths.values().find { it.contains("rpm") } ? "rpm" : "deb" + def distKeyWords = [ + "tar.gz": "tar", + "zip": "zip", + "rpm": "rpm", + "repo": "yum", + "deb": "deb" + ] + DISTRIBUTION = distKeyWords.find { item -> + url_paths.values().any { value -> + value.contains(item.key) + } + }?.value + if (DISTRIBUTION == null) { + error("The provided distribution type is not supported") + } env.FILEPATH = "opensearch=${OPENSEARCH_ARTIFACT_URL?.trim()}" if (OPENSEARCH_DASHBOARDS_ARTIFACT_URL) { FILEPATH = env.FILEPATH + " opensearch-dashboards=${OPENSEARCH_DASHBOARDS_ARTIFACT_URL?.trim()}" @@ -164,6 +178,9 @@ pipeline { def distributionList = DISTRIBUTION ? DISTRIBUTION.trim().split(" ") as List : "" def architectureList = ARCHITECTURE ? ARCHITECTURE.trim().split(" ") as List : "" + def mapDistributionToPlatform = [ + "zip": "windows" + ] stash includes: "**", name: "validate-artifacts-$BUILD_NUMBER" @@ -172,7 +189,7 @@ pipeline { for (distribution in distributionList) { def local_architecture = architecture.trim() def local_distribution = distribution.trim() - def local_platform = local_distribution == "zip" ? "windows" : "linux" + def local_platform = mapDistributionToPlatform.getOrDefault(local_distribution, "linux") def local_distribution_index = distributionList.indexOf(local_distribution) def wait_seconds = local_distribution_index * 10 @@ -266,4 +283,4 @@ pipeline { } } } -} +} \ No newline at end of file diff --git a/tests/jenkins/TestValidateArtifacts.groovy b/tests/jenkins/TestValidateArtifacts.groovy index 779e177291..f4ff80d5d3 100644 --- a/tests/jenkins/TestValidateArtifacts.groovy +++ b/tests/jenkins/TestValidateArtifacts.groovy @@ -23,7 +23,7 @@ class TestValidateArtifacts extends BuildPipelineTest { helper.registerSharedLibrary( library().name('jenkins') - .defaultVersion('4.2.2') + .defaultVersion('6.3.2') .allowOverride(true) .implicit(true) .targetPath('vars') @@ -56,12 +56,12 @@ class TestValidateArtifacts extends BuildPipelineTest { public void testValidateArtifactsPipeline() { super.testPipeline("jenkins/validate-artifacts/validate-artifacts.jenkinsfile", "tests/jenkins/jenkinsjob-regression-files/validate-artifacts/validate-artifacts.jenkinsfile") - assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('/tmp/workspace/validation.sh --version 2.3.0 --distribution docker --arch x64 --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --docker_args using-staging-artifact-only --docker_source dockerhub')) - assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('/tmp/workspace/validation.sh --version 2.3.0 --distribution tar --arch arm64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false')) - assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('/tmp/workspace/validation.sh --version 2.3.0 --distribution rpm --arch x64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false')) - assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('/tmp/workspace/validation.sh --version 2.3.0 --distribution yum --arch arm64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false')) - assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('/tmp/workspace/validation.sh --version 2.3.0 --distribution deb --arch arm64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false')) - assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('/tmp/workspace/validation.sh --version 2.3.0 --distribution zip --arch x64 --platform windows --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false')) + assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('./validation.sh --version 2.3.0 --distribution docker --arch x64 --projects opensearch opensearch-dashboards --docker-source dockerhub --os-build-number 6039 --osd-build-number 4104 --using-staging-artifact-only')) + assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('./validation.sh --version 2.3.0 --distribution tar --platform linux --arch x64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production')) + assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('./validation.sh --version 2.3.0 --distribution yum --platform linux --arch x64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production')) + assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('./validation.sh --version 2.3.0 --distribution rpm --platform linux --arch arm64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production')) + assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('./validation.sh --version 2.3.0 --distribution deb --platform linux --arch arm64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production')) + assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('./validation.sh --version 2.3.0 --distribution zip --platform windows --arch x64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production')) } @Test @@ -70,7 +70,15 @@ class TestValidateArtifacts extends BuildPipelineTest { binding.setVariable('OPENSEARCH_ARTIFACT_URL', "https://ci.opensearch/distribution-build-opensearch/1.3.12/8230/linux/x64/tar/opensearch-1.3.12-linux-x64.tar.gz") binding.setVariable('OPENSEARCH_DASHBOARDS_ARTIFACT_URL', "https://ci.opensearch/distribution-build-opensearch-dashboards/1.3.12/8230/linux/x64/tar/opensearch-dashboards-1.3.12-linux-x64.tar.gz") runScript('jenkins/validate-artifacts/validate-artifacts.jenkinsfile') - assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('/tmp/workspace/validation.sh --file_path opensearch=https://ci.opensearch/distribution-build-opensearch/1.3.12/8230/linux/x64/tar/opensearch-1.3.12-linux-x64.tar.gz opensearch-dashboards=https://ci.opensearch/distribution-build-opensearch-dashboards/1.3.12/8230/linux/x64/tar/opensearch-dashboards-1.3.12-linux-x64.tar.gz --allow_http false')) + assertThat(getCommandExecutions('sh', 'validation.sh'), hasItem('./validation.sh --file-path opensearch=https://ci.opensearch/distribution-build-opensearch/1.3.12/8230/linux/x64/tar/opensearch-1.3.12-linux-x64.tar.gz opensearch-dashboards=https://ci.opensearch/distribution-build-opensearch-dashboards/1.3.12/8230/linux/x64/tar/opensearch-dashboards-1.3.12-linux-x64.tar.gz')) + } + + @Test + public void testInvalidDistributionInFilePath() { + binding.setVariable('VERSION', "") + binding.setVariable('OPENSEARCH_ARTIFACT_URL', "https://ci.opensearch/distribution-build-opensearch/1.3.12/8230/linux/x64/xyz/opensearch-1.3.12-linux-x64.xyz.gz") + runScript('jenkins/validate-artifacts/validate-artifacts.jenkinsfile') + assertThat(getCommandExecutions('error', ''), hasItem('The provided distribution type is not supported')) } @Test diff --git a/tests/jenkins/jenkinsjob-regression-files/validate-artifacts/validate-artifacts.jenkinsfile.txt b/tests/jenkins/jenkinsjob-regression-files/validate-artifacts/validate-artifacts.jenkinsfile.txt index 09de17441c..4caf8135f5 100644 --- a/tests/jenkins/jenkinsjob-regression-files/validate-artifacts/validate-artifacts.jenkinsfile.txt +++ b/tests/jenkins/jenkinsjob-regression-files/validate-artifacts/validate-artifacts.jenkinsfile.txt @@ -1,6 +1,6 @@ validate-artifacts.run() validate-artifacts.modernSCM({$class=GitSCMSource, remote=https://github.com/opensearch-project/opensearch-build-libraries.git}) - validate-artifacts.library({identifier=jenkins@4.2.2, retriever=null}) + validate-artifacts.library({identifier=jenkins@6.3.2, retriever=null}) validate-artifacts.pipeline(groovy.lang.Closure) validate-artifacts.timeout({time=1, unit=HOURS}) validate-artifacts.echo(Executing on agent [label:none]) @@ -25,7 +25,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=docker, arch=x64, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, docker_args=using-staging-artifact-only, docker_source=dockerhub}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution docker --arch x64 --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --docker_args using-staging-artifact-only --docker_source dockerhub) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution docker --arch x64 --projects opensearch opensearch-dashboards --docker-source dockerhub --os-build-number 6039 --osd-build-number 4104 --using-staging-artifact-only) validate-artifacts.echo(Completed validation for docker-x64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -34,7 +34,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=tar, arch=x64, platform=linux, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution tar --arch x64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution tar --platform linux --arch x64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for tar-x64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -43,7 +43,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=rpm, arch=x64, platform=linux, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution rpm --arch x64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution rpm --platform linux --arch x64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for rpm-x64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -52,7 +52,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=yum, arch=x64, platform=linux, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution yum --arch x64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution yum --platform linux --arch x64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for yum-x64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -61,7 +61,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=deb, arch=x64, platform=linux, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution deb --arch x64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution deb --platform linux --arch x64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for deb-x64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -70,7 +70,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=zip, arch=x64, platform=windows, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution zip --arch x64 --platform windows --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution zip --platform windows --arch x64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for zip-x64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -87,7 +87,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=docker, arch=arm64, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, docker_args=using-staging-artifact-only, docker_source=dockerhub}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution docker --arch arm64 --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --docker_args using-staging-artifact-only --docker_source dockerhub) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution docker --arch arm64 --projects opensearch opensearch-dashboards --docker-source dockerhub --os-build-number 6039 --osd-build-number 4104 --using-staging-artifact-only) validate-artifacts.echo(Completed validation for docker-arm64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -96,7 +96,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=tar, arch=arm64, platform=linux, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution tar --arch arm64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution tar --platform linux --arch arm64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for tar-arm64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -105,7 +105,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=rpm, arch=arm64, platform=linux, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution rpm --arch arm64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution rpm --platform linux --arch arm64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for rpm-arm64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -114,7 +114,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=yum, arch=arm64, platform=linux, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution yum --arch arm64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution yum --platform linux --arch arm64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for yum-arm64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true}) @@ -123,7 +123,7 @@ validate-artifacts.unstash(validate-artifacts-123) validate-artifacts.validateArtifacts({version=2.3.0, distribution=deb, arch=arm64, platform=linux, os_build_number=6039, osd_build_number=4104, projects=opensearch opensearch-dashboards, artifact_type=production, allow_http=false}) validateArtifacts.fileExists(/tmp/workspace/validation.sh) - validateArtifacts.sh(/tmp/workspace/validation.sh --version 2.3.0 --distribution deb --arch arm64 --platform linux --os_build_number 6039 --osd_build_number 4104 --projects opensearch opensearch-dashboards --artifact_type production --allow_http false) + validateArtifacts.sh(./validation.sh --version 2.3.0 --distribution deb --platform linux --arch arm64 --projects opensearch opensearch-dashboards --os-build-number 6039 --osd-build-number 4104 --artifact-type production) validate-artifacts.echo(Completed validation for deb-arm64) validate-artifacts.postCleanup() postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true})