Skip to content

Commit

Permalink
Adding runTest Api and also java_opts and maven_opts (#91)
Browse files Browse the repository at this point in the history
Adding runTest Api and adding envVar as a param to spawn API
  • Loading branch information
rupalibehera authored Jan 23, 2019
1 parent 5a23264 commit b74c5f4
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 15 deletions.
43 changes: 32 additions & 11 deletions vars/pod.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ import io.openshift.Utils

def call(Map args = [:], body = null) {
def label = Utils.buildID(env.JOB_NAME, env.BUILD_NUMBER, prefix=args.name)
def envVars = processEnvVars(args.envVars)

podTemplate(
label: label,
cloud: 'openshift',
serviceAccount: 'jenkins',
inheritFrom: 'base',
containers: [
slaveTemplate(args.name, args.image, args.shell),
slaveTemplate(args.name, args.image, args.shell, envVars),
jnlpTemplate()
],
volumes: volumes(),
Expand All @@ -31,16 +32,29 @@ def volumes() {
]
}

def slaveTemplate(name, image, shell) {
containerTemplate(
name: name,
image: image,
command: "$shell -c",
args: 'cat',
ttyEnabled: true,
workingDir: '/home/jenkins/',
resourceLimitMemory: '640Mi'
)
def slaveTemplate(name, image, shell, envVars) {
if (envVars) {
return containerTemplate(
name: name,
image: image,
command: "$shell -c",
args: 'cat',
ttyEnabled: true,
workingDir: '/home/jenkins/',
resourceLimitMemory: '640Mi',
envVars: envVars
)
} else {
return containerTemplate(
name: name,
image: image,
command: "$shell -c",
args: 'cat',
ttyEnabled: true,
workingDir: '/home/jenkins/',
resourceLimitMemory: '640Mi'
)
}
}

def jnlpTemplate() {
Expand All @@ -54,3 +68,10 @@ def jnlpTemplate() {
resourceLimitMemory: '256Mi'
)
}

def processEnvVars(env){
envVars = []
env.each { e -> envVars << envVar(key: "${e.key}", value: "${e.value[0]}")
}
return envVars
}
13 changes: 13 additions & 0 deletions vars/runTest.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

def call(Map args) {
stage("Run Tests") {
if (!args.commands) {
error "Missing manadatory parameter: commands, please specify the command to run test"
}
def image = args.image
if (!image) {
image = config.runtime() ?: 'oc'
}
spawn(image: image, version: config.version(), commands: args.commands)
}
}
30 changes: 26 additions & 4 deletions vars/spawn.groovy
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import io.openshift.Utils;

def call(Map args = [:], body = null){
if (args.commands == null && body == null) {
error "Please specify either command or body; aborting ..."
currentBuild.result = 'ABORTED'
return
}

def spec = specForImage(args.image, args.version?: 'latest')
def checkoutScm = args.checkout_scm ?: true

// oc is available on master so don't spawn unnecessarily
Expand All @@ -14,7 +15,12 @@ def call(Map args = [:], body = null){
return
}

pod(name: args.image, image: spec.image, shell: spec.shell) {
def spec = specForImage(args.image, args.version?: 'latest')

// read and merge environment variable passed via spwan api and spec
def envVars = mergeEnvs(args, spec)

pod(name: args.image, image: spec.image, shell: spec.shell, envVars: envVars) {
if (checkoutScm) {
checkout scm
}
Expand All @@ -33,6 +39,14 @@ def execute(commands, body) {
}
}

def mergeEnvs(args, spec){
// read if any environment variable is passed via Jenkinsfile calling spawn api directly
def apiEnvVars = args.envVar ?: []
// read environment variable from spec
def specEnvVars = spec.envVar ?: []
return Utils.mergeResources(apiEnvVars + specEnvVars)
}

def specForImage(image, version){
// TODO use proper images
def specs = [
Expand Down Expand Up @@ -63,11 +77,19 @@ def specForImage(image, version){
"java": [
"latest": [
image: "openshift/jenkins-slave-maven-centos7:v4.0",
shell: '/bin/bash'
shell: '/bin/bash',
envVar: [
'MAVEN_OPTS': '-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn',
'_JAVA_OPTIONS': '-Duser.home=/home/jenkins -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Xms10m -Xmx192m'
],
],
"1.8": [
image: "openshift/jenkins-slave-maven-centos7:v4.0",
shell: '/bin/bash'
shell: '/bin/bash',
envVar: [
'MAVEN_OPTS': '-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn',
'_JAVA_OPTIONS': '-Duser.home=/home/jenkins -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Xms10m -Xmx192m'
],
],
],
]
Expand Down
5 changes: 5 additions & 0 deletions vars/testNamespace.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import io.openshift.Utils;

def call() {
return Utils.usersNamespace()
}

0 comments on commit b74c5f4

Please sign in to comment.