I think you need to do an "eval" or the equivalent to filepath in order to
expand the inner variable. I believe the ssh command is executing "ls
/srv/jboss/server/${MAL}/log/" but MAL on the far end is empty. So you need
to complete the expansion before calling ssh.
This might get you on the right track
--
https://stackoverflow.com/questions/28997518/groovy-string-interpolation-with-value-only-known-at-runtime
On Thursday, October 22, 2020 at 12:14:06 PM UTC-4 cw wrote:
> I'm trying to set up a string parameter which will reference a variable
> which will be created within the pipeline. For instance, when building a
> parameterized build, the user enters a file path in this
> format: /srv/jboss/server/${MAL}/log/
>
> Where MAL is assigned via the pipeline and then I try to ls -ltr the fully
> qualified path after MAL has been expanded. However I'm not getting it to
> expand; wondering what I'm doing wrong.
>
> node {
> MALarray = params.multi.split(',')
>
> MALarray.each { MAL ->
>
> if (MAL in ['care''] ) {
> servers = ['xx.xx.xx.xx','xx.xx.xx.xx']
> }
>
> def soc_remote = [:]
> soc_remote.name = "${MAL} SOC"
> soc_remote.allowAnyHosts = true
>
> withCredentials([usernamePassword(credentialsId: 'Credentials',
> usernameVariable: 'USER_ID', passwordVariable: 'USER_PASSWORD')]) {
> soc_remote.user = USER_ID
> soc_remote.password = USER_PASSWORD
> servers.each { server ->
> soc_remote.host = server
> stage("Run script on ${server}") {
> try {
> echo("MAL is ${MAL}")
> sshCommand remote: soc_remote, command: "ls -ltr ${filepath}"
> } catch (err) {
> echo "something failed"
> echo "${err}"
> }
> }
> }
> }
> }
> }
>
> Console output:
> *11:59:34* MAL is care
> *11:59:34* [Pipeline] sshCommand
> <https://abaapvsc01amcba.tdbfg.com:9443/job/CraigTest/job/variable%20inside%20variable/2/console#>
>
> *11:59:34* Executing command on care SOC[xx.xx.xx.xx]: ls -ltr
> /srv/jboss/server/${MAL}/log/ sudo: false
> *11:59:35* ls: cannot access /srv/jboss/server//log/: No such file or
> directory
> *11:59:35* Failed command care SOC#1002 with status 2: ls -ltr
> /srv/jboss/server/${MAL}/log/
>
>
--
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/5ddd0637-9663-4387-b7ea-178729c3b17bn%40googlegroups.com.