As I’d said the System.getEnv() call returns the environment the Jenkins
process is currently running in.
When Jenkins runs an external process (ie sh) it adds the values in the env map
to the environment of the external process. The environment of the Jenkins
process is left untouched.
Thus “sh ‘printenv’” shows the vars (It’s an external process)
System.getEnv() does not as you’re just getting the Jenkins process
environment.
If you’re connecting up to Dynamo you’d generally don’t want to do that from
within pipeline script; Things are a lot more robust if you do those sorts of
things from an external script.
The recommendation is to use pipeline script to orchestrate the job but leave
the actual heavy lifting to external processes and plugins.
From: red 888
Sent: 20 November 2017 18:36
To: Jenkins Users
Subject: Re: Why aren't these injected variables making it to my groovy class?
Can you explain this i don't understand.
sh 'printenv' returns my injected variables. System.getenv() inside my function
does not. Even if I shell out from the groovy function and run printenv I still
don't see the variables. Why aren't they there in the context of my function?
The amazon api looks for these variables so when I run this in my function its
looking for those two environment vars that should be injected but are not:
def ebClient = new AmazonDynamoDBClientBuilder()
.withCredentials(new EnvironmentVariableCredentialsProvider())
.build()
On Monday, November 20, 2017 at 6:57:07 AM UTC-5, Daniel Butler wrote:
By doing System.getenv() you're getting the environment of the Jenkins master
process.
The environment that will be used by any process run in the pipeline is
available through the built-in variable env.
Regards,
Daniel
On 20 Nov 2017 2:14 am, "red 888" <[email protected]> wrote:
In my pipeline I'm injecting aws credentials:
withCredentials([[$class: 'AmazonWebServicesCredentialsBinding',
credentialsId: '89h9sfh8shf98shf98he9f8sf',
accessKeyVariable: 'AWS_ACCESS_KEY_ID',
secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
sh 'printenv'
echo myFunc.myMeth('blah','sdjlfkdf')
}
myFunc looks like this:
class myFunc {
static Object myMeth (String param1, String param2){
def env = System.getenv()
//Print all the environment variables.
env.each{
println it
}
}
}
Looking at the output of sh 'printenv' I see AWS_ACCESS_KEY_ID and
AWS_SECRET_ACCESS_KEY are injected. But when I try to echo back what envs
myFunc has access to I don't see those variables. Is this by design? Is myFunc
isolated and I need change its scope or something?
--
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/6dfaad11-29f5-4287-a0a0-a16a2373ecd4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
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/89ce7f8b-99ae-4e47-abbb-a57e0f306fcc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
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/5a1400f0.cebe500a.3a6dc.5945%40mx.google.com.
For more options, visit https://groups.google.com/d/optout.