pipeline { agent none stages { stage('SSHCA') { matrix { axes { axis { name 'COMPONENT' values 'client', 'server' } axis { name 'ARCH' values 'amd64', 'arm64' } } excludes { axis { name 'COMPONENT' values 'server' } axis { name 'ARCH' values 'arm64' } } stage('Server') { when { expression { env.COMPONENT == 'server' } } agent { kubernetes { yamlFile 'ci/serverPodTemplate.yaml' yamlMergeStrategy merge() defaultContainer 'buildah' } } stages { stage('Build - Server') { steps { sh '. ci/build-server.sh' } } stage('Publish - Server') { steps { withEnv([ "REGISTRY_AUTH_FILE=${env.WORKSPACE_TMP}/auth.json" ]) { 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-server.sh' } } } } } stage('CLI') { when { expression { env.COMPONENT = 'client' } } agent { kubernetes { yamlFile 'ci/clientPodTemplate.yaml' yamlMergeStrategy merge() defaultContainer 'fedora' nodeSelector "kubernetes.io/arch=${ARCH}" } } environment { GNUPGHOME = "${env.WORKSPACE_TMP}/gnupg" } stages { stage('Prepare - CLI') { steps { sh '. ci/prepare-client.sh' } } stage('Build - CLI') { steps { sh '. ci/build-client.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 { dir('cli') { archiveArtifacts '*.rpm' } } } } stage('Publish - CLI') { when { branch 'master' } steps { sshagent(['jenkins-repohost']) { sh '. ci/publish-client.sh' } } } } } } } } }