· 6 years ago · Mar 23, 2020, 05:56 PM
1/**
2*
3* Workflow for KaaS bootstrap on VMs and run test suites against deployments
4
5* KAAS_PIPELINE_REFSPEC Refspec for kaas related pipelines, for testing additional pipeline changes, generally using GERRIT_REFSPEC
6* GERRIT_REFSPEC Parameter also used for fetching groovy pipeline from kaas repo [KAAS_PIPELINE_REFSPEC]
7
8* # Variables used to render KaaS bootstrap templates
9* KAAS_EXTERNAL_NETWORK_ID ID of 'public' network, example for EU cloud: bf6b85a1-39db-4582-b0d1-f4291dddb9cf
10* ENV_NAME Used to provide naming for ceed resources
11* CLUSTER_NAME Used to provide common naming for mgmt cluster/machine resources
12* CDN_REGION Preferrable CDN region
13* CUSTOM_LCM_SPEC TODO
14* KAAS_MANAGEMENT_CLUSTER_FLAVOR Flavor name, which will be used for kaas mgmt machines
15* SKIP_BOOTSTRAP_TEMPLATES_CHECK Skip bootstrap templates preflight checks, useful in case of KAAS_CUSTOM_DEPLOYMENT_BOOTSTRAP_TEMPLATES_TARBALL
16*
17* # Variables used to specify tests
18* DEPLOY_CHILD_CLUSTER Deploy child cluster according to specified release version
19* UPGRADE_CHILD_CLUSTER Upgrade child cluster according to specified release version
20* RUN_UI_E2E Run UI e2e tests against mgmt cluster
21* RUN_MGMT_CFM Run SI conformance tests against mgmt cluster
22*
23* # Remote access parameters
24* OPENSTACK_API_CREDENTIALS Jenkins credential ID with OpenStack OS_USERNAME and OS_PASSWORD, example: system-integration-team-ci
25* CLOUD_KEY_NAME OpenStack keypair name to create the 'seed' node in the OpenStack, example: kaas-vm-seed-node
26* SEED_PRIVATE_KEY_CREDENTIAL_ID Jenkins credential ID with username and private key to access the 'seed' node created with CLOUD_KEY_NAME
27*
28* # Variables used to render clouds.yaml for OpenStack
29* OS_AUTH_URL OpenStack auth URL, example for EU cloud: https://ic-eu.ssl.mirantis.net:5000/v3
30* OS_IDENTITY_API_VERSION OpenStack auth API version, example: 3
31* OS_INTERFACE OpenStack endpoints interface, example: public
32* OS_PROJECT_ID OpenStack project ID, used for bootstrap.sh, example for 'systest-team': 7fd2d1904af849ccb2d72fcfb8469c97
33* OS_PROJECT_NAME OpenStack project name, used for si-tests, example: systest-team
34* OS_REGION_NAME OpenStack region name, example: RegionOne
35* OS_USER_DOMAIN_NAME OpenStack domain name, example: default
36* OPENSTACK_ENVIRONMENT OpenStack environment key name for ceed stack cleanup
37*
38* Optional parameters:
39* TOTAL_TIMEOUT Total workflow timeout
40* SI_TESTS_REFSPEC Refspec of patchset in gerrit.mcp.mirantis.com for the kaas/si-tests repository
41*/
42
43//TODO (vnaumov) handle keyword triggers
44
45scenario_yaml = '''\
46workflow:
47- job: kaas-testing-core-release-artifact
48 parameters:
49 KAAS_RELEASES_REFSPEC:
50 type: StringParameterValue
51 use_variable: GERRIT_REFSPEC
52 KAAS_PIPELINE_REFSPEC:
53 type: StringParameterValue
54 use_variable: KAAS_PIPELINE_REFSPEC
55 artifacts:
56 KAAS_RELEASE_FILE: release_version.txt
57 KAAS_RELEASE_REPO_URL: release_repo_url.txt
58 KAAS_CUSTOM_DEPLOYMENT_RELEASE_REPO_URL: release_custom_repo_url.txt.txt
59
60- job: kaas-testing-core-bootstrap-template-artifact
61 parameters:
62 KAAS_RELEASES_REFSPEC:
63 type: StringParameterValue
64 use_variable: GERRIT_REFSPEC
65 KAAS_PIPELINE_REFSPEC:
66 type: StringParameterValue
67 use_variable: KAAS_PIPELINE_REFSPEC
68 OS_MANAGEMENT_CLUSTER_FLAVOR:
69 type: StringParameterValue
70 use_variable: KAAS_MANAGEMENT_CLUSTER_FLAVOR
71 OS_MANAGEMENT_CLUSTER_NAME:
72 type: StringParameterValue
73 use_variable: CLUSTER_NAME
74 OS_MANAGEMENT_MACHINE_NAME_PREFIX:
75 type: StringParameterValue
76 use_variable: CLUSTER_NAME
77 artifacts:
78 KAAS_CUSTOM_DEPLOYMENT_BOOTSTRAP_TEMPLATES_TARBALL: release_custom_bootstrap_templates_url.txt
79
80- job: si-test-create-vm-kaas-management
81 ignore_failed: true
82 parameters:
83 ENV_NAME:
84 type: StringParameterValue
85 use_variable: ENV_NAME
86 CLUSTER_NAME:
87 type: StringParameterValue
88 use_variable: CLUSTER_NAME
89 CDN_REGION:
90 type: StringParameterValue
91 use_variable: CDN_REGION
92 IAM_VERSION:
93 type: StringParameterValue
94 use_variable: IAM_VERSION
95 # KaaS Core release customization
96 KAAS_RELEASE_REPO_URL:
97 type: StringParameterValue
98 get_variable_from_url: KAAS_RELEASE_REPO_URL
99 KAAS_RELEASE_FILE:
100 type: StringParameterValue
101 get_variable_from_url: KAAS_RELEASE_FILE
102 KAAS_CUSTOM_DEPLOYMENT_RELEASE_REPO_URL:
103 type: StringParameterValue
104 get_variable_from_url: KAAS_CUSTOM_DEPLOYMENT_RELEASE_REPO_URL
105 KAAS_CUSTOM_DEPLOYMENT_BOOTSTRAP_TEMPLATES_TARBALL:
106 type: StringParameterValue
107 get_variable_from_url: KAAS_CUSTOM_DEPLOYMENT_BOOTSTRAP_TEMPLATES_TARBALL
108 SKIP_BOOTSTRAP_TEMPLATES_CHECK:
109 type: BooleanParameterValue
110 use_variable: SKIP_BOOTSTRAP_TEMPLATES_CHECK
111 KAAS_RELEASES_REFSPEC:
112 type: StringParameterValue
113 use_variable: ""
114 # Creds
115 OPENSTACK_API_CREDENTIALS:
116 type: StringParameterValue
117 use_variable: OPENSTACK_API_CREDENTIALS
118 OS_AUTH_URL:
119 type: StringParameterValue
120 use_variable: OS_AUTH_URL
121 OS_IDENTITY_API_VERSION:
122 type: StringParameterValue
123 use_variable: OS_IDENTITY_API_VERSION
124 OS_INTERFACE:
125 type: StringParameterValue
126 use_variable: OS_INTERFACE
127 OS_PROJECT_ID:
128 type: StringParameterValue
129 use_variable: OS_PROJECT_ID
130 OS_PROJECT_NAME:
131 type: StringParameterValue
132 use_variable: OS_PROJECT_NAME
133 OS_REGION_NAME:
134 type: StringParameterValue
135 use_variable: OS_REGION_NAME
136 OS_USER_DOMAIN_NAME:
137 type: StringParameterValue
138 use_variable: OS_USER_DOMAIN_NAME
139 KAAS_EXTERNAL_NETWORK_ID:
140 type: StringParameterValue
141 use_variable: KAAS_EXTERNAL_NETWORK_ID
142 CLOUD_KEY_NAME:
143 type: StringParameterValue
144 use_variable: CLOUD_KEY_NAME
145 SEED_PRIVATE_KEY_CREDENTIAL_ID:
146 type: StringParameterValue
147 use_variable: SEED_PRIVATE_KEY_CREDENTIAL_ID
148 SI_TESTS_REFSPEC:
149 type: StringParameterValue
150 use_variable: SI_TESTS_REFSPEC
151 REPORT_TO_TESTRAIL:
152 type: BooleanParameterValue
153 use_variable: REPORT_TO_TESTRAIL
154 artifacts:
155 KUBECONFIG_ARTIFACT: artifacts/management_kubeconfig
156 DEPLOYED_KAAS_VERSION: artifacts/management_version
157 MGMT_K8S_VERSION: artifacts/management_k8s_version
158 KAAS_MGMT_CLUSTER_PRIVATE_KEY_FILE: artifacts/management_id_rsa
159'''
160
161
162common = new com.mirantis.mk.Common()
163def workflow = new com.mirantis.mk.Workflow()
164def total_timeout = env.TOTAL_TIMEOUT ?: 14400
165
166node('python') {
167 // Import external kaas groovy library
168 stage('Getting kaas-libraries') {
169 checkout scm
170 baseKaas = load 'hack/backend/kaasLibrary.groovy'
171 }
172 // Determine if custom trigger keywords forwarded from gerrit
173 def triggers = baseKaas.checkCustomGerritTriggers()
174 deployChild = triggers.deployChildEnabled
175 upgradeChild = triggers.upgradeChildEnabled
176 runUie2e = triggers.runUie2eEnabled
177 runMgmtConformance = triggers.runMgmtConformanceEnabled
178
179 stage('Generating workflow scenario') {
180 if (deployChild) {
181 scenario_yaml += '\n' + baseKaas.siChildOsCreate
182 scenario_yaml += '\n' + baseKaas.siChildCollectLogs
183 scenario_yaml += '\n' + baseKaas.siChildDelete
184 }
185 scenario_yaml += '\n' + baseKaas.siMgmtDelete
186 }
187
188 stage('Generating final steps in scenario') {
189 scenario_yaml += '\nfinally:'
190
191 if (deployChild) {
192 scenario_yaml += '\n' + baseKaas.siChildCollectLogs
193 }
194 scenario_yaml += '\n' + baseKaas.siMgmtSeedDelete
195
196 scenario = readYaml text: scenario_yaml
197 common.InfoMsg("Scenario generated successfully: \n${scenario}")
198 }
199
200 timeout(time: total_timeout.toInteger(), unit: 'SECONDS') {
201 workflow.runScenario(scenario)
202 } // timeout
203}