mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
Jenkins: builld dsc packages beside amd64 binaries
This commit is contained in:
parent
c522ff506d
commit
d8824db3f3
@ -87,6 +87,13 @@ def call(description=null, pkgList=null, buildCmd=null, buildArm=false, changesP
|
|||||||
script {
|
script {
|
||||||
cloneAndBuild(description, 'amd64', pkgList, buildCmd)
|
cloneAndBuild(description, 'amd64', pkgList, buildCmd)
|
||||||
stash includes: '**/*.deb', name: 'binary-amd64', allowEmpty: true
|
stash includes: '**/*.deb', name: 'binary-amd64', allowEmpty: true
|
||||||
|
try {
|
||||||
|
stash includes: '**/*.dsc', name: 'source-dsc'
|
||||||
|
stash includes: '**/*.tar.*z', name: 'source-tar'
|
||||||
|
} catch (e) {
|
||||||
|
print "Stashing failed, ignoring - no source packages"
|
||||||
|
currentBuild.result = 'SUCCESS'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
post {
|
post {
|
||||||
@ -136,7 +143,7 @@ def call(description=null, pkgList=null, buildCmd=null, buildArm=false, changesP
|
|||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
// Unpack files for amd64 and arm64 if packages got build
|
// Unpack files for amd64, sources and arm64 if packages got build
|
||||||
try {
|
try {
|
||||||
unstash 'binary-amd64'
|
unstash 'binary-amd64'
|
||||||
unstash 'binary-arm64'
|
unstash 'binary-arm64'
|
||||||
@ -144,14 +151,18 @@ def call(description=null, pkgList=null, buildCmd=null, buildArm=false, changesP
|
|||||||
print "Unstash failed, ignoring - could be because there exists no arm64 build"
|
print "Unstash failed, ignoring - could be because there exists no arm64 build"
|
||||||
currentBuild.result = 'SUCCESS'
|
currentBuild.result = 'SUCCESS'
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
unstash 'source-dsc'
|
||||||
|
unstash 'source-tar'
|
||||||
|
} catch (e) {
|
||||||
|
print "Unstash failed, ignoring - no source packages"
|
||||||
|
currentBuild.result = 'SUCCESS'
|
||||||
|
}
|
||||||
if (isCustomBuild()) {
|
if (isCustomBuild()) {
|
||||||
echo "Build not started from official Git repository! Artifacts are not uploaded to external repository"
|
echo "Build not started from official Git repository! Artifacts are not uploaded to external repository"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
files = findFiles(glob: '**/*.deb')
|
|
||||||
if (files) {
|
|
||||||
echo "Uploading Artifacts to external repository"
|
echo "Uploading Artifacts to external repository"
|
||||||
copyArtifacts fingerprintArtifacts: true, projectName: '${JOB_NAME}', selector: specific('${BUILD_NUMBER}')
|
copyArtifacts fingerprintArtifacts: true, projectName: '${JOB_NAME}', selector: specific('${BUILD_NUMBER}')
|
||||||
|
|
||||||
@ -169,10 +180,24 @@ def call(description=null, pkgList=null, buildCmd=null, buildArm=false, changesP
|
|||||||
def SSH_REMOTE = env.DEV_PACKAGES_VYOS_NET_HOST // defined as global variable
|
def SSH_REMOTE = env.DEV_PACKAGES_VYOS_NET_HOST // defined as global variable
|
||||||
def SSH_DIR = '~/VyOS/' + RELEASE
|
def SSH_DIR = '~/VyOS/' + RELEASE
|
||||||
|
|
||||||
// publish build result, using SSH-dev.packages.vyos.net Jenkins Credentials
|
|
||||||
sshagent(['SSH-dev.packages.vyos.net']) {
|
sshagent(['SSH-dev.packages.vyos.net']) {
|
||||||
|
|
||||||
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"bash --login -c 'mkdir -p ${SSH_DIR}'\"")
|
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"bash --login -c 'mkdir -p ${SSH_DIR}'\"")
|
||||||
echo "Uploading package(s) and updating package(s) in the repository ..."
|
|
||||||
|
// Removing of source and binary packages should be BEFORE adding new ones. Else "reprepro [remove/removesrc]" command may remove [source/binary] package correspondingly (behavior depends on package links).
|
||||||
|
// To omit this feature(bug?) do not merge removing-adding sequence by sources and binaries as it used to be
|
||||||
|
files = findFiles(glob: '**/*.dsc')
|
||||||
|
if (files) {
|
||||||
|
echo "Remove deprecated source package(s) from the repository..."
|
||||||
|
files.each { FILE ->
|
||||||
|
def PACKAGE = sh(returnStdout: true, script: "cat ${FILE} | grep Source ").trim().tokenize(' ').last()
|
||||||
|
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} removesrc ${RELEASE} ${PACKAGE}'\"")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
files = findFiles(glob: '**/*.deb')
|
||||||
|
if (files) {
|
||||||
|
echo "Remove deprecated binary package(s) from the repository..."
|
||||||
files.each { FILE ->
|
files.each { FILE ->
|
||||||
// NOTE: Groovy is a pain in the ass and " quotes differ from ', so all shell code must use " in the beginning
|
// NOTE: Groovy is a pain in the ass and " quotes differ from ', so all shell code must use " in the beginning
|
||||||
def PACKAGE = sh(returnStdout: true, script: "dpkg-deb -f ${FILE} Package").trim()
|
def PACKAGE = sh(returnStdout: true, script: "dpkg-deb -f ${FILE} Package").trim()
|
||||||
@ -180,13 +205,43 @@ def call(description=null, pkgList=null, buildCmd=null, buildArm=false, changesP
|
|||||||
def ARCH = ''
|
def ARCH = ''
|
||||||
if (PACKAGE_ARCH != 'all')
|
if (PACKAGE_ARCH != 'all')
|
||||||
ARCH = '-A ' + PACKAGE_ARCH
|
ARCH = '-A ' + PACKAGE_ARCH
|
||||||
|
|
||||||
sh(script: "scp ${SSH_OPTS} ${FILE} ${SSH_REMOTE}:${SSH_DIR}")
|
|
||||||
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH} remove ${RELEASE} ${PACKAGE}'\"")
|
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH} remove ${RELEASE} ${PACKAGE}'\"")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
files = findFiles(glob: '**/*.tar.*z')
|
||||||
|
if (files) {
|
||||||
|
echo "Uploading tarball package(s) to the repository..."
|
||||||
|
files.each { FILE ->
|
||||||
|
sh(script: "scp ${SSH_OPTS} ${FILE} ${SSH_REMOTE}:${SSH_DIR}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
files = findFiles(glob: '**/*.dsc')
|
||||||
|
if (files) {
|
||||||
|
echo "Uploading *.dsc package(s) to the repository..."
|
||||||
|
files.each { FILE ->
|
||||||
|
def PACKAGE = sh(returnStdout: true, script: "cat ${FILE} | grep Source ").trim().tokenize(' ').last()
|
||||||
|
sh(script: "scp ${SSH_OPTS} ${FILE} ${SSH_REMOTE}:${SSH_DIR}")
|
||||||
|
def FILENAME = FILE.toString().tokenize('/').last()
|
||||||
|
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} includedsc ${RELEASE} ${SSH_DIR}/${FILENAME}'\"")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
files = findFiles(glob: '**/*.deb')
|
||||||
|
if (files) {
|
||||||
|
echo "Uploading binary package(s) to the repository ..."
|
||||||
|
files.each { FILE ->
|
||||||
|
// NOTE: Groovy is a pain in the ass and " quotes differ from ', so all shell code must use " in the beginning
|
||||||
|
def PACKAGE = sh(returnStdout: true, script: "dpkg-deb -f ${FILE} Package").trim()
|
||||||
|
def PACKAGE_ARCH = sh(returnStdout: true, script: "dpkg-deb -f ${FILE} Architecture").trim()
|
||||||
|
def ARCH = ''
|
||||||
|
if (PACKAGE_ARCH != 'all')
|
||||||
|
ARCH = '-A ' + PACKAGE_ARCH
|
||||||
|
sh(script: "scp ${SSH_OPTS} ${FILE} ${SSH_REMOTE}:${SSH_DIR}")
|
||||||
// Packages like FRR produce their binary in a nested path e.g. packages/frr/frr-rpki-rtrlib-dbgsym_7.5_arm64.deb,
|
// Packages like FRR produce their binary in a nested path e.g. packages/frr/frr-rpki-rtrlib-dbgsym_7.5_arm64.deb,
|
||||||
// thus we will only extract the filename portion from FILE as the binary is scp'ed to SSH_DIR without any subpath.
|
// thus we will only extract the filename portion from FILE as the binary is scp'ed to SSH_DIR without any subpath.
|
||||||
def FILENAME = FILE.toString().tokenize('/')[-1]
|
def FILENAME = FILE.toString().tokenize('/').last()
|
||||||
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH} includedeb ${RELEASE} ${SSH_DIR}/${FILENAME}'\"")
|
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH} includedeb ${RELEASE} ${SSH_DIR}/${FILENAME}'\"")
|
||||||
}
|
}
|
||||||
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} deleteunreferenced'\"")
|
sh(script: "ssh ${SSH_OPTS} ${SSH_REMOTE} -t \"uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} deleteunreferenced'\"")
|
||||||
|
|||||||
@ -56,11 +56,24 @@ def call(description, architecture, pkgList, buildCmd) {
|
|||||||
} else if (buildCmd) {
|
} else if (buildCmd) {
|
||||||
sh buildCmd
|
sh buildCmd
|
||||||
} else {
|
} else {
|
||||||
|
try {
|
||||||
|
sh 'dpkg-buildpackage -uc -us -tc -F'
|
||||||
|
} catch (e) {
|
||||||
|
print "Source packages build failed, ignoring - building binaries only"
|
||||||
|
currentBuild.result = 'SUCCESS'
|
||||||
sh 'dpkg-buildpackage -uc -us -tc -b'
|
sh 'dpkg-buildpackage -uc -us -tc -b'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (architecture == 'amd64') {
|
if (architecture == 'amd64') {
|
||||||
archiveArtifacts artifacts: "**/*.deb", fingerprint: true
|
archiveArtifacts artifacts: "**/*.deb", fingerprint: true
|
||||||
|
try {
|
||||||
|
archiveArtifacts artifacts: "**/*.dsc", fingerprint: true
|
||||||
|
archiveArtifacts artifacts: "**/*.tar.*z", fingerprint: true
|
||||||
|
} catch (e) {
|
||||||
|
print "Archiving failed, ignoring - no source packages"
|
||||||
|
currentBuild.result = 'SUCCESS'
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
archiveArtifacts artifacts: "**/*_${architecture}.deb", fingerprint: true
|
archiveArtifacts artifacts: "**/*_${architecture}.deb", fingerprint: true
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user