diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2018-04-05 07:51:02 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2018-04-05 07:51:02 +0200 |
commit | 7d605df81c1f96a2f03fe29175ace3158085f4d8 (patch) | |
tree | 56b294a57ead922f47edfbdf76243893c0048563 | |
parent | ddeadb29e95b916bf95d7a50d0aad939cbba6249 (diff) | |
download | coreboot-7d605df81c1f96a2f03fe29175ace3158085f4d8.tar.gz |
add jenkinsfile
-rw-r--r-- | Jenkinsfile | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..a12621e --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,123 @@ +#!/usr/bin/env groovy + +def RPMSource() { + dir ('source') { + checkout([ + $class: 'GitSCM', + branches: [ + [ name: '*/master' ] + ], + extensions: [ + [ + $class: 'CloneOption', + timeout: 60 + ] + ], + userRemoteConfigs: [ + [ url: 'https://review.coreboot.org/coreboot.git' ] + ]]) + } +} + +def RPMBuild() { + sh ''' + # figure version + commit="$(cd source; git describe --tags --long --match '[0-9]*')" + ghash="${commit##*-}" + commit="${commit%-*}" + gcnt="${commit##*-}" + commit="${commit%-*}" + version="${commit}" + + # fresh snapshot tarball + rm -f *.tar.gz + tarball="coreboot-${ghash}.tar.gz" + (cd source; git archive --format=tar --prefix="${tarball%.tar.gz}/" HEAD) \ + | gzip > "${tarball}" + + # tweak spec file + sed -i.orig \ + -e "s/\\(Version:[ \\t]\\+\\)\\(.*\\)/\\1${version}/" \ + -e "s/\\(Release:[ \\t]\\+\\)\\(.*\\)/\\1${gcnt}.${BUILD_NUMBER}.${ghash}/" \ + -e "s/\\(Source0:[ \\t]\\+\\)\\(.*\\)/\\1${tarball}/" \ + -e "s/\\(%setup\\)\\(.*\\)/\\1 -n ${tarball%.tar.gz}/" \ + *.spec + diff -u *.spec.orig *.spec || true + + # build package + rpmbuild \ + --define "_specdir ${WORKSPACE}" \ + --define "_sourcedir ${WORKSPACE}" \ + --define "_rpmdir ${WORKSPACE}/rpms" \ + --define "_srcrpmdir ${WORKSPACE}/rpms/src" \ + --define "_builddir ${WORKSPACE}/build" \ + --define "_buildrootdir ${WORKSPACE}/buildroot" \ + -ba *.spec + + # revert spec file tweaks + git reset --hard + + # create rpm package repo + createrepo rpms + ''' + archiveArtifacts 'rpms/*/*' +} + +def RPMCleanup() { + dir ("build") { + deleteDir() + } + dir ("buildroot") { + deleteDir() + } + dir ("rpms") { + deleteDir() + } +} + +pipeline { + agent { + node 'sys-fedora-x64' + } + + options { + buildDiscarder(logRotator(numToKeepStr: '3')) + disableConcurrentBuilds() + } + + triggers { + pollSCM('H * * * *') + } + + stages { + + stage ('Prepare') { + steps { + RPMSource(); + } + } + + stage ("RPM Build") { + steps { + RPMBuild() + } + } + + stage ("Cleanup") { + steps { + RPMCleanup() + } + } + } + + post { + failure { + emailext([ + to: 'kraxel@gmail.com', + subject: "${JOB_NAME} - build #${BUILD_NUMBER} - FAILED!", + body: "${BUILD_URL}\n", + attachLog: true, + ]) + } + } +} |