Ajout d'utilitaires pour le packaging Debian via Jenkins
Permet de reproduire le comportement de l'actuel serveur d'empaquetage Marang.
This commit is contained in:
90
vars/tamarin.groovy
Normal file
90
vars/tamarin.groovy
Normal file
@ -0,0 +1,90 @@
|
||||
def buildPackageWithCPKG(
|
||||
String packageProfile = "debian",
|
||||
String packageArch = "",
|
||||
String baseImage = "",
|
||||
String destDir = "./packages",
|
||||
Boolean forceRebuild = false,
|
||||
Boolean publishPackages = true
|
||||
) {
|
||||
|
||||
// Fetch tags from remote
|
||||
sh 'git fetch --tags --force'
|
||||
|
||||
// Retrieve commit tags
|
||||
def commitTags = sh(script: 'git describe --exact-match --abbrev=0', returnStdout: true).split(' ')
|
||||
if (commitTags.length == 0) {
|
||||
error 'No build build tags on last commit'
|
||||
}
|
||||
|
||||
// For each tags
|
||||
for (tag in commitTags) {
|
||||
|
||||
// Split tag to retrieve context informations
|
||||
def tagParts = tag.split('/')
|
||||
def packageEnv = tagParts[1]
|
||||
def packageDistrib = tagParts[2]
|
||||
def packageVersion = tagParts[3]
|
||||
|
||||
// Create .tamarinrc file
|
||||
def tamarinrc = """
|
||||
project_version=${packageVersion}
|
||||
no_version_suffix=${ packageEnv == 'stable' || packageEnv == 'staging' ? 'yes' : 'no' }
|
||||
""".stripIndent()
|
||||
writeFile file: '.tamarinrc', text: tamarinrc
|
||||
|
||||
stage("Build ${packageEnv} package (version ${packageVersion}) for ${packageDistrib}") {
|
||||
sh "rm -rf ${destDir}/*"
|
||||
buildPackage(packageProfile, packageArch, baseImage, destDir, forceRebuild)
|
||||
if (publishPackages) {
|
||||
vulcain.publish(destDir, packageEnv, env.BRANCH_NAME)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
def buildPackage(
|
||||
String packageProfile = "debian",
|
||||
String packageArch = "",
|
||||
String baseImage = "",
|
||||
String destDir = "./packages",
|
||||
Boolean forceRebuild = false
|
||||
) {
|
||||
|
||||
def tamarinImage
|
||||
|
||||
stage("Create Tamarin environment") {
|
||||
tamarinImage = buildDockerImage()
|
||||
}
|
||||
|
||||
stage("Run Tamarin") {
|
||||
def dockerArgs = """
|
||||
-v /var/run/docker.sock:/var/run/docker.sock
|
||||
${forceRebuild ? '-e TAMARIN_FORCE_REBUILD=1' : ''}
|
||||
${packageArch ? '-e TAMARIN_PACKAGE_ARCH='+packageArch : ''}
|
||||
${baseImage ? '-e TAMARIN_BASE_IMAGE='+baseImage : ''}
|
||||
${packageProfile ? '-e TAMARIN_PROFILE='+packageProfile : ''}
|
||||
-e TAMARIN_DEST_DIR=${destDir}
|
||||
""".stripIndent()
|
||||
|
||||
tamarinImage.inside(dockerArgs) {
|
||||
sh 'run-tamarin'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
def buildDockerImage() {
|
||||
dir ('.tamarin') {
|
||||
def dockerfile = libraryResource 'com/cadoles/tamarin/Dockerfile'
|
||||
writeFile file:'Dockerfile', text:dockerfile
|
||||
|
||||
def runTamarinScript = libraryResource 'com/cadoles/tamarin/run-tamarin.sh'
|
||||
writeFile file:'run-tamarin.sh', text:runTamarinScript
|
||||
|
||||
def safeJobName = URLDecoder.decode(env.JOB_NAME).toLowerCase().replace('/', '-')
|
||||
def imageTag = "${safeJobName}-${env.BUILD_ID}"
|
||||
return docker.build("tamarin:${imageTag}", ".")
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user