def call(body) {
def pipelineParams = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = pipelineParams
body()
pipeline {
agent {
label 'master'
}
triggers {
upstream(upstreamProjects: "../Reference/${pipelineParams.refFamily}",
threshold: hudson.model.Result.SUCCESS)
}
stages {
stage('Clean') {
steps {
sh 'rm -rf out'
}
}
stage('Transform') {
agent {
docker {
image 'cloudfluff/databaker'
reuseNode true
}
}
steps {
script {
ansiColor('xterm') {
sh "jupyter-nbconvert --output-dir=out --ExecutePreprocessor.timeout=None --execute 'main.ipynb'"
}
}
}
}
stage('Test') {
agent {
docker {
image 'cloudfluff/csvlint'
reuseNode true
}
}
steps {
script {
ansiColor('xterm') {
sh "csvlint -s schema.json"
}
}
}
}
stage('Upload draftset') {
steps {
script {
jobDraft.replace()
uploadTidy(['out/observations.csv'],
"https://ons-opendata.github.io/${pipelineParams.refFamily}/columns.csv")
}
}
}
stage('Publish') {
steps {
script {
jobDraft.publish()
}
}
}
}
post {
always {
script {
archiveArtifacts artifacts: 'out/*', excludes: 'out/*.html'
publishHTML([
allowMissing: true, alwaysLinkToLastBuild: true, keepAll: true,
reportDir: 'out', reportFiles: 'main.html',
reportName: 'Transform'])
if (pipelineParams.containsKey('trelloCard')) {
updateCard pipelineParams.trelloCard
}
}
}
success {
build job: '../GDP-tests', wait: false
}
}
}
}