can be e.g. vyos-1x.git or vyatta-op.git
def isCustomBuild() {
    // GitHub organisation base URL
    def gitURI = 'git@github.com:vyos/' + getGitRepoName()
    def httpURI = 'https://github.com/vyos/' + getGitRepoName()
    return ! ((getGitRepoURL() == gitURI) || (getGitRepoURL() == httpURI))
}
def setDescription() {
    def item = Jenkins.instance.getItemByFullName(env.JOB_NAME)
    // build up the main description text
    def description = ""
    description += "Build VyOS ISO image
"
    if (isCustomBuild()) {
        description += ""
        description += "Build not started from official Git repository!
"
        description += "
"
        description += "Repository: " + getGitRepoURL() + "
"
        description += "Branch: " + getGitBranchName() + "
"
        description += "
"
    } else {
        description += "Sources taken from Git branch: " + getGitBranchName() + "
"
    }
    item.setDescription(description)
    item.save()
}
/* Only keep the 10 most recent builds. */
def projectProperties = [
    [$class: 'BuildDiscarderProperty',strategy: [$class: 'LogRotator', numToKeepStr: '1']],
]
properties(projectProperties)
setDescription()
pipeline {
    options {
        disableConcurrentBuilds()
        timeout(time: 90, unit: 'MINUTES')
        parallelsAlwaysFailFast()
    }
    triggers {
        cron('H 2 * * *')
    }
    agent {
        dockerfile {
            filename 'Dockerfile'
            dir 'docker'
            args '--privileged --sysctl net.ipv6.conf.lo.disable_ipv6=0 -e GOSU_UID=1006 -e GOSU_GID=1006'
        }
    }
    stages {
        stage('Configure') {
            steps {
                script {
                    def commitId = sh(returnStdout: true, script: 'git rev-parse --short=11 HEAD').trim()
                    currentBuild.description = sprintf('Git SHA1: %s', commitId[-11..-1])
                    sh './configure --build-by autobuild@vyos.net --debian-mirror http://ftp.us.debian.org/debian/'
                }
            }
        }
        stage('Build') {
            steps {
                sh 'sudo make iso'
            }
        }
        stage('Test') {
            steps {
                sh """
                    cd build/ 
                    sudo ../scripts/check-qemu-install --debug live-image-amd64.hybrid.iso
                """
            }
        }
    }
    post {
        success {
            script {
                // only deploy ISO if build from official repository
                if (isCustomBuild())
                    return
                // publish build result, using SSH-dev.packages.vyos.net Jenkins Credentials
                sshagent(['SSH-dev.packages.vyos.net']) {
                    // build up some fancy groovy variables so we do not need to write/copy
                    // every option over and over again!
                    def ARCH = sh(returnStdout: true, script: "dpkg --print-architecture").trim()
                    def SSH_DIR = '/home/sentrium/web/downloads.vyos.io/public_html/rolling/' + getGitBranchName() + '/' + ARCH
                    def SSH_OPTS = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
                    def SSH_REMOTE = 'khagen@10.217.48.113'
                    // No need to explicitly check the return code. The pipeline
                    // will fail if sh returns a non 0 exit code
                    sh """
                        ssh ${SSH_OPTS} ${SSH_REMOTE} -t "bash --login -c 'mkdir -p ${SSH_DIR}'"
                    """
                    sh """
                        ssh ${SSH_OPTS} ${SSH_REMOTE} -t "bash --login -c 'mkdir -p ${SSH_DIR}'"
                    """
                    sh """
                        ssh ${SSH_OPTS} ${SSH_REMOTE} -t "bash --login -c 'find ${SSH_DIR} -type f -mtime +14 -exec rm -f {} \\;'"
                    """
                    sh """
                        scp ${SSH_OPTS} build/vyos*.iso ${SSH_REMOTE}:${SSH_DIR}/
                    """
                    sh """
                        ssh ${SSH_OPTS} ${SSH_REMOTE} -t "bash --login -c '/usr/bin/make-latest-rolling-symlink.sh'"
                    """
                }
            }
        }
        failure {
            archiveArtifacts artifacts: 'build/live-image-amd64.hybrid.iso',
                allowEmptyArchive: true
        }
        cleanup {
            echo 'One way or another, I have finished'
            // the 'build' directory got elevated permissions during the build
            // cdjust permissions so it can be cleaned up by the regular user
            sh '''
                #!/bin/bash
                if [ -d build ]; then
                    sudo chmod -R 777 build/
                fi
            '''
            deleteDir() /* cleanup our workspace */
        }
    }
}