File: Jenkinsfile

package info (click to toggle)
jetty9 9.2.21-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 34,284 kB
  • sloc: java: 303,318; xml: 17,352; sh: 867; jsp: 286; sql: 38; makefile: 8
file content (153 lines) | stat: -rw-r--r-- 4,382 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!groovy

node {
  // System Dependent Locations
  def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation'
  def jdktool = tool name: 'jdk7', type: 'hudson.model.JDK'

  // Environment
  List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"]
  mvnEnv.add("MAVEN_OPTS=-Xms256m -Xmx1024m -XX:MaxPermSize=512m -Djava.awt.headless=true")

  try
  {
    stage('Checkout') {
      checkout scm
    }
  } catch (Exception e) {
    notifyBuild("Checkout Failure")
    throw e
  }

  try
  {
    stage('Compile') {
      withEnv(mvnEnv) {
        timeout(time: 15, unit: 'MINUTES') {
          sh "mvn -B clean install -Dtest=None"
        }
      }
    }
  } catch(Exception e) {
    notifyBuild("Compile Failure")
    throw e
  }

  try
  {
    stage('Javadoc') {
      withEnv(mvnEnv) {
        timeout(time: 15, unit: 'MINUTES') {
          sh "mvn -B javadoc:javadoc"
        }
      }
    }
  } catch(Exception e) {
    notifyBuild("Javadoc Failure")
    throw e
  }

  try
  {
    stage('Test') {
      withEnv(mvnEnv) {
        timeout(time: 60, unit: 'MINUTES') {
          // Run test phase / ignore test failures
          sh "mvn -B install -Dmaven.test.failure.ignore=true"
          // Report failures in the jenkins UI
          step([$class: 'JUnitResultArchiver', 
              testResults: '**/target/surefire-reports/TEST-*.xml'])
          // Collect up the jacoco execution results
          def jacocoExcludes = 
              // build tools
              "**/org/eclipse/jetty/ant/**" +
              ",**/org/eclipse/jetty/maven/**" +
              ",**/org/eclipse/jetty/jspc/**" +
              // example code / documentation
              ",**/org/eclipse/jetty/embedded/**" +
              ",**/org/eclipse/jetty/asyncrest/**" +
              ",**/org/eclipse/jetty/demo/**" +
              // special environments / late integrations
              ",**/org/eclipse/jetty/gcloud/**" +
              ",**/org/eclipse/jetty/infinispan/**" +
              ",**/org/eclipse/jetty/osgi/**" +
              ",**/org/eclipse/jetty/spring/**" +
              ",**/org/eclipse/jetty/http/spi/**" +
              // test classes
              ",**/org/eclipse/jetty/tests/**" +
              ",**/org/eclipse/jetty/test/**";
          step([$class: 'JacocoPublisher', 
              inclusionPattern: '**/org/eclipse/jetty/**/*.class',
              exclusionPattern: jacocoExcludes,
              execPattern: '**/target/jacoco.exec', 
              classPattern: '**/target/classes', 
              sourcePattern: '**/src/main/java'])
          // Report on Maven and Javadoc warnings
          step([$class: 'WarningsPublisher', 
              consoleParsers: [
                  [parserName: 'Maven'],
                  [parserName: 'JavaDoc'],
                  [parserName: 'JavaC']
              ]])
        }
        if(isUnstable())
        {
          notifyBuild("Unstable / Test Errors")
        }
      }
    }
  } catch(Exception e) {
    notifyBuild("Test Failure")
    throw e
  }
}

// True if this build is part of the "active" branches
// for Jetty.
def isActiveBranch()
{
  def branchName = "${env.BRANCH_NAME}"
  return ( branchName == "master" ||
           branchName.startsWith("jetty-") );
}

// Test if the Jenkins Pipeline or Step has marked the
// current build as unstable
def isUnstable()
{
  return currentBuild.result == "UNSTABLE"
}

// Send a notification about the build status
def notifyBuild(String buildStatus)
{
  if ( !isActiveBranch() )
  {
    // don't send notifications on transient branches
    return
  }

  // default the value
  buildStatus = buildStatus ?: "UNKNOWN"

  def email = "${env.EMAILADDRESS}"
  def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}"
  def detail = """<h4>Job: <a href='${env.JOB_URL}'>${env.JOB_NAME}</a> [#${env.BUILD_NUMBER}]</h4>
  <p><b>${buildStatus}</b></p>
  <table>
    <tr><td>Build</td><td><a href='${env.BUILD_URL}'>${env.BUILD_URL}</a></td><tr>
    <tr><td>Console</td><td><a href='${env.BUILD_URL}console'>${env.BUILD_URL}console</a></td><tr>
    <tr><td>Test Report</td><td><a href='${env.BUILD_URL}testReport/'>${env.BUILD_URL}testReport/</a></td><tr>
  </table>
  """

  emailext (
    to: email,
    subject: summary,
    body: detail
  )

}


// vim: et:ts=2:sw=2:ft=groovy