mirror of
https://gitee.com/xiaohuolufeihua/bizhang_-obav.git
synced 2026-05-21 01:12:11 +00:00
This target was never fully supported and is heavily dependent on a number of DriverFramework drivers that have no in tree equivalents (bebop bus, flow, rangefinder, etc). Deleting this will make it easier to fully drop DriverFramework shortly.
143 lines
4.9 KiB
Groovy
143 lines
4.9 KiB
Groovy
#!/usr/bin/env groovy
|
|
|
|
pipeline {
|
|
agent none
|
|
stages {
|
|
|
|
stage('Build') {
|
|
steps {
|
|
script {
|
|
def build_nodes = [:]
|
|
def docker_images = [
|
|
armhf: "px4io/px4-dev-armhf:2019-10-24",
|
|
base: "px4io/px4-dev-base-bionic:2019-10-24",
|
|
nuttx: "px4io/px4-dev-nuttx:2019-10-24",
|
|
snapdragon: "lorenzmeier/px4-dev-snapdragon:2018-09-12"
|
|
]
|
|
|
|
def armhf_builds = [
|
|
target: ["aerotenna_ocpoc_default", "beaglebone_blue_default", "emlid_navio2_default", "px4_raspberrypi_default"],
|
|
image: docker_images.armhf,
|
|
archive: false
|
|
]
|
|
|
|
def base_builds = [
|
|
target: ["px4_sitl_rtps"],
|
|
image: docker_images.base,
|
|
archive: false
|
|
]
|
|
|
|
def nuttx_builds_archive = [
|
|
target: [
|
|
"px4_io-v2_default",
|
|
"px4_fmu-v2_default", "px4_fmu-v2_fixedwing", "px4_fmu-v2_lpe", "px4_fmu-v2_multicopter", "px4_fmu-v2_rover", "px4_fmu-v2_test",
|
|
"px4_fmu-v3_default",
|
|
"px4_fmu-v4_default",
|
|
"px4_fmu-v4pro_default",
|
|
"px4_fmu-v5_default", "px4_fmu-v5_fixedwing", "px4_fmu-v5_multicopter", "px4_fmu-v5_rover", "px4_fmu-v5_rtps", "px4_fmu-v5_stackcheck",
|
|
"px4_fmu-v5x_default",
|
|
"intel_aerofc-v1_default", "auav_x21_default", "av_x-v1_default", "bitcraze_crazyflie_default", "airmind_mindpx-v2_default",
|
|
"holybro_kakutef7", "holybro_durandal-v1_default", "holybro_durandal-v1_stackcheck", "modalai_fc-v1_default", "mro_ctrl-zero-f7_default", "nxp_fmuk66-v3_default", "omnibus_f4sd_default",
|
|
"uvify_core_default"],
|
|
image: docker_images.nuttx,
|
|
archive: true
|
|
]
|
|
|
|
def snapdragon_builds = [
|
|
target: ["atlflight_eagle_qurt-default", "atlflight_eagle_default"],
|
|
image: docker_images.snapdragon,
|
|
archive: false
|
|
]
|
|
|
|
def docker_builds = [
|
|
armhf_builds, base_builds, nuttx_builds_archive, snapdragon_builds
|
|
]
|
|
|
|
for (def build_type = 0; build_type < docker_builds.size(); build_type++) {
|
|
for (def build_target = 0; build_target < docker_builds[build_type].target.size(); build_target++) {
|
|
build_nodes.put(docker_builds[build_type].target[build_target],
|
|
createBuildNode(docker_builds[build_type].archive, docker_builds[build_type].image, docker_builds[build_type].target[build_target])
|
|
)
|
|
}
|
|
}
|
|
|
|
parallel build_nodes
|
|
|
|
} // script
|
|
} // steps
|
|
} // stage Build
|
|
|
|
// TODO: actually upload artifacts to S3
|
|
// stage('S3 Upload') {
|
|
// agent {
|
|
// docker { image 'px4io/px4-dev-base-bionic:2019-10-24' }
|
|
// }
|
|
// options {
|
|
// skipDefaultCheckout()
|
|
// }
|
|
// when {
|
|
// anyOf {
|
|
// branch 'master'
|
|
// branch 'beta'
|
|
// branch 'stable'
|
|
// branch 'pr-jenkins' // for testing
|
|
// }
|
|
// }
|
|
// steps {
|
|
// sh 'echo "uploading to S3"'
|
|
// }
|
|
// }
|
|
|
|
} // stages
|
|
environment {
|
|
CCACHE_DIR = '/tmp/ccache'
|
|
CI = true
|
|
}
|
|
options {
|
|
buildDiscarder(logRotator(numToKeepStr: '2', artifactDaysToKeepStr: '14'))
|
|
timeout(time: 60, unit: 'MINUTES')
|
|
}
|
|
}
|
|
|
|
def createBuildNode(Boolean archive, String docker_image, String target) {
|
|
return {
|
|
|
|
// TODO: fix the snapdragon image
|
|
bypass_entrypoint = ''
|
|
if (docker_image == 'lorenzmeier/px4-dev-snapdragon:2018-09-12') {
|
|
bypass_entrypoint = ' --entrypoint=""'
|
|
}
|
|
|
|
node {
|
|
docker.withRegistry('https://registry.hub.docker.com', 'docker_hub_dagar') {
|
|
docker.image(docker_image).inside('-e CCACHE_BASEDIR=${WORKSPACE} -v ${CCACHE_DIR}:${CCACHE_DIR}:rw' + bypass_entrypoint) {
|
|
stage(target) {
|
|
try {
|
|
sh('export')
|
|
checkout(scm)
|
|
sh('make distclean')
|
|
sh('git fetch --tags')
|
|
sh('ccache -s')
|
|
sh('make ' + target)
|
|
sh('ccache -s')
|
|
sh('make sizes')
|
|
if (archive) {
|
|
archiveArtifacts(allowEmptyArchive: false, artifacts: 'build/*/*.px4, build/*/*.elf, build/*/*.bin', fingerprint: true, onlyIfSuccessful: true)
|
|
}
|
|
sh('make ' + target + ' package')
|
|
archiveArtifacts(allowEmptyArchive: true, artifacts: 'build/*/*.tar.bz2', fingerprint: true, onlyIfSuccessful: true)
|
|
archiveArtifacts(allowEmptyArchive: true, artifacts: 'build/*/*.deb', fingerprint: true, onlyIfSuccessful: true)
|
|
}
|
|
catch (exc) {
|
|
throw (exc)
|
|
}
|
|
finally {
|
|
sh('make distclean')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|