Skip to content

Commit ecbc191

Browse files
committed
build pipelines update
1 parent 13ccdf6 commit ecbc191

1 file changed

Lines changed: 56 additions & 43 deletions

File tree

debian/Jenkinsfile

Lines changed: 56 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!groovy
22

3-
// Current version of this Pipeline https://github.com/VitexSoftware/BuildImages/blob/main/Test/Jenkinsfile-parael
3+
// Aktuální verze Pipeline: https://github.com/VitexSoftware/BuildImages/blob/main/Test/Jenkinsfile-parael
44

55
String[] distributions = [
66
'debian:bookworm',
@@ -11,12 +11,13 @@ String[] distributions = [
1111
]
1212

1313
String vendor = 'vitexsoftware'
14-
//String distroFamily = ''
14+
String imagePrefix = 'multiflexi-'
1515

1616
properties([
1717
copyArtifactPermission('*')
1818
])
19-
node() {
19+
20+
node {
2021
ansiColor('xterm') {
2122
stage('SCM Checkout') {
2223
checkout scm
@@ -28,70 +29,81 @@ def branches = [:]
2829

2930
distributions.each { distro ->
3031
branches[distro] = {
31-
def distroName = distro
32-
println "Dist:" + distroName
33-
34-
def dist = distroName.split(':')
35-
def distroFamily = dist[0]
36-
def distroCode = dist[1]
37-
def buildImage = ''
32+
def (distroFamily, distroCode) = distro.split(':')
33+
def imageName = "${vendor}/${imagePrefix}${distroCode}:latest"
34+
def buildImage
3835
def artifacts = []
39-
def buildVer = ''
36+
def buildVer
4037

4138
node {
4239
ansiColor('xterm') {
43-
stage('Checkout ' + distroName) {
40+
stage("Checkout ${distro}") {
4441
checkout scm
45-
def imageName = vendor + '/' + distro
4642
buildImage = docker.image(imageName)
43+
4744
sh 'git checkout debian/changelog'
48-
def version = sh (
49-
script: 'dpkg-parsechangelog --show-field Version',
45+
buildVer = sh(
46+
script: "dpkg-parsechangelog --show-field Version",
5047
returnStdout: true
51-
).trim()
52-
buildVer = version + '.' + env.BUILD_NUMBER + '~' + distroCode
48+
).trim() + ".${env.BUILD_NUMBER}~${distroCode}"
5349
}
54-
stage('Build ' + distroName) {
55-
buildImage.inside {
56-
sh 'dch -b -v ' + buildVer + ' "' + env.BUILD_TAG + '"'
57-
sh 'sudo apt-get update --allow-releaseinfo-change'
58-
sh 'sudo chown jenkins:jenkins ..'
59-
sh 'debuild-pbuilder -i -us -uc -b'
60-
sh 'mkdir -p $WORKSPACE/dist/debian/ ; rm -rf $WORKSPACE/dist/debian/* ; for deb in $(cat debian/files | awk \'{print $1}\'); do mv "../$deb" $WORKSPACE/dist/debian/; done'
61-
artifacts = sh (
62-
script: "cat debian/files | awk '{print \$1}'",
50+
51+
stage("Build ${distro}") {
52+
buildImage.inside('--ipc=host') {
53+
sh """
54+
dch -b -v ${buildVer} "${env.BUILD_TAG}"
55+
sudo apt-get update --allow-releaseinfo-change
56+
sudo chown -R jenkins:jenkins . ..
57+
debuild-pbuilder -r'sudo -E' -i -us -uc -b
58+
mkdir -p \$WORKSPACE/dist/debian/
59+
rm -rf \$WORKSPACE/dist/debian/*
60+
for deb in \$(awk '{print \$1}' debian/files); do
61+
mv "../\$deb" \$WORKSPACE/dist/debian/
62+
done
63+
"""
64+
artifacts = sh(
65+
script: "awk '{print \$1}' debian/files",
6366
returnStdout: true
6467
).trim().split('\n')
6568
}
6669
}
6770

68-
stage('Test ' + distroName) {
69-
buildImage.inside {
70-
def debconf_debug = 0 //Set to "5" or "developer" to debug debconf
71-
sh 'cd $WORKSPACE/dist/debian/ ; dpkg-scanpackages . /dev/null > Packages; gzip -9c Packages > Packages.gz; cd $WORKSPACE'
72-
sh 'echo "deb [trusted=yes] file://///$WORKSPACE/dist/debian/ ./" | sudo tee /etc/apt/sources.list.d/local.list'
73-
sh 'sudo apt-get update --allow-releaseinfo-change'
74-
sh 'echo "INSTALATION"'
71+
stage("Test ${distro}") {
72+
buildImage.inside('--ipc=host') {
73+
def debconf_debug = 0
74+
sh """
75+
cd \$WORKSPACE/dist/debian/
76+
dpkg-scanpackages . /dev/null > Packages
77+
gzip -9c Packages > Packages.gz
78+
cd \$WORKSPACE
79+
echo "deb [trusted=yes] file://///\$WORKSPACE/dist/debian/ ./" | sudo tee /etc/apt/sources.list.d/local.list
80+
sudo apt-get update --allow-releaseinfo-change
81+
"""
7582
artifacts.each { deb_file ->
7683
if (deb_file.endsWith('.deb')) {
7784
def pkgName = deb_file.tokenize('/')[-1].replaceFirst(/_.*/, '')
78-
sh 'echo -e "${GREEN} installing ' + pkgName + ' on `lsb_release -sc` ${ENDCOLOR} "'
79-
sh 'sudo DEBIAN_FRONTEND=noninteractive DEBCONF_DEBUG=' + debconf_debug + ' apt-get -y install ' + pkgName + ' || sudo apt-get -y -f install'
85+
def distroCodename = sh(
86+
script: "lsb_release -sc",
87+
returnStdout: true
88+
).trim()
89+
echo "Installing ${pkgName} on ${distroCodename}"
90+
sh """
91+
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_DEBUG=${debconf_debug} \
92+
apt-get -y install ${pkgName} \
93+
|| sudo apt-get -y -f install
94+
"""
8095
}
8196
}
8297
}
8398
}
84-
stage('Archive artifacts ' + distroName ) {
85-
// Only run if previous stages (Build and Test) succeeded
86-
buildImage.inside {
87-
// Archive all produced artifacts listed in debian/files
99+
100+
stage("Archive artifacts ${distro}") {
101+
buildImage.inside('--ipc=host') {
88102
artifacts.each { deb_file ->
89-
println "Archiving artifact: " + deb_file
90-
archiveArtifacts artifacts: 'dist/debian/' + deb_file
103+
println "Archiving artifact: ${deb_file}"
104+
archiveArtifacts artifacts: "dist/debian/${deb_file}"
91105
}
92106

93-
// Cleanup: remove any produced files named in debian/files
94-
// Try both the dist location and any potential original locations referenced by debian/files
95107
sh '''
96108
set -e
97109
if [ -f debian/files ]; then
@@ -105,6 +117,7 @@ distributions.each { distro ->
105117
'''
106118
}
107119
}
120+
108121
}
109122
}
110123
}

0 commit comments

Comments
 (0)