mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-12-23 14:15:19 +00:00
036c2e5e45
Build testing of changes happens on GitHub actions and the integration tests will build the binary (with different feature flags) again. So these earlier build operations are just wasted time on the critical path. Signed-off-by: Rob Bradford <robert.bradford@intel.com>
172 lines
3.8 KiB
Groovy
172 lines
3.8 KiB
Groovy
pipeline{
|
|
agent none
|
|
stages {
|
|
stage ('Early checks') {
|
|
agent { node { label 'master' } }
|
|
stages {
|
|
stage ('Check for RFC/WIP builds') {
|
|
when {
|
|
changeRequest comparator: 'REGEXP', title: '.*(rfc|RFC|wip|WIP).*'
|
|
beforeAgent true
|
|
}
|
|
steps {
|
|
error("Failing as this is marked as a WIP or RFC PR.")
|
|
}
|
|
}
|
|
stage ('Cancel older builds') {
|
|
when { not { branch 'master' } }
|
|
steps {
|
|
cancelPreviousBuilds()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ('Build') {
|
|
failFast true
|
|
parallel {
|
|
stage ('Worker build') {
|
|
agent { node { label 'bionic' } }
|
|
options {
|
|
timeout(time: 1, unit: 'HOURS')
|
|
}
|
|
stages {
|
|
stage ('Checkout') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
stage ('Run OpenAPI tests') {
|
|
steps {
|
|
sh "scripts/run_openapi_tests.sh"
|
|
}
|
|
}
|
|
stage ('Run unit tests') {
|
|
steps {
|
|
sh "scripts/dev_cli.sh tests --unit"
|
|
}
|
|
}
|
|
stage ('Run integration tests') {
|
|
steps {
|
|
sh "scripts/dev_cli.sh tests --integration"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ('AArch64 worker build') {
|
|
agent { node { label 'bionic-arm64' } }
|
|
options {
|
|
timeout(time: 1, unit: 'HOURS')
|
|
}
|
|
stages {
|
|
stage ('Checkout') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
stage ('Run unit tests') {
|
|
steps {
|
|
sh "scripts/dev_cli.sh tests --unit"
|
|
}
|
|
}
|
|
stage ('Run integration tests') {
|
|
steps {
|
|
sh "scripts/dev_cli.sh tests --integration"
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
sh "sudo chown -R jenkins.jenkins ${WORKSPACE}"
|
|
deleteDir()
|
|
}
|
|
}
|
|
}
|
|
stage ('Worker build (musl)') {
|
|
agent { node { label 'bionic' } }
|
|
options {
|
|
timeout(time: 1, unit: 'HOURS')
|
|
}
|
|
stages {
|
|
stage ('Checkout') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
stage ('Run unit tests for musl') {
|
|
steps {
|
|
sh "scripts/dev_cli.sh tests --unit --libc musl"
|
|
}
|
|
}
|
|
stage ('Run integration tests for musl') {
|
|
steps {
|
|
sh "scripts/dev_cli.sh tests --integration --libc musl"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ('Worker build SGX') {
|
|
agent { node { label 'bionic-sgx' } }
|
|
options {
|
|
timeout(time: 1, unit: 'HOURS')
|
|
}
|
|
when { branch 'master' }
|
|
stages {
|
|
stage ('Checkout') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
stage ('Run SGX integration tests') {
|
|
steps {
|
|
sh "scripts/dev_cli.sh tests --integration-sgx"
|
|
}
|
|
}
|
|
stage ('Run SGX integration tests for musl') {
|
|
steps {
|
|
sh "scripts/dev_cli.sh tests --integration-sgx --libc musl"
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
sh "sudo chown -R jenkins.jenkins ${WORKSPACE}"
|
|
deleteDir()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
regression {
|
|
script {
|
|
if (env.BRANCH_NAME == 'master') {
|
|
slackSend (color: '#ff0000', message: '"master" branch build is now failing')
|
|
}
|
|
}
|
|
}
|
|
fixed {
|
|
script {
|
|
if (env.BRANCH_NAME == 'master') {
|
|
slackSend (color: '#00ff00', message: '"master" branch build is now fixed')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
def cancelPreviousBuilds() {
|
|
// Check for other instances of this particular build, cancel any that are older than the current one
|
|
def jobName = env.JOB_NAME
|
|
def currentBuildNumber = env.BUILD_NUMBER.toInteger()
|
|
def currentJob = Jenkins.instance.getItemByFullName(jobName)
|
|
|
|
// Loop through all instances of this particular job/branch
|
|
for (def build : currentJob.builds) {
|
|
if (build.isBuilding() && (build.number.toInteger() < currentBuildNumber)) {
|
|
echo "Older build still queued. Sending kill signal to build number: ${build.number}"
|
|
build.doStop()
|
|
}
|
|
}
|
|
}
|