mirror of https://github.com/reiseburo/hermann
Merge pull request #135 from bitwiseman/feature/jenkinsfile
Add Jenkins pipeline
This commit is contained in:
commit
9473c8b24b
|
@ -0,0 +1,78 @@
|
|||
#!groovy
|
||||
|
||||
/* Only keep the 10 most recent builds. */
|
||||
properties([[$class: 'BuildDiscarderProperty',
|
||||
strategy: [$class: 'LogRotator', numToKeepStr: '10']]])
|
||||
|
||||
stage 'Build'
|
||||
|
||||
node {
|
||||
// Checkout
|
||||
checkout scm
|
||||
|
||||
// Use a particular version of ruby (configured by rvm) to run build
|
||||
withRuby (version: '2.1.9',
|
||||
sh: '''
|
||||
# install required bundles
|
||||
bundle install || exit 1
|
||||
|
||||
# compile native components
|
||||
bundle exec rake compile || exit 1
|
||||
|
||||
# build the package
|
||||
bundle exec rake build || exit 1
|
||||
|
||||
# run tests and coverage
|
||||
bundle exec rake spec || exit 1
|
||||
'''
|
||||
)
|
||||
|
||||
// Archive the built artifacts
|
||||
archive (includes: 'pkg/*.gem')
|
||||
|
||||
// publish html
|
||||
// "target:" shouldn't be needed, https://issues.jenkins-ci.org/browse/JENKINS-29711.
|
||||
publishHTML (target: [
|
||||
allowMissing: false,
|
||||
alwaysLinkToLastBuild: false,
|
||||
keepAll: true,
|
||||
reportDir: 'coverage',
|
||||
reportFiles: 'index.html',
|
||||
reportName: "RCov Report"
|
||||
])
|
||||
}
|
||||
|
||||
// Helper to run shell with specific ruby version configured.
|
||||
// Rvm configuration is a bit involved and can go sideways easily
|
||||
def withRuby (rubyVersion, sh) {
|
||||
// Rvm wants the shell it runs in to be a login shell
|
||||
def shellScript = """#!/bin/bash --login
|
||||
# Ensure rvm is configured
|
||||
rvm current || exit 1
|
||||
|
||||
# Rvm also wants to be run from a function, so pull it in
|
||||
[[ -s "\$HOME/.rvm/scripts/rvm" ]] && source "\$HOME/.rvm/scripts/rvm"
|
||||
|
||||
# Ensure the requested version of ruby is installed
|
||||
rvm install ${rubyVersion} || exit 1
|
||||
|
||||
# Use the requested version of ruby
|
||||
rvm use ${rubyVersion} || exit 1
|
||||
rvm current && rvm info || exit 1
|
||||
|
||||
# Fail if the requested version of ruby is not active when we're done
|
||||
[[ "\$(rvm current)" == *"${rubyVersion}"* ]] || {
|
||||
echo Failed to set ruby to version ${rubyVersion}!
|
||||
exit 1
|
||||
}
|
||||
|
||||
# ensure bundle gem is installed for this version of ruby
|
||||
gem install bundle
|
||||
|
||||
# run the commands that were passed
|
||||
${sh}
|
||||
"""
|
||||
|
||||
sh shellScript
|
||||
|
||||
}
|
Loading…
Reference in New Issue