Add debian repository helpers
This commit is contained in:
parent
31aa194399
commit
297ead2d7e
|
@ -0,0 +1,80 @@
|
|||
def waitForRepoPackage(String packageName, Map params = [:]) {
|
||||
def expectedVersion = params.expectedVersion ? params.expectedVersion : null
|
||||
def delay = params.delay ? params.delay : 30
|
||||
def waitTimeout = params.timeout ? params.timeout : 600
|
||||
|
||||
def message = "Waiting for package '${packageName}'"
|
||||
if (expectedVersion != null) {
|
||||
message += "with version '${expectedVersion}'"
|
||||
}
|
||||
message += '...'
|
||||
println(message)
|
||||
|
||||
timeout(time: waitTimeout, unit: 'SECONDS') {
|
||||
while(true) {
|
||||
println("Retrieving packages list...")
|
||||
def repo = listRepoPackages(params)
|
||||
|
||||
def packages = repo[packageName]
|
||||
if (!packages) {
|
||||
println("Package not found.")
|
||||
sleep(time: delay, unit: 'SECONDS')
|
||||
continue
|
||||
}
|
||||
|
||||
if (expectedVersion == null) {
|
||||
println("Package found !")
|
||||
break
|
||||
}
|
||||
|
||||
def versionFound = packages.find {
|
||||
return it['version'] =~ expectedVersion
|
||||
}
|
||||
|
||||
if (versionFound) {
|
||||
println("Expected package version found !")
|
||||
break
|
||||
}
|
||||
|
||||
println("Package version not found.")
|
||||
sleep(time: delay, unit: 'SECONDS')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def listRepoPackages(Map params = [:]) {
|
||||
def baseURL = params.baseURL ? params.baseURL : 'https://vulcain.cadoles.com'
|
||||
def distrib = params.distrib ? params.distrib : '2.7.0-dev'
|
||||
def component = params.component ? params.component : 'main'
|
||||
def type = params.type ? params.type : 'binary'
|
||||
def arch = params.arch ? params.arch : 'amd64'
|
||||
|
||||
def response = httpRequest(url: "${baseURL}/dists/${distrib}/${component}/${type}-${arch}/Packages")
|
||||
|
||||
def packages = [:]
|
||||
def lines = response.content.split('\n')
|
||||
|
||||
def currentPackage
|
||||
lines.each {
|
||||
def packageMatch = (it =~ /^Package: (.*)$/)
|
||||
if (packageMatch.find()) {
|
||||
def packageName = packageMatch.group(1)
|
||||
|
||||
if (!packages[packageName]) {
|
||||
packages[packageName] = []
|
||||
}
|
||||
|
||||
currentPackage = [:]
|
||||
currentPackage['name'] = packageName
|
||||
packages[packageName] += currentPackage
|
||||
}
|
||||
|
||||
def versionMatch = (it =~ /^Version: (.*)$/)
|
||||
if (versionMatch.find()) {
|
||||
def version = versionMatch.group(1)
|
||||
currentPackage['version'] = version
|
||||
}
|
||||
}
|
||||
|
||||
return packages
|
||||
}
|
Loading…
Reference in New Issue