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: '10']],
]
properties(projectProperties)
setDescription()
// Due to long build times on DockerHub we rather build the container by ourself
// and publish it later on.
node('Docker') {
stage('Build Container') {
script {
git branch: getGitBranchName(),
url: getGitRepoURL()
// create container name on demand
env.DOCKER_IMAGE = "vyos/vyos-build:" + getGitBranchName()
sh "docker build -t ${env.DOCKER_IMAGE} docker"
withDockerRegistry([credentialsId: "DockerHub"]) {
sh "docker push ${env.DOCKER_IMAGE}"
}
}
}
}
pipeline {
options {
skipDefaultCheckout()
disableConcurrentBuilds()
timeout(time: 90, unit: 'MINUTES')
parallelsAlwaysFailFast()
timestamps()
}
triggers {
cron('H 6 * * *')
}
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('Build ISO') {
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/ \
--build-type release \
--version 1.2-crux-\$(date +%Y%m%d%H%M)
sudo make iso
"""
if (fileExists('build/live-image-amd64.hybrid.iso') == false) {
error('ISO build error')
}
}
}
}
}
post {
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 */
}
}
}