Hi,

I think you should not use global variables at all : only global functions.
Trust me : you don't need global variables :)
To use global functions :

# /vars/myGlobFunc.groovy
def call() {
  // ....
}
// This way you can call you function directly in "steps" if you are in
declarative pipeline, from anywhere in scripted
// This function has access to other global methods

# Or this way, in /vars/myClass.groovy :
def myGlobFunc.groovy {
   // ...
}
return this
// myClass.myGlobFunc()
// This function has also access to other global methods because of this
special class declaration
// But you cannot call this from steps in declarative, you must be inside
script

But if you really want global variables, I would recommand to use a single
object containing what you need and give this object to people who need it,
for example a class or a map :

def myVars = [:]
myVars['myGlobVar'] = 'hello'
pipeline {
  // ...
   aFunction(myVars)
}

# But if you really really want global, just remove the "def" :
myVars = [:]
myVars['myGlobVar'] = 'hello'
pipeline {
  // ...
   aFunction()  // myVars can be read in this function
}
// But I thihnk this is a bad code

Another way is to use static field of class, but it is also a bad pratice
to use static field if you want them mutable.

You could also just try to use the existing global var "env". This is a
clean solution, but you must only use text values.
env['myGlobVar'] = "hello"
echo env.myGlobVar

Good luck


On Thu, Dec 17, 2020 at 9:45 AM Ven H <[email protected]> wrote:

> In my case, I do the following. I have a GlobalVars.groovy file with below
> content.
>
> #!/usr/bin/env groovypackage com.<companyName>.<ProductName>;public class 
> GlobalVars {   static String myVar = ""}
>
> Then in my Shared Library class, I use it like below.
>
> GlobalVars.myVar = ""
>
> Try it like this and check. Here, I have declared the class as Public and the 
> variable as static. That's the only difference.
>
>
> Regards,
> Venkatesh
>
>
> On Thu, Dec 17, 2020 at 12:56 PM Adrian Wyssmann <[email protected]>
> wrote:
>
>> I see several problem
>>
>>    1. using ' will not expand the parameters is your call should be sh
>>    "echo ${CustomMessage}"
>>    2. CustomMessage is declared within the class Vars(), so you cannot
>>    access it
>>
>> You could implement a getter an then do something like this "echo
>> ${globalVars.getCustomMessage()}"
>>
>> Maybe others have better ideas...?
>> On Thursday, December 17, 2020 at 12:10:19 AM UTC+1 [email protected]
>> wrote:
>>
>>> Hello there
>>> Maybe this is a very basic question, but am not being able to access a
>>> global variable
>>> from a shared library from a Jenkinsfile
>>>
>>> under vars I defined something like this
>>>
>>> globalVars.groovy
>>> class Vars () {
>>>
>>>     def CustomMessage = "This is a new deployment"
>>>
>>> }
>>>
>>> from my Jenkinsfile
>>>
>>> library identifier: 'globalVars@master', \
>>>                      retriever: modernSCM([$class: 'GitSCMSource', \
>>>                                 credentialsId: 'tfsservice', \
>>>                                 remote: 'http://myrepo.com', \
>>>                                 traits: [gitBranchDiscovery()]])
>>>
>>>
>>> pipeline {
>>>
>>> stages {
>>>     stage('Do Some Stuff') {
>>>       steps {
>>>         script {
>>>
>>>            sh 'echo ${CustomMessage}'
>>>
>>>           }
>>>         }
>>>       }
>>>     }
>>>
>>> }
>>>
>>> But the above returns nothing, what am I doing wrong?
>>> Thanks
>>> Regards
>>>
>> --
>> 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/099e3aee-dffc-459d-8eb5-d64204effb58n%40googlegroups.com
>> <https://groups.google.com/d/msgid/jenkinsci-users/099e3aee-dffc-459d-8eb5-d64204effb58n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> 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/CAPp28eojNNe9xEFtD8rNhxXnY5Z118zrhGLJRVsqSqaL4qiHFA%40mail.gmail.com
> <https://groups.google.com/d/msgid/jenkinsci-users/CAPp28eojNNe9xEFtD8rNhxXnY5Z118zrhGLJRVsqSqaL4qiHFA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>


-- 
Yannick LACAUTE
Consultant indépendant
39 rue de Wattignies, 75012 Paris
Tel : 06 16 85 95 76

-- 
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/CAG1W_Axgd1GdUuD-6J4xFmEqQSMC_XU_ekaXAuAF8AvfXfS6Cg%40mail.gmail.com.

Reply via email to