Issue
The Sed command is giving me issues with incorporating the $tag variable witch is equal to "latest${GIT_COMMIT:0:7}". Here is the Sed command:
sh "sed -i 's/{BUILD_NUMBER}/$tag/' /var/lib/jenkins/workspace/${JOB_NAME}/em-api/dev-nics-emapi-svc-param.json"
I obviously want to put into my .json file the commit information but It doesnt pull the actual commit sha. When I take a look at the .json file it inserted the literal definition of the variable which is “latest${GIT_COMMIT:0:4}”. I am trying to do this on a declarative pipeline on my jenkins server running on linux.
I would like it to insert "latestxxxx". Any suggestions on how I can get around this?
Solution
GIT_COMMIT
is an environment variable available to you; tag
is a groovy variable, you have set to 'latest${GIT_COMMIT:0:4}'
. So this gets replaced since you are using "
for your sed command. But you are using '
for your sed expression, which then again will not replace environment variables. So you have basically two options:
- Use
"
to quote the sed command, if you feel safe about the content, that gets replaced (you can use"""
triple quotes for the whole command to don't have to quote the"
for groovy) - Resolve the variable from the environment yourself in groovy (e.g. something like
System.env['GIT_COMMIT].substring(0,4)
)
Answered By - cfrick