I'm new to Jenkins Pipeline jobs, and I'm facing an issue I cannot solve.
I have a stage with a hardcoded sleep
seconds value:
stage ("wait_prior_starting_smoke_testing") { echo 'Waiting 5 minutes for deployment to complete prior starting smoke testing' sleep 300 // seconds }
But I would like to provide the time argument via a job (string) parameter SLEEP_TIME_IN_SECONDS
. But whatever I have tried, I am not able to get it to work.
How do you convert a string parameter to the int
time argument?
Using build parameters, we can pass any data we want: git branch name, secret credentials, hostnames and ports, and so on. Any Jenkins job or pipeline can be parameterized. All we need to do is check the box on the General settings tab, “This project is parameterized”: Then we click the Add Parameter button.
Step 1: Click on Configure. Step 2: Then look for “This project is parameterized” checkbox. Then check the checkbox. A small section will open up for you to enter the details in.
You can add sleep command (on Unix) in the test build action before test execution. As much as this works, it hangs an executor on Jenkins. This solution is definitely not platform independent and should be avoided at least when using Jenkins Pipelines.
small improve for this page:
You also can use sleep(time:3,unit:"SECONDS")
if you are interested in specifying time unit of your sleep
https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#sleep-sleep
Finally I did found a way to get this work:
stage ("wait_prior_starting_smoke_testing") { def time = params.SLEEP_TIME_IN_SECONDS echo "Waiting ${SLEEP_TIME_IN_SECONDS} seconds for deployment to complete prior starting smoke testing" sleep time.toInteger() // seconds }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With