[feat][core] generate shared wf for testing components w/ kaas core CI
us: https://mirantis.jira.com/browse/PRODX-5353
Change-Id: I004151b237f1d1c465cfb4abf1f3c1c0b0dec1f4
diff --git a/src/com/mirantis/mk/KaasUtils.groovy b/src/com/mirantis/mk/KaasUtils.groovy
index cc58774..afe75e8 100644
--- a/src/com/mirantis/mk/KaasUtils.groovy
+++ b/src/com/mirantis/mk/KaasUtils.groovy
@@ -135,3 +135,66 @@
Keywords: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/.git-message-template#59""")
return [siTests: siTestsRefspec, siPipelines: siPipelinesRefspec, siTestsDockerImage: siTestsDockerImage]
}
+
+
+/**
+ * Trigger KaaS demo jobs based on AWS/OS providers with customized test suite, parsed from external sources (gerrit commit/jj vars)
+ * Keyword list: https://gerrit.mcp.mirantis.com/plugins/gitiles/kaas/core/+/refs/heads/master/.git-message-template
+ * Used for components team to test component changes w/ customized SI tests/refspecs using kaas/core deployment jobs
+ *
+ * @param: (string) component name [iam, lcm, stacklight]
+ * @param: (string) Patch for kaas/cluster releases in json format
+ */
+def triggerPatchedComponentDemo(component, patchSpec) {
+ def common = new com.mirantis.mk.Common()
+ // Determine if custom trigger keywords forwarded from gerrit
+ def triggers = checkDeploymentTestSuite()
+ // Determine SI refspecs
+ def siRefspec = checkCustomSIRefspec()
+
+ def jobs = [:]
+ // TODO manage SI_TESTS_FEATURE_FLAGS through checkCustomSIRefspec()
+ //string(name: "SI_TESTS_FEATURE_FLAGS", value: env.SI_TESTS_FEATURE_FLAGS),
+ def parameters = [
+ string(name: 'SI_TESTS_REFSPEC', value: siRefspec.siTests),
+ string(name: 'SI_PIPELINES_REFSPEC', value: siRefspec.siTests),
+ string(name: 'CUSTOM_RELEASE_PATCH_SPEC', value: patchSpec),
+ booleanParam(name: 'UPGRADE_MGMT', value: triggers.upgradeMgmtEnabled),
+ booleanParam(name: 'RUN_UI_E2E', value: triggers.runUie2eEnabled),
+ booleanParam(name: 'RUN_MGMT_CONFORMANCE', value: triggers.runMgmtConformanceEnabled),
+ booleanParam(name: 'DEPLOY_CHILD', value: triggers.deployChildEnabled),
+ booleanParam(name: 'UPGRADE_CHILD', value: triggers.upgradeChildEnabled),
+ booleanParam(name: 'RUN_CHILD_CONFORMANCE', value: triggers.runChildConformanceEnabled),
+ ]
+
+ jobs["kaas-core-openstack-patched-${component}"] = {
+ try {
+ common.infoMsg('Deploy: patched KaaS demo with Openstack provider')
+ job_info = build job: "kaas-testing-core-openstack-workflow-${component}", parameters: parameters
+ build_description = job_info.getDescription()
+ if (build_description) {
+ currentBuild.description += build_description
+ }
+ } finally {
+ common.infoMsg('Finished: patched KaaS demo with Openstack provider')
+ }
+ }
+ if (triggers.awsOnDemandDemoEnabled) {
+ jobs["kaas-core-aws-patched-${component}"] = {
+ try {
+ common.infoMsg('Deploy: patched KaaS demo with AWS provider')
+ job_info = build job: "kaas-testing-core-aws-workflow-${component}", parameters: parameters
+ build_description = job_info.getDescription()
+ if (build_description) {
+ currentBuild.description += build_description
+ }
+ } finally {
+ common.infoMsg('Finished: patched KaaS demo with AWS provider')
+ }
+ }
+ }
+
+ common.infoMsg('Trigger KaaS demo deployments according to defined provider set')
+ // Limit build concurency workaround examples: https://issues.jenkins-ci.org/browse/JENKINS-44085
+ parallel jobs
+}