gasket-driver/Jenkinsfile

70 lines
2.1 KiB
Groovy

// vim: set sw=4 ts=4 sts=4 et :
properties([
pipelineTriggers([cron('H H * * *')])
parameters([
choice(
choices: ['testing', 'stable', 'next'],
description: 'Fedora CoreOS Stream',
name: 'stream',
)
])
])
import groovy.json.JsonSlurper
def get_fcos_release(arch) {
def res = httpRequest(
url: 'https://builds.coreos.fedoraproject.org/streams/testing.json',
acceptType: 'APPLICATION_JSON',
)
def json = new JsonSlurper()
def data = json.parseText(res.getContent())
return data.architectures[arch].artifacts.metal.release
}
def get_kernel_version(arch, fcos_release) {
def res = httpRequest(
url: "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/${fcos_release}/${arch}/commitmeta.json",
acceptType: 'APPLICATION_JSON',
)
def json = new JsonSlurper()
def data = json.parseText(res.getContent())
def pkg = data["rpmostree.rpmdb.pkglist"].find { it.getAt(0) == "kernel" }
return "${pkg[2]}-${pkg[3]}.${pkg[4]}"
}
def check_container_image(kver) {
def res = httpRequest(
url: "https://git.pyrocufflink.net/ContainerImages/-/packages/container/gasket-driver/${kver}",
httpMode: 'HEAD',
validResponseCodes: '100:599',
)
return res.getStatus() < 300
}
def arch = 'x86_64'
def fcos_release = get_fcos_release(arch)
def kver = get_kernel_version(arch, fcos_release)
def fedora = (kver =~ /\.fc([0-9]+)\./)[0][1]
def registry = 'git.pyrocufflink.net'
def full_name = "${registry}/containerimages/gasket-driver:${kver}"
if (!check_container_image(kver)) {
buildContainerImage2.runInPod(pi: false) {
container('buildah') {
buildContainerImage2.withBuildahCreds(registry) {
stage('Build') {
checkout scm
sh "buildah build -t '${full_name}' --build-arg FEDORA='${fedora}' --build-arg KVER='${kver}'"
}
stage('Push') {
sh "buildah push '${full_name}'"
}
}
}
}
} else {
currentBuild.result = 'NOT_BUILT'
}