aboutsummaryrefslogtreecommitdiff
path: root/jenkins/generator_DSL.groovy
blob: 5f5d7014c936f9efd653bd6e40cf1cff89d77e0e (plain) (blame)
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
// Job generator script. Uses Job-DSL plugin API.

// Third party YAML parsing class. Obtain from URL below before use.
// https://repo1.maven.org/maven2/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar
import org.yaml.snakeyaml.Yaml

def yaml = new Yaml()
def config = yaml.load(readFileFromWorkspace("manifests/${manifest_file}"))


//-----------------------------------------------------------------------
// Create a folder to contain the jobs which are created below.
suite_name = "${manifest_file.tokenize('.')[0]}_${label}_py${py_version}"
folder(suite_name)


//-----------------------------------------------------------------------
// Generate the dispatch job that will trigger the chain of package
// build jobs.

pipelineJob("${suite_name}/dispatch") {
    println("label = ${label}")
    println("manifest_file = ${manifest_file}")
    println("py_version = ${py_version}")
    environmentVariables {
        env("LABEL", "${label}")
        env("MANIFEST_FILE", "${manifest_file}")
        env("PY_VERSION", "${py_version}")
    }
    definition {
        cps {
            script(readFileFromWorkspace('jenkins/dispatch.groovy'))
            sandbox()
        }
    }
}


//-----------------------------------------------------------------------
// Generate the series of actual package building jobs.

for(pkg in config.packages) {

    pipelineJob("${suite_name}/${pkg}") {
        parameters {
            stringParam('label',
                        'label-DEFAULTVALUE',
                        'The node on which to run.')
            stringParam('py_version',
                        'py_version-DEFAULTVALUE',
                        'python version to use')
            stringParam('numpy_version',
                        'numpy_version-DEFAULTVALUE',
                        'Version of numpy to use')
            stringParam('parent_workspace',
                        'parent_workspace-DEFAULTVALUE',
                        'The workspace dir of the dispatch job')
            stringParam('manifest_file',
                        'manifest_file-DEFAULTVALUE',
                        'Manifest (release) file to use for the build.')
        }
        definition {
            cps {
                script(readFileFromWorkspace('jenkins/package_builder.groovy'))
                sandbox()
            }
        }
    } // end pipelineJob

} //end for(pkg...