Ah I thought I could just use the JNLP from the openshift-slave-maven-centos7 
<https://hub.docker.com/r/openshift/jenkins-slave-maven-centos7/>directly. 
The end goal is to do the build with the openshift-slave-maven container 
and do some integration tests with an attached mysql container, while at 
the end also do some openshift CLI commands with the maven container. For 
example, I started with the scripted pipelines syntax first. 

podTemplate(label: 'maven2', serviceAccount: 'jenkins', cloud: 'openshift', 
containers: [
 containerTemplate(name: 'jnlp', image: 
'docker-registry.default.svc:5000/cicd/jenkins-slave-maven-centos7:v3.9', 
alwaysPullImage: true, workingDir: '/tmp', args: '${computer.jnlpmac} 
${computer.name}', envVars: [
   containerEnvVar(key: 'MAVEN_MIRROR_URL', value: 'xxxxxx')
 ]),
 containerTemplate(name: 'mysql', image: 'mysql:5.6', alwaysPullImage: true, 
envVars: [
   containerEnvVar(key: 'MYSQL_DATABASE', value: 'xxx'),
   containerEnvVar(key: 'MYSQL_USER', value: 'xxx'),
   containerEnvVar(key: 'MYSQL_PASSWORD', value: 'xxx'),
   containerEnvVar(key: 'MYSQL_RANDOM_ROOT_PASSWORD', value: 'yes')], ports: 
[portMapping(containerPort: 3306)])], volumes: [
 emptyDirVolume(mountPath: '/var/lib/mysql')
 ]
 ) {

node('maven2') {
   stage('checkout') {
       checkout scm
   }

        stage('check java') {
           sh "java -version"
       }

This worked out perfectly fine, I thought mapping  it 1:1 to the 
declarative + yaml format would achieve the same result, but that was not 
the case.

Op dinsdag 1 mei 2018 19:55:23 UTC+2 schreef Matthew Ceroni:
>
> Why even over ride the JNLP container? Just use the default and add 
> another container to the POD with your build tools (then you don't even 
> have to use the YAML format since you won't require any of the extended 
> benefits it provides). Then use the container step to execute in that 
> container.
>
> On Tuesday, May 1, 2018 at 5:53:06 AM UTC-7, Hung Do wrote:
>>
>> Hi everyone,
>>
>> I have a problem with this Jenkinsfile, which doesn't wants to build for 
>> me
>>
>> #!/usr/bin/env groovy
>>
>> pipeline {
>>   agent {
>>     kubernetes {
>>       label 'maven2'
>>       cloud 'openshift'
>>       serviceAccount 'jenkins'
>>       yaml """
>> apiVersion: v1
>> kind: Pod
>> spec:
>>   containers:
>>   - name: jnlp
>>     image: 
>> docker-registry.default.svc:5000/cicd/jenkins-slave-maven-centos7:v3.9
>>     imagePullPolicy: Always
>>     workingDir: /tmp
>>     args: ["${computer.jnlpmac} ${computer.name}"]
>> """
>>         }
>>     }
>>     stages {
>>         stage('Check Java') {
>>             steps {
>>                 sh 'java -version'
>>             }
>>         }
>>     }
>> }
>>
>>
>> With this Jenkinsfile, I get the following error 
>>
>> [Pipeline] End of Pipeline
>> groovy.lang.MissingPropertyException: No such property: computer for class: 
>> groovy.lang.Binding
>>         at groovy.lang.Binding.getVariable(Binding.java:63)
>>         at 
>> org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:242)
>>         at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
>>         at 
>> org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:292)
>>         at 
>> org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
>>         at 
>> com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
>>         at 
>> com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
>>         at WorkflowScript.run(WorkflowScript:18)
>>         at 
>> org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:56)
>>         at WorkflowScript.run(WorkflowScript:3)
>>         at ___cps.transform___(Native Method)
>>         at 
>> com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)
>>         at 
>> com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
>>         at 
>> com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:66)
>>         at sun.reflect.GeneratedMethodAccessor425.invoke(Unknown Source)
>>         at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>         at java.lang.reflect.Method.invoke(Method.java:498)
>>         at 
>> com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
>>         at 
>> com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
>>         at com.cloudbees.groovy.cps.Next.step(Next.java:83)
>>         at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
>>         at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
>>         at 
>> org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
>>         at 
>> org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
>>         at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.java:34)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda$run0$0(SandboxContinuable.java:59)
>>         at 
>> org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:58)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232)
>>         at 
>> org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
>>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>         at 
>> hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
>>         at 
>> jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
>>         at 
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>         at 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>         at 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>         at java.lang.Thread.run(Thread.java:748)
>> Finished: FAILURE
>>
>>
>> If I remove this part 
>>
>> args: ["${computer.jnlpmac} ${computer.name}"]
>>
>>
>> Then the Jenkinsfile gets accepted, the pod get started, but the 
>> container crashes because there are no arguments. It is the official 
>> openshift/jenkins-slave-maven-centos7:v3.9 image.
>> If I try scripted pipelines without the YAML format, it will work if I 
>> pass the args via the containertemplate syntax.
>>
>> Am I doing something wrong here?
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/2424ca0f-f4d9-48ed-ab0f-c1a90076df07%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to