ci/integrate.groovy
author Jan Vrany <jan.vrany@labware.com>
Fri, 12 Jun 2020 21:17:27 +0100
changeset 292 00d3840350c2
child 295 a04034567c92
permissions -rw-r--r--
CI: use different files for different pipelines... ...rather than trying to be smart a decide based on branch name. This allows CI adminstrators to choose pipeline of their liking by specifying correspondig file.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
292
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     1
/*
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     2
 * Run default pipeline. See `steps.groovy` for details.
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     3
 */
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     4
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     5
def steps;
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     6
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     7
/*
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     8
 * A helper function to return a branch to build.
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     9
 *
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    10
 * For normal jobs this is the value of 'Branch' field from SCM configuration.
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    11
 * For multibranch jobs, this is the value of BRANCH_NAME environment variable.
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    12
 *
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    13
 * This is the same as build() function in `steps.groovy` and should be kept
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    14
 * in sync. We cannot use the one there as we yet have to load it.
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    15
 */
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    16
def branch() {
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    17
    if (env.BRANCH_NAME == null) {
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    18
        return scm.getBranch();
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    19
    } else {
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    20
        return env.BRANCH_NAME;
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    21
    }
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    22
}
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    23
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    24
stage ( "Load Pipeline") {
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    25
    node {
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    26
        /*
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    27
         * Do not use default workspace here as checkout
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    28
         * would erase all contents. Use a dedicated
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    29
         * workspace instead
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    30
         */
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    31
        ws ("workspace/${env.JOB_NAME}@loadpipeline") {
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    32
            sshagent([ scm.getCredentialsId() ]) {
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    33
                sh  """
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    34
                    if [ -f ci/steps.groovy ]; then
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    35
                        hg pull --ssh ssh ${scm.getSource()}
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    36
                    else
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    37
                        hg clone --ssh ssh ${scm.getSource()} .
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    38
                    fi
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    39
                    hg up ${branch()}
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    40
                    """
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    41
            }
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    42
            steps = load "ci/steps.groovy"
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    43
        }
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    44
    }
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    45
}
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    46
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    47
/*
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    48
 * Set the branch to build to make sure it's in sync...
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    49
 */
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    50
steps.branch = branch()
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    51
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    52
/*
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    53
 * ...and fire the pipeline 
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    54
 */
00d3840350c2 CI: use different files for different pipelines...
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    55
steps.integration()