Restarting build steps from the failure point on Hudson/jenkins - jenkins

My requirement is , Say for example for a job on Jenkins/Hudson , i have configured three build steps which perform 3 separate tasks.
Step1: Execute shell script (echo $PATH)
Step2: Execute Shell Script (sgsh)
Step3: Execute shell Script (echo $JAVA_HOME)
IN these build steps say for example step 2 fails , I need a plugin which will allow me to restart the build from step2 since step1 is already completed successfully. Is there anything available?

Check Conditional BuildStep Plugin . With Run Condition Plugin it do what you want.

Related

Jenkins - How to make other build steps run even if previous build step fail

I have multiple build steps in my Jenkins Free style Job.
If one of the build step fails, the the following build step doesn't get triggered.
I am Ok if the 1st build step fails as these are tests and could fail & would like to retain the $BUILD_STATUS value for reporting, but I still want the 2nd build step to run & not be skipped because build step 1 failed.
I also tried to combine both the build steps together into one but its still the same - the commands from the 2nd build step do not get executed if the commands in the 1st build step fail.
Thanks
Sa
Jenkins pipelines separates your pipeline into stages and steps that can be run independently.

Need to run a command if the jenkins build stuck

In the Jenkins "Abort the build if it's stuck" feature, if a time out happens I want to run a powershell command, instead of aborting or failing the build. Is it possible to accomplish this?
under system configuration-> configure system, found below option:
once enabled this option, "perform build step option" will be available under "time-out action" where we can execute any script or cmd.
Perhaps you could set a "Time-out variable" in the "Abort the build..." menu. Then run a post-build script using the PostBuildScript plugin that checks that env var and takes action accordingly. Haven't tried it.

How to stop a build by buildnumber in a Jenkins pipeline

We uses notes (comments) from Gitlab to issue a couple of user-commands, for example retry a build that seems to have failed from a failed integration etc. We would now like to ask jenkins to stop a build. We have got the buildnumber from the comment (through a callback to to gitlab searching the comments) so we know what build to stop but now we stumbled on the problem. We don't seem to find an api-call to stop the build by buildnumber alone.
We could of course make a request to https://server/project/buildnumber/stop (same url as used by the ui) but then we have to enable the crumbIssuer and according to Ops open for a CSRF-attack.
Is there a way to do this operation from inside a pipeline?
Navigate to Manage Jenkins > Script Console.
Run the following script setting the job name and number of the hung build accordingly:
def build = Jenkins.instance.getItemByFullName("jobName").getBuildByNumber(jobNumber)
build.doStop()
build.doKill()
Otherwise you can create a separate pipeline job and configure the above script
Abort the job build from a cid node (if the previous option did not help):
Log in to any cid node.
Run:
cd /srv/volumes/jenkins/jobs/<job-name>/builds/
rm -rf <hung-build-number>

Extract user information from the build

Jenkins ver. 2.73.3
I have a sample build task that is triggered by a commit to a Github repository. This is how the build information looks:
We need to write this username to a separate file and store it in a particular location. How can I achieve it?
**********Edit-1**********
Added a build step that executes a shell command to write the variable GIT_COMMITTER_NAME to a file. This fails(empty file) but if I write, say JENKINS_URL, it is written to the file:
I guess the github plugin doesn't set, by default, the variables like GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL etc.
Taking a cue from this answer, I proceeded with using the placeholders of the 'pretty option' of git show command. I added the following command in the 'Execute Shell' build step of Jenkins job:
git show -s --pretty='GIT_AUTHOR_NAME='%aN%n'GIT_AUTHOR_EMAIL='%aE%n'GIT_COMMITTER_NAME='%cN%n'GIT_COMMITTER_EMAIL='%cE >> github.properties
The output:
GIT_AUTHOR_NAME=LastName FirstName
GIT_AUTHOR_EMAIL=FirstName.LastName#company.com
GIT_COMMITTER_NAME=GitHub Enterprise
GIT_COMMITTER_EMAIL=noreply#github.company.com
Instead of echo $variable name execute env in shell, it will give you all environment variables at the time of execution and then you can pick the correct variable. (From Gitlab to Jenkins its $gitlabUserName)

How can I add a Jenkins post action to execute two different scripts once the build successed or failed exclusively?

I want to execute a shell scripts if the Jenkins job build successful or another scripts if the Jenkins job build failed.
I added the post build task plugin, but it seems only can execute a shell in all status or just successful status, cannot specify another shell script to be run once build failed, the two scripts should be run exclusively.
are there anyone can help me on this?
use Post Build Task plugin for conditional steps
I use Conditional BuildStep Plugin and Text Finder Run Condition Plugin to execute steps when the build fails.
But there's a limitation with this method: You have to find a text that is displayed ONLY when your build fails.
See the pictures below:
I add exit 0 at the end of the script to force the build to be successful so that the program can execute the next step, which is Conditional steps(multiple).
You will see Execute script after a failed build. being displayed on console output when the job fails.
This is the execution result.
You will also need to find a text that is displayed ONLY when the first step succeeds so that you can trigger another script.

Resources