|  | /* | 
|  | * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. | 
|  | * | 
|  | * This program and the accompanying materials are made available under the | 
|  | * terms of the Eclipse Public License v. 2.0, which is available at | 
|  | * http://www.eclipse.org/legal/epl-2.0. | 
|  | * | 
|  | * This Source Code may also be made available under the following Secondary | 
|  | * Licenses when the conditions for such availability set forth in the | 
|  | * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, | 
|  | * version 2 with the GNU Classpath Exception, which is available at | 
|  | * https://www.gnu.org/software/classpath/license.html. | 
|  | * | 
|  | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 | 
|  | */ | 
|  |  | 
|  | env.label = "ci-pod-${UUID.randomUUID().toString()}" | 
|  | pipeline { | 
|  | options { | 
|  | // keep at most 50 builds | 
|  | buildDiscarder(logRotator(numToKeepStr: '50')) | 
|  | // abort pipeline if previous stage is unstable | 
|  | skipStagesAfterUnstable() | 
|  | // show timestamps in logs | 
|  | timestamps() | 
|  | // global timeout, abort after 6 hours | 
|  | timeout(time: 20, unit: 'MINUTES') | 
|  | } | 
|  | agent { | 
|  | kubernetes { | 
|  | label "${env.label}" | 
|  | defaultContainer 'jnlp' | 
|  | yaml """ | 
|  | apiVersion: v1 | 
|  | kind: Pod | 
|  | metadata: | 
|  | spec: | 
|  | securityContext: | 
|  | runAsUser: 1000100000 | 
|  | volumes: | 
|  | - name: maven-repo-shared-storage | 
|  | persistentVolumeClaim: | 
|  | claimName: glassfish-maven-repo-storage | 
|  | - name: maven-repo-local-storage | 
|  | emptyDir: {} | 
|  | containers: | 
|  | - name: jnlp | 
|  | image: jenkins/jnlp-slave:alpine | 
|  | imagePullPolicy: IfNotPresent | 
|  | env: | 
|  | - name: JAVA_TOOL_OPTIONS | 
|  | value: -Xmx1G | 
|  | resources: | 
|  | limits: | 
|  | memory: "1Gi" | 
|  | cpu: "1" | 
|  | - name: build-container | 
|  | image: ee4jglassfish/ci:jdk-8.181 | 
|  | args: | 
|  | - cat | 
|  | tty: true | 
|  | imagePullPolicy: Always | 
|  | volumeMounts: | 
|  | - mountPath: "/home/jenkins/.m2/repository" | 
|  | name: maven-repo-shared-storage | 
|  | - mountPath: "/home/jenkins/.m2/repository/org/glassfish/hk2" | 
|  | name: maven-repo-local-storage | 
|  | resources: | 
|  | limits: | 
|  | memory: "7Gi" | 
|  | cpu: "3" | 
|  | """ | 
|  | } | 
|  | } | 
|  | stages { | 
|  | stage('build') { | 
|  | steps { | 
|  | container('build-container') { | 
|  | timeout(time: 10, unit: 'MINUTES') { | 
|  | sh 'mvn clean install' | 
|  | junit testResults: '**/target/surefire-reports/*.xml', allowEmptyResults: true | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | } |