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) { stage("Publish ${packageEnv} packages (version ${packageVersion}) on Vulcain") { 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}", ".") } }