blob: cc5c7bec35e8e3e428f5a8f8b302a3973f0cc974 [file] [log] [blame]
chnydad66d6fa2017-06-22 09:34:43 +02001
2/**
3 * Test salt models pipeline
4 * DEFAULT_GIT_REF
5 * DEFAULT_GIT_URL
6 * CREDENTIALS_ID
7 * EXTRA_FORMULAS
Jakub Josef107769c2017-08-17 13:38:15 +02008 * CLUSTER_NAME
chnydad66d6fa2017-06-22 09:34:43 +02009 * NODE_TARGET
10 * SYSTEM_GIT_URL
11 * SYSTEM_GIT_REF
Mykyta Karpinc0758f32017-06-23 18:10:24 +030012 * FORMULAS_SOURCE
chnydabb6d2a62017-07-31 14:09:16 +020013 * MAX_CPU_PER_JOB
Jakub Josef6e4a09d2017-10-05 16:53:02 +020014 * LEGACY_TEST_MODE
Jakub Josefb1c81632017-10-05 17:19:53 +020015 * RECLASS_IGNORE_CLASS_NOTFOUND
Dmitry Ukovb2aa6db2017-10-23 12:30:31 +040016 * APT_REPOSITORY
17 * APT_REPOSITORY_GPG
chnydad66d6fa2017-06-22 09:34:43 +020018 */
19
20def common = new com.mirantis.mk.Common()
21def gerrit = new com.mirantis.mk.Gerrit()
chnyda4ed3c272017-06-22 14:50:09 +020022def git = new com.mirantis.mk.Git()
chnydac6092a22017-06-22 14:47:10 +020023def ssh = new com.mirantis.mk.Ssh()
chnydad66d6fa2017-06-22 09:34:43 +020024def saltModelTesting = new com.mirantis.mk.SaltModelTesting()
25
26def defaultGitRef = DEFAULT_GIT_REF
27def defaultGitUrl = DEFAULT_GIT_URL
28
29def checkouted = false
chnyda03f3ad42017-09-19 14:41:07 +020030
31throttle(['test-model']) {
32 node("python") {
33 try{
34 stage("checkout") {
35 if(defaultGitRef != "" && defaultGitUrl != "") {
36 checkouted = gerrit.gerritPatchsetCheckout(defaultGitUrl, defaultGitRef, "HEAD", CREDENTIALS_ID)
37 } else {
38 throw new Exception("Cannot checkout gerrit patchset, DEFAULT_GIT_URL or DEFAULT_GIT_REF is null")
39 }
40 if(checkouted) {
41 if (fileExists('classes/system')) {
42 if (SYSTEM_GIT_URL == "") {
43 ssh.prepareSshAgentKey(CREDENTIALS_ID)
44 dir('classes/system') {
45 remoteUrl = git.getGitRemote()
46 ssh.ensureKnownHosts(remoteUrl)
47 }
48 ssh.agentSh("git submodule init; git submodule sync; git submodule update --recursive")
49 } else {
50 dir('classes/system') {
51 if (!gerrit.gerritPatchsetCheckout(SYSTEM_GIT_URL, SYSTEM_GIT_REF, "HEAD", CREDENTIALS_ID)) {
52 common.errorMsg("Failed to obtain system reclass with url: ${SYSTEM_GIT_URL} and ${SYSTEM_GIT_REF}")
53 }
chnydad66d6fa2017-06-22 09:34:43 +020054 }
55 }
56 }
57 }
58 }
chnydad66d6fa2017-06-22 09:34:43 +020059
chnyda03f3ad42017-09-19 14:41:07 +020060 stage("test node") {
61 if (checkouted) {
62 def workspace = common.getWorkspace()
Jakub Josef70fd76e2017-09-25 14:48:44 +020063 common.infoMsg("Running salt model test for node ${NODE_TARGET} in cluster ${CLUSTER_NAME}")
chnyda3dcf0bd2017-11-30 11:49:24 +010064 try {
chnyda105689e2017-11-30 12:38:20 +010065 saltModelTesting.setupAndTestNode(NODE_TARGET, CLUSTER_NAME, EXTRA_FORMULAS, workspace, FORMULAS_SOURCE, FORMULAS_REVISION, MAX_CPU_PER_JOB.toInteger(), RECLASS_IGNORE_CLASS_NOTFOUND, LEGACY_TEST_MODE, APT_REPOSITORY, APT_REPOSITORY_GPG)
chnyda3dcf0bd2017-11-30 11:49:24 +010066 } catch (Exception e) {
67 if (e.getMessage() == "script returned exit code 124") {
68 common.errorMsg("Impossible to test node due to timeout of salt-master, ABORTING BUILD")
69 currentBuild.result = "ABORTED"
70 } else {
71 throw e
72 }
73 }
chnyda03f3ad42017-09-19 14:41:07 +020074 }
chnydad66d6fa2017-06-22 09:34:43 +020075 }
chnyda03f3ad42017-09-19 14:41:07 +020076 } catch (Throwable e) {
77 // If there was an error or exception thrown, the build failed
78 currentBuild.result = "FAILURE"
79 currentBuild.description = currentBuild.description ? e.message + " " + currentBuild.description : e.message
80 throw e
chnydad66d6fa2017-06-22 09:34:43 +020081 }
chnydad66d6fa2017-06-22 09:34:43 +020082 }
83}