Jenkinsfile 2.33 KB
Newer Older
Harald Sitter's avatar
importy  
Harald Sitter committed
1 2 3
env.DIST = 'xenial'
env.PWD_BIND = '/workspace'

4 5 6 7 8 9 10 11 12 13 14
if (env.TYPE == null) {
  if (params.TYPE != null) {
    env.TYPE = params.TYPE
  } else {
    type = inferType()
    if (type != null) {
      env.TYPE = type
    }
  }
}

Harald Sitter's avatar
Harald Sitter committed
15 16 17 18
if (env.OPENQA_SERIES == null) {
  env.OPENQA_SERIES = 'xenial'
}

19
if (env.TYPE == null) {
20 21 22
  error 'TYPE param not set. Cannot run install test without a type.'
}

Harald Sitter's avatar
Harald Sitter committed
23 24
properties([
  pipelineTriggers([upstream(threshold: 'UNSTABLE',
Harald Sitter's avatar
Harald Sitter committed
25
                             upstreamProjects: "iso_neon_${env.OPENQA_SERIES}_${TYPE}_amd64")]),
Harald Sitter's avatar
Harald Sitter committed
26 27 28
  pipelineTriggers([cron('0 H(9-22) * * *')])
])

29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

lock(inversePrecedence: true, label: 'OPENQA_INSTALL') {
  fancyNode('openqa') {
    try {
      stage('clone') {
        git 'git://anongit.kde.org/sysadmin/neon-openqa.git'
      }
      stage('rake-test') {
        sh 'rake test'
      }
      stage('iso-handover') {
          if (params.ISO) {
            echo 'Picking up ISO from trigger job.'
            sh "cp -v ${params.ISO} incoming.iso"
        }
44
      }
45

46 47
      stage('test_installation') {
        wrap([$class: 'LiveScreenshotBuildWrapper', fullscreenFilename: 'wok/qemuscreenshot/last.png']) {
48 49
          sh 'INSTALLATION=1 bin/contain.rb /workspace/bin/bootstrap.rb'
        }
50
      }
51 52 53 54
      if (env.ARCHIVE) {
        stage('archive-raid') {
          sh 'bin/archive.rb'
        }
55
      }
56
    } finally {
57
      dir('metadata') { allowEmptyArchive: true, archiveArtifacts '*' }
58 59 60
      dir('wok') { archiveArtifacts allowEmptyArchive: true, artifacts: 'testresults/*, ulogs/*, video.*, vars.json, slide.html' }
      junit 'junit/*'
      sh 'bin/contain.rb chown -R jenkins .'
61 62 63
      // Make sure we fail if metadata was empty, we didn't assert this earlier
      // because we want the rest of the post-build to run.
      sh 'ls metadata/*'
64
    }
Harald Sitter's avatar
importy  
Harald Sitter committed
65 66 67
  }
}

68
def fancyNode(label = null, body) {
Harald Sitter's avatar
importy  
Harald Sitter committed
69
  node(label) {
70 71 72
    wrap([$class: 'AnsiColorBuildWrapper', colorMapName: 'xterm']) {
      wrap([$class: 'TimestamperBuildWrapper']) {
        body()
Harald Sitter's avatar
importy  
Harald Sitter committed
73 74 75 76
      }
    }
  }
}
77 78 79 80 81 82

// When not called from an ISO build we'll want to infer the type from our own name.
def inferType() {
  if (!env.JOB_NAME) {
    return null
  }
Harald Sitter's avatar
Harald Sitter committed
83
  String[] types = ["useredition", "userltsedition", "devedition-gitunstable", "devedition-gitstable"]
84 85 86 87 88 89 90
  for (type in types) {
    if (env.JOB_NAME.contains(type)) {
      return type
    }
  }
  return null
}