Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Jenkins parameters in a shell script

Tags:

I want to use the parameters that we define in the Jenkins job as arguments to the shell commands in the same job.

I have created a parameterized build with the following parameters:

high.version: 234 low.version: 220 

I want to use these variables as arguments for the build's shell script:

/bin/bash /hai/mycode/scripts/run_script.sh high.version 

How do I these parameters in the same job?

like image 416
IMRAN SHAIK Avatar asked Aug 24 '16 09:08

IMRAN SHAIK


People also ask

How do you pass a parameter to a shell script?

Using arguments Inside the script, we can use the $ symbol followed by the integer to access the arguments passed. For example, $1 , $2 , and so on. The $0 will contain the script name.

How do I access Jenkins parameters?

How do you access parameters set in the "This build is parameterized" section of a "Workflow" Jenkins job? Create a WORKFLOW job. Enable "This build is parameterized". Add a STRING PARAMETER foo with default value bar text .

Can Jenkins run shell script?

Using Jenkins built-in "Execute shell" you can run commands using unix shell. If you need to run a job cross platform you cannot use the two standard executors provided by Jenkins. You need a "build step" that can be executed both in Windows and in Unix.


2 Answers

What really helped me was Hudson: How to pass parameters to shell script

Solution: the variables are UPPERCASE even you define them in lowercase!

like image 181
Florian Straub Avatar answered Sep 29 '22 22:09

Florian Straub


Jenkins will create environment variables with the parameters' names.

The caveat here is that Jenkins will also do that for parameters that do not represent valid variable names -- those are difficult to access in bash. This is the case in your example, as bash variable names must not contain the . character.

The easiest solution is that you

  • rename your parameters, e.g. to high_version and low_version (which are valid bash variable names)
  • then use the corresponding variable names when calling your script

Example:

/bin/bash /hai/mycode/scripts/run_script.sh "$high_version" 

If you cannot rename parameters to represent valid bash variable names (e.g., for usability reasons: Jenkins presents variable names to end users in the Web form for starting a build): you can still access such parameters by grepping for the parameter name in the output of the env command.

like image 20
Alex O Avatar answered Sep 29 '22 23:09

Alex O