pipeline.groovy
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 06 Dec 2016 21:31:11 +0000
changeset 96 12b2d2bbd417
parent 90 9f574fad295d
parent 80 c213d491e876
child 103 fda494c2564b
permissions -rw-r--r--
Merged changes from branch feature-block-in-context
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
69
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
/*
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 * Jenkins Pipeline definitions for Smalltalk/X jv-branch
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
 *
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
 * Following pipelines are defined here:
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
 *
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 *  * `build()` - compiles and tests all supported configurations
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 *    No artifacts are archived
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 *
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 *  * `integration()` - like `build()` pipeline, then all test pass on all
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 *    configurations, archive artifacts and push staged changes to opstream.
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 */
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
/*
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
 * Supported configurations
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 */
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
configurations = [
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    'NODE': ['windows' , 'linux' ],
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
    'ARCH': ['i386', 'x86_64' ]
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
]
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
/*
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
 * "Default" pipeline:
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
 */
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
def build() {
70
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    27
    stage ( "Build" ) {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    28
        matrix ( configurations ) {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    29
            stage ( "Checkout - {${env.NODE}-${env.ARCH}} " ) {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    30
                sshagent([ scm.getCredentialsId() ]) {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    31
                    sh  """
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    32
                        if [ -f Jenkinsfile.rb ]; then
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    33
                            hg pull ${scm.getSource()}
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    34
                        else
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    35
                            hg clone ${scm.getSource()} .
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    36
                        fi
80
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
    37
                        hg up ${branch()}
70
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    38
                        """
90
9f574fad295d When building under CI throw an error if repositoryset is explicitly defined
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
    39
                    sh  "ruby Jenkinsfile.rb --project \"stx:jv-branch\" --arch ${env.ARCH}  update"
70
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    40
                }
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    41
            }
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    42
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    43
            stage ( "Compile - {${env.NODE}-${env.ARCH}}") {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    44
                sh "ruby Jenkinsfile.rb --project \"stx:jv-branch\" compile"
69
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
            }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
        }
70
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    47
    }
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    48
}
69
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
70
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    50
def test() {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    51
    stage ( "Test" ) {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    52
        matrix ( configurations ) {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    53
            stage ( "Test - {${env.NODE}-${env.ARCH}}") {
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    54
                sh "ruby Jenkinsfile.rb --project \"stx:jv-branch\" test"
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    55
                junit allowEmptyResults: true, testResults: "reports/*build${env.BUILD_NUMBER}*.xml"
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    56
            }
69
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
        }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
}
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
/*
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
 * "Integration" pipeline
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
 */
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
def integration() {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    build()
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    /*
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
     * If a single test fails, abort the pipeline. There's no point
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
     * archiving a broken build.
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
     */
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    if (currentBuild.result == 'UNSTABLE') {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
        return;
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    artifacts()
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    push_to_upstream()
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
}
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
def combine(configurations, axes = null, axis = 0, partial = new HashMap(), combinations = []) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    def axes0 = axes
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    if (axes0 == null) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
        axes0 = configurations.keySet().toArray();
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    if ( axis < axes0.length ) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
        for ( value in configurations[axes0[axis]] ) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
            def combined = partial.clone()
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
            combined[axes0[axis]] = value
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
            combine(configurations, axes0, axis + 1, combined, combinations)
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
        }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    } else {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
        combinations.add(partial)
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    return combinations;
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
}
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
def matrix(configurations, block) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    def combinations = combine(configurations).toArray()
70
8e73f248c6d4 Changed logic used to check whether to checkout or download stc and librun:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
    97
    def branches = [failFast: true]
69
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    for (i = 0; i < combinations.length; i++) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
        def index = i
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
        def conf = combinations[i];
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
        branches["${conf.NODE}-${conf.ARCH}"] = {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
            node ( conf.NODE ) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
                def newEnv = []
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
                for (k in conf.keySet()) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
                    newEnv.add("${k}=${conf[k]}")
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
                }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
                withEnv ( newEnv ) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
                    ws ("workspace/${env.JOB_NAME}/${env.ARCH}") {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
                        block()
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
                    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
                }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
            }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
        }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    parallel branches
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
}
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
def any(configurations, block) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
    def axes = configurations.keySet().toArray()
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
    def conf = [:]
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    for (axis in axes) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
        conf[axis] = configurations[axis][0]
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    node ( conf.NODE ) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
        def newEnv = []
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
        for (k in conf.keySet()) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
            newEnv.add("${k}=${conf[k]}")
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
        }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
        withEnv ( newEnv ) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
            ws ("workspace/${env.JOB_NAME}/${env.ARCH}") {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
                block()
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
            }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
        }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
}
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
def artifacts() {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    matrix ( configurations ) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
        stage ( "Artifacts - {${env.NODE}-${env.ARCH}}") {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
            sh "ruby Jenkinsfile.rb --project \"stx:jv-branch\" artifacts"
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
            archiveArtifacts artifacts: "artifacts/*build${env.BUILD_NUMBER}*.zip, artifacts/*build${env.BUILD_NUMBER}*.bz2, artifacts/*build${env.BUILD_NUMBER}*.sha256", fingerprint: true//, onlyIfSuccessful: true
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
        }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
}
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
def push_to_upstream() {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    any ( configurations ) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
        withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: '1c40eb8f-c7ff-4ef7-8fc8-96aa6310907c', passwordVariable: 'pass', usernameVariable: 'user']]) {
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
            sh "rake \"workflow:push-upstream[${user}, ${pass}]\""
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
        }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
}
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
/*
80
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   158
 * A helper function to return a currently used Rakefiles
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   159
 * branch.
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   160
 *
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   161
 * For normal jobs this is the value of 'Branch'
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   162
 * field from SCM configuration.
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   163
 *
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   164
 * For multibranch jobs, this is the value of BRANCH_NAME environment
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   165
 * variable.
69
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
 */
80
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   167
def branch() {
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   168
    if (env.BRANCH_NAME == null) {
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   169
        return scm.getBranch();
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   170
    } else {
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   171
        return env.BRANCH_NAME;
69
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    }
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
}
23cdc822cfc5 Initial support for Jenkins pipelines.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
80
c213d491e876 Added feature branch "feature-block-in-context"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   175
96
12b2d2bbd417 Merged changes from branch feature-block-in-context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90 80
diff changeset
   176
return this;