That's great! Thanks, Ivan!

I kept my scripts in JSL's resource folder and loading them on the Agent 
using "libraryResource".   

On Wednesday, July 14, 2021 at 11:21:25 AM UTC-7 [email protected] wrote:

> one more thing if you want to have those scripts shared across pipelines 
> you can use the shared library.
> You can define those scripts as resources in the shared library and invoke 
> them directly
>
> def stdout = bat(returnStdout: true, script: "*groovy -e 
> '${libraryResource('my-script.groovy'))}'* ")
>
> see 
> https://www.jenkins.io/doc/book/pipeline/shared-libraries/#loading-resources
> El miércoles, 14 de julio de 2021 a las 20:15:38 UTC+2, Ivan Fernandez 
> Calvo escribió:
>
>> no, it is not possible, the groovy code is executed in the Jenkins 
>> controller by design, it is designed to execute simple logic of 
>> orchestration logic, if you want to execute heavy logic you should do it on 
>> the agents by using steps that run scripts or processes on the agent. 
>>
>> pipeline {
>>    agent { label 'scdc-generic-w10x64' }
>>    options {
>>       timestamps()
>>    }
>>    stages {
>>       stage('Log ip') {
>>         steps {
>>             script {
>>                bat "ipconfig -all"   // *** Gets executed on Jenkins 
>> Agent ***
>>                def stdout = bat(returnStdout: true, script: "*groovy 
>> *my-script.groovy" 
>> // *** Gets executed on Jenkins Agent ***
>>                echo "stdout"
>>             }
>>          }
>>       }
>>    }
>>    post {
>>       always {
>>          cleanWs()
>>       }
>>    }
>> }
>>
>> the script can be whatever you want groovy, python, PowerShell, or a 
>> simple binary, the only that you have to have is the script interpreter 
>> installed in your Jenkins agent 
>> take a look at this fantastic Jesse Glick presentation to know why 
>> https://www.youtube.com/watch?v=Zeqc6--0eQw
>> El martes, 13 de julio de 2021 a las 22:49:57 UTC+2, [email protected] 
>> escribió:
>>
>>> I have a question regarding the execution of JSL scripts on the Jenkins 
>>> Agent node. I noticed JSL scripts get executed only on Jenkins Master, is 
>>> it possible to run the JSL script on Jenkins Agents?
>>>
>>> I have multiple stages in my Pipeline and I wish to run those stages on 
>>> different Jenkins Agent nodes. 
>>>
>>> My primary motivation for using JSL is end-to-end Pipeline testability 
>>> during development using “replay”, where I can modify Jenkinsfile as well 
>>> as scripts from JSL.
>>>
>>> This is a snippet of my Pipeline --
>>>
>>> pipeline {
>>>    agent { label 'scdc-generic-w10x64' }
>>>    options {
>>>       timestamps()
>>>    }
>>>    stages {
>>>       stage('Log ip') {
>>>         steps {
>>>             script {
>>>                bat "ipconfig -all"   // *** Gets executed on Jenkins 
>>> Agent ***
>>>                foo = jsl.foo.new(this) // foo is a Groovy class in JSL
>>>                foo.logIpAddress()   // *** Gets executed on Jenkins 
>>> Master ***
>>>             }
>>>          }
>>>       }
>>>    }
>>>    post {
>>>       always {
>>>          cleanWs()
>>>       }
>>>    }
>>> }
>>>
>>>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/78da0a58-55bb-4e7e-9bca-195c422fe1e3n%40googlegroups.com.

Reply via email to