jenkinsfile: removed jenkinsfile, is replaced by mmc- and ramdiskImages
The jenkinsfile is split into separate pipelines for sdk, mmc images and ramdisk images. Thus this file is obsolete and is removed Signed-off-by: Marc Mattmueller <marc.mattmueller@netmodule.com>
This commit is contained in:
parent
c087d58bc3
commit
612524ea30
|
|
@ -1,310 +0,0 @@
|
|||
// declarative pipeline
|
||||
pipeline {
|
||||
agent {
|
||||
node {
|
||||
label 'lxbuild4'
|
||||
}
|
||||
}
|
||||
|
||||
parameters {
|
||||
choice(name: 'MACHINE', choices: ['select...', 'am335x-nrhw20', 'am335x-nmhw21', 'imx8-nmhw23', 'am335x-nmhw24', 'am335x-hw25', 'am335x-hw26'], description: 'choose target platform')
|
||||
choice(name: 'IMAGE_TYPE', choices: ['bootloader', 'release', 'dev', 'vcu', 'lava', 'fct', 'minimal', 'sdk'], description: 'choose target platform')
|
||||
string(name: 'RLS_VERSION', defaultValue: '', description: 'Set the version to build and use committed submodules')
|
||||
booleanParam(name: 'COLLECT_REV', defaultValue: false, description: 'collect the used revisions')
|
||||
booleanParam(name: 'CLEAN_BUILD', defaultValue: false, description: 'clean all temp directories before build starts')
|
||||
}
|
||||
|
||||
environment {
|
||||
PACKAGE_NAME = 'nm-os'
|
||||
|
||||
SHARED_BUILD = "${WORKSPACE}/build"
|
||||
build_deploy = "${SHARED_BUILD}/tmp/deploy/images/${params.MACHINE}"
|
||||
build_licenses = "${SHARED_BUILD}/tmp/deploy/licenses"
|
||||
buildhistory = "${SHARED_BUILD}/buildhistory"
|
||||
|
||||
DISTRO_VERSION_PATHNAME = "${SHARED_BUILD}/conf/distro_version.inc"
|
||||
DISTRO_VERSION_FILE = "distro_version.inc"
|
||||
SUBMODULE_VERION_FILE = "submodule_revisions"
|
||||
AUTOREV_VERSION_FILE = "autorev_revisions.inc"
|
||||
|
||||
BINARY_STORAGE_URL = "http://nmrepo.netmodule.intranet/src/yocto-downloads"
|
||||
}
|
||||
|
||||
options {
|
||||
timeout(time: 8, unit: 'HOURS')
|
||||
buildDiscarder(
|
||||
logRotator(numToKeepStr: '50',
|
||||
daysToKeepStr: '1',
|
||||
artifactNumToKeepStr: '50',
|
||||
artifactDaysToKeepStr: '1'
|
||||
)
|
||||
)
|
||||
disableConcurrentBuilds()
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('prepare') {
|
||||
steps {
|
||||
script {
|
||||
if("${params.MACHINE}" == "select...") {
|
||||
error("Missing machine type --> select parameter MACHINE for a proper build")
|
||||
}
|
||||
handleSubmodules("${params.RLS_VERSION}")
|
||||
version = buildVersion("${params.RLS_VERSION}")
|
||||
env.BUILD_VERSION = "${version}"
|
||||
currentBuild.displayName = "${version}-${params.MACHINE}-${params.IMAGE_TYPE}" //replace Bitbake timestamp after building
|
||||
println "----------------------------------\n\
|
||||
Job Parameters:\n\
|
||||
----------------------------------\n\
|
||||
MACHINE = ${params.MACHINE}\n\
|
||||
IMAGE_TYPE = ${params.IMAGE_TYPE}\n\
|
||||
CLEAN_BUILD = ${params.CLEAN_BUILD}\n\
|
||||
COLLECT_REV = ${params.COLLECT_REV}\n\
|
||||
RLS_VERSION = ${params.RLS_VERSION}\n\
|
||||
--> version = ${version}\n\
|
||||
----------------------------------\n"
|
||||
changeDistroVersion("${version}")
|
||||
syncSources("${env.BINARY_STORAGE_URL}", "${env.SHARED_BUILD}/downloads")
|
||||
}
|
||||
writeFile file: 'VERSION', text: "${env.PACKAGE_NAME}: ${env.BUILD_VERSION}"
|
||||
}
|
||||
}
|
||||
|
||||
stage('clean') {
|
||||
when { expression { return params.CLEAN_BUILD } }
|
||||
steps {
|
||||
dir ("${SHARED_BUILD}/tmp") { deleteDir() }
|
||||
dir ("${SHARED_BUILD}/tmp-glibc") { deleteDir() }
|
||||
}
|
||||
}
|
||||
|
||||
stage('collect versions') {
|
||||
when { expression { return params.COLLECT_REV } }
|
||||
steps {
|
||||
script {
|
||||
revisions = getAutoRevHashes()
|
||||
writeFile(file: "${env.AUTOREV_VERSION_FILE}", text: "${revisions}")
|
||||
}
|
||||
}
|
||||
post {
|
||||
success {
|
||||
archiveArtifacts(artifacts: "${env.SUBMODULE_VERION_FILE}, ${env.AUTOREV_VERSION_FILE}, ${env.DISTRO_VERSION_FILE}", onlyIfSuccessful: false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('build') {
|
||||
steps {
|
||||
script {
|
||||
buildAndArchive()
|
||||
}
|
||||
dir ('tmp/artifacts') {
|
||||
zip archive: true, dir: "${WORKSPACE}/tmp/build-output", glob: "*", zipFile: "${env.PACKAGE_NAME}-${env.BUILD_VERSION}-${params.MACHINE}-${params.IMAGE_TYPE}.zip"
|
||||
}
|
||||
sh "rm -rf ${WORKSPACE}/tmp"
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
syncSources("${env.SHARED_BUILD}/downloads", "${env.BINARY_STORAGE_URL}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // stages
|
||||
}
|
||||
|
||||
|
||||
def isRelease(versionParam) {
|
||||
if((versionParam == "") || (versionParam == "latest")) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
def handleSubmodules(versionParam) {
|
||||
sh 'git submodule init'
|
||||
if(isRelease(versionParam)) {
|
||||
sh 'git submodule update' // set all submodules to freezed commit
|
||||
}
|
||||
else {
|
||||
sh 'git submodule update --remote --rebase meta-netmodule-*' // update our own submodules to HEAD
|
||||
}
|
||||
submoduleStatus = sh(returnStdout: true, script: "git submodule status").trim() // print submodule hashes to jenkins log
|
||||
println "${submoduleStatus}"
|
||||
writeFile(file: "${env.SUBMODULE_VERION_FILE}", text: "${submoduleStatus}")
|
||||
}
|
||||
|
||||
def buildVersion(versionParam) {
|
||||
sh 'git fetch -p'
|
||||
sh 'git fetch -t'
|
||||
def gitCmd = "git describe --tags"
|
||||
if(!isRelease(versionParam)) {
|
||||
gitCmd = "${gitCmd} --dirty"
|
||||
}
|
||||
gitversion = sh(returnStdout: true, script: "${gitCmd}").trim()
|
||||
String[] versionArr = "${gitversion}".split("-")
|
||||
if(isRelease(versionParam)) {
|
||||
String newVersionStr = versionParam
|
||||
versionArr[0] = newVersionStr
|
||||
}
|
||||
else {
|
||||
if(params.IMAGE_TYPE != 'fct') {
|
||||
def buildnbr = getTopUpstreamBuildNumber()
|
||||
String nightlyPart = versionArr[0] + ".Test${buildnbr}"
|
||||
versionArr[0] = nightlyPart
|
||||
}
|
||||
}
|
||||
rlsVersion = versionArr.join("-")
|
||||
return rlsVersion
|
||||
}
|
||||
|
||||
def changeDistroVersion(versionString){
|
||||
println "Set the distro version to ${versionString}..."
|
||||
def versionTag = "DISTRO_VERSION = \"${versionString}\""
|
||||
writeFile(file: "${env.DISTRO_VERSION_PATHNAME}", text: "${versionTag}")
|
||||
sh(script: "cp ${env.DISTRO_VERSION_PATHNAME} ${env.DISTRO_VERSION_FILE}")
|
||||
}
|
||||
|
||||
def cleanupDistroVersion() {
|
||||
println "cleaning repository regarding distro version..."
|
||||
sh(script:"git clean -f ${env.DISTRO_VERSION_PATHNAME}")
|
||||
}
|
||||
|
||||
def syncSources(src, dst) {
|
||||
def hasSrcUrl = (src.contains("http"))
|
||||
def from = src
|
||||
def to = dst
|
||||
|
||||
// convert the URL into ssh syntax:
|
||||
def url = (hasSrcUrl) ? src : dst
|
||||
String[] repoParts = url.split("//")[1].split("/")
|
||||
repoParts[0] = "build_user@" + repoParts[0] + ":/repo/repo"
|
||||
sshSrc = repoParts.join("/")
|
||||
|
||||
if(hasSrcUrl) {
|
||||
println "getting data from server..."
|
||||
from = sshSrc
|
||||
}
|
||||
else {
|
||||
println "putting data to server..."
|
||||
to = sshSrc
|
||||
}
|
||||
|
||||
sshagent (credentials: ['7767e711-08a4-4c71-b080-197253dd7392']) {
|
||||
sh "rsync -auvz --ignore-existing -e \"ssh\" ${from}/* ${to}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def buildAndArchive() {
|
||||
if (params.IMAGE_TYPE == 'sdk') {
|
||||
sh "bash -c '. ./env.image-ostree && bitbake -k netmodule-linux-image -c populate_sdk'"
|
||||
zip archive: true, dir: "${HOME}/yocto-share/build/tmp/deploy/sdk", glob: '*.sh', zipFile: "${env.PACKAGE_NAME}-${env.BUILD_VERSION}-${params.MACHINE}-sdk.zip"
|
||||
}
|
||||
else if (params.IMAGE_TYPE == 'bootloader') {
|
||||
sh "bash -c '. ./env.common && bitbake virtual/bootloader'"
|
||||
dir ('tmp/build-output') {
|
||||
sh "cp ${build_deploy}/*u-boot-${params.MACHINE}*.img . || true"
|
||||
sh "cp ${build_deploy}/*u-boot-${params.MACHINE}*.xmodem.bin . || true"
|
||||
sh "cp ${build_deploy}/imx-boot . || true"
|
||||
sh "cp ${build_deploy}/imx-boot.sd . || true"
|
||||
}
|
||||
}
|
||||
else if (params.IMAGE_TYPE == 'vcu') {
|
||||
build('vcu', 'vcu', false)
|
||||
archive('vcu', false)
|
||||
}
|
||||
else if (params.IMAGE_TYPE == 'lava' || params.IMAGE_TYPE == 'fct' || params.IMAGE_TYPE == 'minimal') {
|
||||
build(params.IMAGE_TYPE, params.IMAGE_TYPE, true)
|
||||
archive(params.IMAGE_TYPE, true)
|
||||
}
|
||||
else if (params.IMAGE_TYPE == 'release') {
|
||||
build('ostree', '', false)
|
||||
archive('', false)
|
||||
}
|
||||
else {
|
||||
build('ostree', params.IMAGE_TYPE, false)
|
||||
archive(params.IMAGE_TYPE, false)
|
||||
}
|
||||
}
|
||||
|
||||
def build(env_in, image_type_in, single_fitImage) {
|
||||
def env = "${env_in}" == "" ? "" : "-${env_in}"
|
||||
def image_type = "${image_type_in}" == "" ? "" : "-${image_type_in}"
|
||||
if (single_fitImage) {
|
||||
sh "bash -c '. ./env.image${env} && bitbake -k virtual/netmodule-image'"
|
||||
} else {
|
||||
/* The following workaround can be removed once the explanation for the missing lic has been found */
|
||||
if (! fileExists("build/tmp/deploy/licenses/gpsd"))
|
||||
sh "bash -c '. ./env.image${env} && bitbake -fc populate_lic gpsd'"
|
||||
if (! fileExists("build/tmp/deploy/licenses/ostree-kernel-initramfs"))
|
||||
sh "bash -c '. ./env.image${env} && bitbake -fc populate_lic ostree-kernel-initramfs'"
|
||||
sh "bash -c '. ./env.image${env} && bitbake -k netmodule-linux-image${image_type}'"
|
||||
}
|
||||
}
|
||||
|
||||
def archive(image_type_in, single_fitImage) {
|
||||
def image_type = "${image_type_in}" == "" ? "" : "-${image_type_in}"
|
||||
dir ("tmp/build-output") {
|
||||
def image_basename = "netmodule-linux-image${image_type}-${params.MACHINE}"
|
||||
def basename_in = "${build_deploy}/${image_basename}"
|
||||
def basename_out = "./image${image_type}-${params.MACHINE}"
|
||||
|
||||
sh "cp ${basename_in}.manifest ${basename_out}.manifest"
|
||||
sh "bash -c '${WORKSPACE}/openembedded-core/scripts/buildhistory-collect-srcrevs -p ${buildhistory} > srcrev-${params.MACHINE}${image_type}.inc'"
|
||||
|
||||
sh label: 'Copy License Manifest', returnStatus: true, script: """
|
||||
LATEST_LICENSE_DIR=\$(ls -Artd ${build_licenses}/netmodule-linux-image${image_type}* | tail -n 1)
|
||||
cp \$LATEST_LICENSE_DIR/license.manifest ${basename_out}_license.manifest"""
|
||||
|
||||
if (single_fitImage == false) {
|
||||
sh label: 'Copy initramfs License Manifest', returnStatus: true, script: """
|
||||
LATEST_LICENSE_DIR=\$(ls -Artd ${build_licenses}/initramfs-ostree-image-${params.MACHINE}-* | tail -n 1)
|
||||
cp \$LATEST_LICENSE_DIR/license.manifest initramfs-ostree-image_license.manifest
|
||||
"""
|
||||
}
|
||||
|
||||
if(single_fitImage){
|
||||
if(image_type_in == "minimal")
|
||||
sh "cp ${build_deploy}/initramfs-linux/fitImage-${image_basename}-${params.MACHINE} fitImage-${image_basename}"
|
||||
else
|
||||
sh "cp ${build_deploy}/fct-linux/fitImage-${image_basename}-${params.MACHINE} fitImage-${image_basename}"
|
||||
|
||||
sh "cp ${basename_in}.tar.gz ${basename_out}.tar.gz"
|
||||
}
|
||||
else {
|
||||
sh "cp ${build_deploy}/fitImage-${params.MACHINE}.bin ."
|
||||
sh "cp ${basename_in}.ota-ext4 ${basename_out}.ota-ext4"
|
||||
sh "cp ${basename_in}.wic ${basename_out}.wic"
|
||||
def ostree_archive = "ostree_repo${image_type}.tar.gz"
|
||||
sh "tar czf ./${ostree_archive} -C ${build_deploy}/ostree_repo ."
|
||||
archiveArtifacts artifacts: "${ostree_archive}", onlyIfSuccessful: true
|
||||
sh "rm -f ./${ostree_archive}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def getTopUpstreamBuildNumber() {
|
||||
// Iterating though all upstream jobs:
|
||||
// currentBuild.upstreamBuilds.each { item ->
|
||||
// echo "upstream build: ${item}"
|
||||
// def nbr = item.getNumber()
|
||||
// echo "nbr=${nbr}"
|
||||
// }
|
||||
def upstreamJobList = currentBuild.upstreamBuilds
|
||||
def nbrOfUpstreamJobs = upstreamJobList.size()
|
||||
if (nbrOfUpstreamJobs == 0)
|
||||
return 0;
|
||||
def topJob = upstreamJobList[nbrOfUpstreamJobs-1]
|
||||
println "Top upstream project: " + topJob.getFullDisplayName()
|
||||
def topJobNbr = topJob.getNumber()
|
||||
println "Top upstream job build Number = ${topJobNbr}"
|
||||
return topJobNbr
|
||||
}
|
||||
|
||||
def getAutoRevHashes() {
|
||||
sh(script: "bash -c '. ./env.image-ostree && bitbake netmodule-linux-image-dev --runall=fetch'")
|
||||
def revs = sh(returnStdout: true, script: "bash -c \". ./env.image-ostree > /dev/null && buildhistory-collect-srcrevs\"").trim()
|
||||
return revs
|
||||
}
|
||||
Loading…
Reference in New Issue