ci: Use fedoraBuild function
All checks were successful
RPMs/gasket-driver/pipeline/head This commit looks good

Instead of manually specifying a list of Fedora versions to target, we
can now use the `fedoraBuild` pipeline function to generate the target
matrix automatically.

Note that the stage names need to be unique, as the `when` function
cannot mark the correct stage as "skipped" if there are multiple stages
with the same name.
This commit is contained in:
2025-11-23 11:42:55 -06:00
parent 2684e4b814
commit 1a2b2f604c

85
ci/Jenkinsfile vendored
View File

@@ -1,7 +1,7 @@
pipeline { @Library('dch')_
agent none
triggers { properties([
pipelineTriggers([
GenericTrigger( GenericTrigger(
causeString: 'Webhook Trigger', causeString: 'Webhook Trigger',
genericVariables: [[ genericVariables: [[
@@ -15,56 +15,39 @@ pipeline {
silentResponse: true, silentResponse: true,
tokenCredentialId: 'webhook-trigger', tokenCredentialId: 'webhook-trigger',
) )
} ])
])
stages { try {
stage('RPM') { fedoraBuild(
matrix { architectures: ['amd64'],
axes { podTemplate: 'ci/podTemplate.yaml',
axis { buildContainer: 'fedora',
name 'FEDORA' ) { arch, fedoraVersion ->
values '41', '42' stage("Prepare f${fedoraVersion}/${arch}") {
} checkout scm
}
agent { container('fedora') {
kubernetes {
yamlFile 'ci/podTemplate.yaml'
yamlMergeStrategy merge()
defaultContainer 'fedora'
containerTemplate {
name 'fedora'
image "registry.fedoraproject.org/fedora:${FEDORA}"
}
}
}
stages {
stage('Prepare') {
steps {
sh '. ci/prepare.sh' sh '. ci/prepare.sh'
} }
} }
stage('Build') { stage("Build f${fedoraVersion}/${arch}") {
steps {
withCredentials([file( withCredentials([file(
credentialsId: 'kmod-signing-cert', credentialsId: 'kmod-signing-cert',
variable: 'SIGNING_KEY', variable: 'SIGNING_KEY',
)]) { )]) {
container('fedora') {
sh '. ci/build.sh' sh '. ci/build.sh'
} }
} }
} }
stage('Sign') { stage("Sign f${fedoraVersion}/${arch}") {
when { when(BRANCH_NAME == 'main') {
branch 'main' withEnvironment([
} "GNUPGHOME=${env.WORKSPACE_TMP}/gnupg",
environment { ]) {
GNUPGHOME = "${env.WORKSPACE_TMP}/gnupg"
}
steps {
withCredentials([ withCredentials([
file( file(
credentialsId: 'rpm-gpg-key', credentialsId: 'rpm-gpg-key',
@@ -75,40 +58,32 @@ pipeline {
variable: 'RPM_GPG_KEY_PASSPHRASE', variable: 'RPM_GPG_KEY_PASSPHRASE',
), ),
]) { ]) {
container('fedora') {
sh '. ci/sign.sh' sh '. ci/sign.sh'
} }
} }
} }
}
}
stage('Archive') {
steps {
archiveArtifacts '*.rpm' archiveArtifacts '*.rpm'
}
}
stage('Publish') { stage("Publish f${fedoraVersion}/${arch}") {
when { when(BRANCH_NAME == 'main') {
branch 'main' container('fedora') {
}
steps {
sshagent(['jenkins-repohost']) { sshagent(['jenkins-repohost']) {
sh '. ci/publish.sh' sh '. ci/publish.sh'
} }
} }
} }
} }
} }
} } catch (ex) {
} currentBuild.result = 'FAILED'
post {
failure {
emailext( emailext(
to: 'gyrfalcon@ebonfire.com', to: 'gyrfalcon@ebonfire.com',
subject: '$DEFAULT_SUBJECT', subject: '$DEFAULT_SUBJECT',
body: '$DEFAULT_CONTENT', body: '$DEFAULT_CONTENT',
) )
} throw ex
}
} }