I try to create a zip file within a shared library for jenkins pipeline with the help of AntBuilder
. A simple zip file can be created, but as soon as I try to use a block it does not work. I don't get any error message or Exceptions. How can I debug a Pipepeline-Script? Or how can I solve the issue?
My Code looks as follow (step zipFolder doesn't work, step zipFolder2 does work)
Jenkinsfile @Library('utils') _
pipeline {
agent any
stages {
stage('Build') {
steps {
zipFolder( )
zipFolder2( )
}
}
}
}
shared library:
vars/zipFolder.groovy:
import com.example.Utilities
def call(){
new Utilities(this).zip(pwd())
}
vars/zipFolder2.groovy
import com.example.Utilities
def call(){
new Utilities(this).zip2(pwd())
}
src/com/example/Utilities.groovy
package com.example
import groovy.util.AntBuilder
import org.apache.tools.ant.DefaultLogger
class Utilities implements Serializable {
def steps
def byteStream
Utilities(steps) {this.steps = steps}
def zip(baseDir){
def ant = setupAnt(baseDir)
def destFolder = "${baseDir}/Dist"
def destfile = "${destFolder}/test.zip"
ant.delete dir: destFolder
ant.mkdir(dir: destFolder)
ant.zip(destfile: destfile, whenempty: 'create', excludes: destfile) {
zipfileset (dir: "${baseDir}/install", includes: "test.txt", erroronmissingdir: false)
}
steps.echo "Zip1"
steps.echo "Ant-Result: " + byteStream.toString()
}
def zip2(baseDir){
def ant = setupAnt(baseDir)
def destFolder = "${baseDir}/Dist2"
def destfile = "${destFolder}/test.zip"
ant.delete dir: destFolder
ant.mkdir(dir: destFolder)
ant.zip(destfile: destfile, whenempty: 'create', excludes: destfile, basedir: baseDir)
steps.echo "Zip2"
steps.echo "Ant-Result: " + byteStream.toString()
}
def setupAnt(baseDir){
def ant = new AntBuilder()
byteStream = new ByteArrayOutputStream()
def printStream = new PrintStream( byteStream )
def project = ant.project
project.buildListeners.each {
if ( it instanceof DefaultLogger ) {
it.setMessageOutputLevel(org.apache.tools.ant.Project.MSG_DEBUG)
it.setOutputPrintStream printStream
it.setErrorPrintStream printStream
}
}
ant
}
}