Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

jenkins - Pass parameter which contains "$" to ParameterizedRemoteTrigger plugin?

As title, if the parameter contains "$", it doesn't work. Escaping with "" also doesn't work.

            remote_param='TASK_ENV_VARS=$test'

            def handle = 'org.jenkinsci.plugins.ParameterizedRemoteTrigger.pipeline.RemoteBuildPipelineStep'(
                    remoteJenkinsUrl: REMOTE_JENKINS_URL,
                    job: REMOTE_JOB,
                    blockBuildUntilComplete: true,
                    auth: CredentialsAuth(credentials: jenkinsCredentialID),
                    abortTriggeredJob: true,
                    parameters:remote_param,
                    useCrumbCache: true, useJobInfoCache: true, maxConn: 1, pollInterval: 10
            )

It throws error:

ERROR: Remote build failed with 'IOException' for the following reason: 'org.jenkinsci.plugins.tokenmacro.MacroEvaluationException: Unrecognized macro 'test' in 'TASK_ENV_VARS=$test''.

if the parameter doesn't contain "$", it runs well.

question from:https://stackoverflow.com/questions/65852807/pass-parameter-which-contains-to-parameterizedremotetrigger-plugin

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can escape a dollar sign with another dollar sign in this case.

triggerRemoteJob remoteJenkinsName: 'remote.jenkins.org', job: 'build-remote',
  parameters: """FOO=$BAR
BUILD_ARGS=$params.EXTRA_ARGS """ + ' --build-arg USER=$${LOGIN} --build-arg PASSWORD=$${PWD}'

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...