I would like to cancel email sending based on the value of a boolean parameter of a parameterized job. The parameter is named "skip.email".
I tried to write a pre-send script with following content but it doesn't work :
def env = System.getenv()
logger.println("Should I skip email ? " + env['skip.email'])
cancel = env['skip.email']
Here is what I see in the logs :
Should I skip email ? null
I tried to print out all environment variables, but none of the parameters of my parameterized Jenkins job are in the list.
Please help me out, thank you in advance !
The pre-send script provides a variable named "build", which is of a type that inherits from AbstractBuild. Use the getBuildVariables method to retrieve a Map that includes the parameterized variables.
Example
I have a parameterized variable named "target" that describes a deployment environment. I want emails to only be sent to QA if the target environment was QA's environment.
The parameters of a Parameterized job are not environment variables!! They can't be accessed that way. If you want to access them, use the Environment Inject Plugin to add them to the environment as a build step and then follow these steps. It should fix your problem.
build.getEnvironment(TaskListener.NULL)
if injecting environment variables as a prior step. If looking just to get the build parameters,build.buildvariables
should work just fine.tday03 answer seems correct but is not working for me, I'm injecting the vars with Environment Injector Plugin, I don't know if that's the issue. Anyway I ended up with this script: