From 9d72236d7e77d4f6daffc92748233541d4c57f3a Mon Sep 17 00:00:00 2001 From: Zelin Hao Date: Mon, 3 Mar 2025 13:38:15 -0800 Subject: [PATCH] Add smoke tests trigger in distribution build Jenkins job (#5346) Signed-off-by: Zelin Hao --- .../opensearch/distribution-build.jenkinsfile | 70 +++++++++++++++++-- 1 file changed, 65 insertions(+), 5 deletions(-) diff --git a/jenkins/opensearch/distribution-build.jenkinsfile b/jenkins/opensearch/distribution-build.jenkinsfile index 6e5eca2fcd..15e107368d 100644 --- a/jenkins/opensearch/distribution-build.jenkinsfile +++ b/jenkins/opensearch/distribution-build.jenkinsfile @@ -47,6 +47,12 @@ pipeline { defaultValue: 'integ-test', trim: true ) + string( + name: 'SMOKE_TEST_JOB_NAME', + description: 'Optional: Name of smoke test job that will be triggered, e.g. smoke-test. A non-null empty value here will skip smoke tests.', + defaultValue: 'smoke-test', + trim: true + ) string( name: 'BWC_TEST_JOB_NAME', description: 'Optional: Name of backwards compatibility test job that will be triggered, e.g. Playground/bwc-test. A non-null empty value here will skip BWC tests.', @@ -227,6 +233,9 @@ pipeline { 'integ-test': { triggerIntegrationTests(buildManifestUrl, 'linux', 'tar') }, + 'smoke-test': { + triggerSmokeTests(buildManifestUrl, 'linux', 'tar') + }, 'bwc-test': { triggerBWCTests(buildManifestUrl, 'linux', 'tar') } @@ -340,7 +349,14 @@ pipeline { String bundleManifestUrl = buildManifestObj.getBundleManifestUrl(JOB_NAME, BUILD_NUMBER) - triggerIntegrationTests(buildManifestUrl, 'linux', 'rpm') + parallel([ + 'integ-test': { + triggerIntegrationTests(buildManifestUrl, 'linux', 'rpm') + }, + 'smoke-test': { + triggerSmokeTests(buildManifestUrl, 'linux', 'rpm') + } + ]) } } post { @@ -449,7 +465,14 @@ pipeline { String bundleManifestUrl = buildManifestObj.getBundleManifestUrl(JOB_NAME, BUILD_NUMBER) - triggerIntegrationTests(buildManifestUrl, 'linux', 'deb') + parallel([ + 'integ-test': { + triggerIntegrationTests(buildManifestUrl, 'linux', 'deb') + }, + 'smoke-test': { + triggerSmokeTests(buildManifestUrl, 'linux', 'deb') + } + ]) } } post { @@ -519,7 +542,14 @@ pipeline { echo "buildManifestUrl (linux, arm64, tar): ${buildManifestUrl}" echo "artifactUrl (linux, arm64, tar): ${artifactUrl}" - triggerIntegrationTests(buildManifestUrl, 'linux', 'tar') + parallel([ + 'integ-test': { + triggerIntegrationTests(buildManifestUrl, 'linux', 'tar') + }, + 'smoke-test': { + triggerSmokeTests(buildManifestUrl, 'linux', 'tar') + } + ]) } } post { @@ -629,7 +659,14 @@ pipeline { String bundleManifestUrl = buildManifestObj.getBundleManifestUrl(JOB_NAME, BUILD_NUMBER) - triggerIntegrationTests(buildManifestUrl, 'linux', 'rpm') + parallel([ + 'integ-test': { + triggerIntegrationTests(buildManifestUrl, 'linux', 'rpm') + }, + 'smoke-test': { + triggerSmokeTests(buildManifestUrl, 'linux', 'rpm') + } + ]) } } post { @@ -739,7 +776,15 @@ pipeline { String bundleManifestUrl = buildManifestObj.getBundleManifestUrl(JOB_NAME, BUILD_NUMBER) - triggerIntegrationTests(buildManifestUrl, 'linux', 'deb') + parallel([ + 'integ-test': { + triggerIntegrationTests(buildManifestUrl, 'linux', 'deb') + }, + 'smoke-test': { + triggerSmokeTests(buildManifestUrl, 'linux', 'deb') + } + ]) + } } post { @@ -966,6 +1011,21 @@ def triggerIntegrationTests(String buildManifestUrl, String platform, String dis } } +def triggerSmokeTests(String buildManifestUrl, String platform, String distribution) { + Boolean skipSmokeTests = (SMOKE_TEST_JOB_NAME == '' || TEST_MANIFEST == '' || buildManifestUrl == '' || !TEST_PLATFORM.contains(platform) || !TEST_DISTRIBUTION.contains(distribution)) + echo "${skipSmokeTests ? 'Skipping SMOKE tests as one of the values has empty or wrong string: SMOKE_TEST_JOB_NAME, TEST_MANIFEST, buildManifestUrl, TEST_PLATFORM, TEST_DISTRIBUTION' : 'Running SMOKE tests'}" + if (!skipSmokeTests) { + def smokeTestResults = + build job: SMOKE_TEST_JOB_NAME, + propagate: false, + wait: false, + parameters: [ + string(name: 'TEST_MANIFEST', value: TEST_MANIFEST), + string(name: 'BUILD_MANIFEST_URL', value: buildManifestUrl) + ] + } +} + def triggerBWCTests(String buildManifestUrl, String platform, String distribution) { Boolean skipBwcTests = (BWC_TEST_JOB_NAME == '' || TEST_MANIFEST == '' || buildManifestUrl == '' || !TEST_PLATFORM.contains(platform) || !TEST_DISTRIBUTION.contains(distribution)) echo "${skipBwcTests ? 'Skipping BWC tests as one of the values has empty or wrong string: BWC_TEST_JOB_NAME, TEST_MANIFEST, buildManifestUrl, TEST_PLATFORM, TEST_DISTRIBUTION' : 'Running BWC tests'}"