summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2018-04-05 07:51:02 +0200
committerGerd Hoffmann <kraxel@redhat.com>2018-04-05 07:51:02 +0200
commit7d605df81c1f96a2f03fe29175ace3158085f4d8 (patch)
tree56b294a57ead922f47edfbdf76243893c0048563
parentddeadb29e95b916bf95d7a50d0aad939cbba6249 (diff)
downloadcoreboot-7d605df81c1f96a2f03fe29175ace3158085f4d8.tar.gz
add jenkinsfile
-rw-r--r--Jenkinsfile123
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,
+ ])
+ }
+ }
+}