This repository has been archived by the owner on Jun 7, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathPopulateCI.groovy
executable file
·90 lines (73 loc) · 3.49 KB
/
PopulateCI.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
Format: Electric Flow DSL
File: PopulateCI.groovy
Description: Populate the Commander CI dashboard with jobs
Features
--------
- Create procedures for each stream
- Set to fail randomly
- Dummy "Code Coverage" data stored to job for plotting in CI
- Create procedure to run stream procedures
- Create CI Configuration
- Create CI charts for each stream
- Run the the stream procedure runner
Command-line run instructions
-----------------------------
ectool deleteProject "Sample CI Project"
ectool evalDsl --dslFile PopulateCI.groovy
*/
def projName = "Sample CI Project"
def procedures = ["Stream1","Stream2","Stream3","Stream4"]
// Remove old Project
//transaction {deleteProject (projectName: projName, foreground: true)}
// Create new
// Makes sure CI property sheets are present
property "/myUser/ec_ci/ciProjects"
property "/myUser/ec_ci/openProjects"
project projName, {
description = ""
// Default resource to use to run the "build" jobs
resourceName = "local"
// Procedure to run all the CI build jobs. Step definitions added below for each CI procedure.
procedure "Populate CI"
// Create CI Build Procedures
procedures.each { procedureName ->
procedure procedureName, {
// Procedure value to track how many times the procedure has been run
counter = 0
// Procedure job steps
step stepName: "Check out source code"
step stepName: "Build",
command: "ectool setProperty /myJob/codeCoverage " + '$' + '[/javascript Math.round(90 + Math.random()*10.0).toString() ]'
step stepName: "Publish Artifact"
step stepName: "DEMO: Simulate Failure",
command: '$' + '[/javascript (Math.random() > 0.9)?"exit 1":""]'
step stepName: "DEMO: Run Again",
condition: '$' + '[/javascript myProcedure.counter++;(myProcedure.counter < 20)?"true":"false"]',
command: "ectool runProcedure \"$projName\" --procedureName \"$procedureName\" --scheduleName \"$procedureName\""
}
schedule projectName: projName,
scheduleName: procedureName,
scheduleDisabled: true,
procedureName: procedureName,
{
ec_ci.checkoutSCMConfigName = "none"
ec_ci.ciConfigDescription = ""
property propertyName: "/myProject/schedules/$procedureName/ec_ci/charts/Build Time/series1-label", value: "Elapsed time"
property propertyName: "/myProject/schedules/$procedureName/ec_ci/charts/Build Time/series1-propertyName", value: "elapsedTime"
property propertyName: "/myProject/schedules/$procedureName/ec_ci/charts/Build Time/series1-scalingDivisor", value: 1000
property propertyName: "/myProject/schedules/$procedureName/ec_ci/charts/Code Coverage/series1-label", value: "Code Coverage %"
property propertyName: "/myProject/schedules/$procedureName/ec_ci/charts/Code Coverage/series1-propertyName", value: "codeCoverage"
property propertyName: "/myProject/schedules/$procedureName/ec_ci/charts/Code Coverage/series1-scalingDivisor", value: 1
ec_customEditorData.TriggerFlag = 2 // Show all jobs in CI dashboard
}
step procedureName: "Populate CI",
stepName: "Run $procedureName",
parallel: true,
command: "ectool runProcedure \"$projName\" --procedureName \"$procedureName\" --scheduleName \"$procedureName\""
}
}
// Add project to CI
currentProjects = getProperty(propertyName: "/myUser/ec_ci/ciProjects").value
property propertyName: "/myUser/ec_ci/ciProjects", value: "${currentProjects}\n${projName}"
transaction {runProcedure procedureName: "Populate CI", projectName: projName}