152 lines
5.4 KiB
Groovy
152 lines
5.4 KiB
Groovy
pipeline {
|
|
agent none
|
|
|
|
stages {
|
|
stage('RPM') {
|
|
matrix {
|
|
axes {
|
|
axis {
|
|
name 'ARCH'
|
|
values 'amd64', 'arm64'
|
|
}
|
|
axis {
|
|
name 'FEDORA'
|
|
values '38', '39', '40'
|
|
}
|
|
}
|
|
|
|
stages {
|
|
stage('Build RPM') {
|
|
agent {
|
|
kubernetes {
|
|
yamlFile 'ci/podTemplate.yaml'
|
|
yamlMergeStrategy merge()
|
|
defaultContainer 'fedora'
|
|
nodeSelector "kubernetes.io/arch=${ARCH}"
|
|
containerTemplate {
|
|
name 'fedora'
|
|
image "registry.fedoraproject.org/fedora:${FEDORA}"
|
|
}
|
|
}
|
|
}
|
|
environment {
|
|
GNUPGHOME = "${env.WORKSPACE_TMP}/gnupg"
|
|
}
|
|
stages {
|
|
stage('Prepare') {
|
|
steps {
|
|
sh '. ci/prepare.sh'
|
|
}
|
|
}
|
|
|
|
stage('Build') {
|
|
steps {
|
|
sh '. ci/build.sh'
|
|
script {
|
|
if (env.BRANCH_NAME == 'master') {
|
|
withCredentials([
|
|
file(
|
|
credentialsId: 'rpm-gpg-key',
|
|
variable: 'RPM_GPG_PRIVATE_KEY',
|
|
),
|
|
file(
|
|
credentialsId: 'rpm-gpg-key-passphrase',
|
|
variable: 'RPM_GPG_KEY_PASSPHRASE',
|
|
),
|
|
]) {
|
|
sh '. ci/sign-rpms.sh'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success {
|
|
archiveArtifacts '*.rpm'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Publish') {
|
|
when {
|
|
branch 'master'
|
|
}
|
|
steps {
|
|
sshagent(['jenkins-repohost']) {
|
|
sh '. ci/publish.sh'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Build Container') {
|
|
matrix {
|
|
axes {
|
|
axis {
|
|
name 'ARCH'
|
|
values 'amd64', 'arm64'
|
|
}
|
|
}
|
|
stages {
|
|
stage('Container') {
|
|
agent {
|
|
kubernetes {
|
|
yamlFile 'ci/podTemplate-container.yaml'
|
|
yamlMergeStrategy merge()
|
|
defaultContainer 'buildah'
|
|
nodeSelector "kubernetes.io/arch=${ARCH}"
|
|
}
|
|
}
|
|
|
|
stages {
|
|
stage('Build') {
|
|
steps {
|
|
sh '. ci/build-container.sh'
|
|
stash name: env.ARCH, includes: "*.oci.tar"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Publish Container') {
|
|
agent {
|
|
kubernetes {
|
|
yamlFile 'ci/podTemplate-container.yaml'
|
|
yamlMergeStrategy merge()
|
|
defaultContainer 'buildah'
|
|
}
|
|
}
|
|
|
|
environment {
|
|
REGISTRY_AUTH_FILE = "${env.WORKSPACE_TMP}/auth.json"
|
|
}
|
|
|
|
steps {
|
|
unstash 'amd64'
|
|
unstash 'arm64'
|
|
withCredentials([usernamePassword(
|
|
credentialsId: 'jenkins-packages',
|
|
usernameVariable: 'BUILDAH_USERNAME',
|
|
passwordVariable: 'BUILDAH_PASSWORD',
|
|
)]) {
|
|
sh """
|
|
buildah login \
|
|
--username \${BUILDAH_USERNAME} \
|
|
--password \${BUILDAH_PASSWORD} \
|
|
git.pyrocufflink.net
|
|
"""
|
|
}
|
|
sh '. ci/publish-container.sh'
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|