ci/build.groovy
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 13 Nov 2019 19:08:42 +0000
changeset 280 c012c276634e
parent 222 80f098bd53ca
child 292 00d3840350c2
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
222
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
/*
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 * Run default pipeline. See `steps.groovy` for details.
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
 */
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
def steps;
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
/*
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 * A helper function to return a branch to build.
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 *
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 * For normal jobs this is the value of 'Branch' field from SCM configuration.
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 * For multibranch jobs, this is the value of BRANCH_NAME environment variable.
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 *
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
 * This is the same as build() function in `steps.groovy` and should be kept
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
 * in sync. We cannot use the one there as we yet have to load it.
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
 */
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
def branch() {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    if (env.BRANCH_NAME == null) {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
        return scm.getBranch();
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
    } else {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
        return env.BRANCH_NAME;
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    }
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
}
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
stage ( "Load Pipeline") {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
    node {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
        /*
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
         * Do not use default workspace here as checkout
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
         * would erase all contents. Use a dedicated
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
         * workspace instead
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
         */
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
        ws ("workspace/${env.JOB_NAME}@loadpipeline") {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
            sshagent([ scm.getCredentialsId() ]) {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
                sh  """
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
                    if [ -f ci/steps.groovy ]; then
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
                        hg pull --ssh ssh ${scm.getSource()}
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
                    else
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
                        hg clone --ssh ssh ${scm.getSource()} .
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
                    fi
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
                    hg up ${branch()}
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
                    """
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
            }
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
            steps = load "ci/steps.groovy"
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
        }
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    }
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
}
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
/*
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
 * Set the branch to build to make sure it's in sync
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
 */
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
steps.branch = branch()
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
/*
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
 * If we're building a 'default' branch, run "integration" pipeline. Otherwise,
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
 * run normal "build" pipeline, assuming this build is just a test build for
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
 * some feature-in-progress. If different logic is needed, then make a branch
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
 * and modify this file
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
 */
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
if ( branch().equals("default") ) {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    steps.integration()
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
} else {
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    steps.build()
80f098bd53ca CI: moved CI-related files to (new) subdirectory `ci`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
}