Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jenkins always considers a build successful using batch/bat

I just joined a company that uses batch files to build a C++ project. The batch does all sorts of things (updates svn, which is now done by jenkins), creates build folders, deletes unnecessary files after building, copies library files to the build folder, etc.

My problem is Jenkins always considers the build successful, even when it´s not. The .bat file creates a file called errormake.txt when something goes wrong. How do I make jenkins read that and mark the build as a failure?

Also, is there any way I can find out the build folder Jenkins created from inside the .bat file (maybe send a variable when I call the batch file)?

This is the single line I'm currently using to call the .bat file:

call "C:\Source\BuildVersion\AppName\build_version.bat" 

Edit: Also, this project is split up into several SVN repositories. %SVN_REVISION% is blank. How can I get the correct %SVN_REVISION% from the first repository (the main one)?

like image 919
HSNN Avatar asked Dec 20 '12 12:12

HSNN


People also ask

Can Jenkins run a batch file?

Add the batch command as run. Click on Apply and save the configuration then, you will redirect to the Project Workspace. Click on the Build Now, it will execute the given batch command that executes the run. bat file. You can see the console results on the Console Output.

What is Windows batch command in Jenkins?

Now that we have created our own Jenkins Job, we will move forward towards running batch commands in the Jenkins. A batch command is a command that is run in the shell of your system like command prompt in Windows. This name comes from the batch file that were created for early operating systems like DOS and Windows.

What does %1 do in batch?

When used in a command line, script, or batch file, %1 is used to represent a variable or matched string. For example, in a Microsoft batch file, %1 can print what is entered after the batch file name.


1 Answers

To answer each of your questions -

  • Jenkins always return "SUCCESS", even when the Job actually failed:

    Jenkins sets the status of the Job, based on the return-code of the last command
    that ran in each "Execute windows batch command" block.
    If your last command is copy some.log D:,
    Jenkins thinks everything is OK
    (If the 'copy' command went fine...)

    Use EXIT xx or EXIT /B xx, depending on your OS,
    where 'xx' is some integer greater than zero.

  • How do I make Jenkins mark the build as a failure, based on a log-file:

    Use the Text-finder Plugin, as mentioned by sdmythos_gr .

  • Is there any way I can find out the build folder Jenkins created:

    There are a few parameters that are available as environment-variables
    for each script that runs under Jenkins - see here for the list of those parameters:
    Jenkins Environment Variables.

    To your question:

    • %WORKSPACE% - The absolute path of the workspace
    • %BUILD_NUMBER% - The current build number, such as "153"
    • %BUILD_ID% - The current build id, such as "2005-08-22_23-59-59"
      (YYYY-MM-DD_hh-mm-ss)

  • How can I get the correct %SVN_REVISION% from the first repository:

    This answer is from the same link:

    • %SVN_REVISION% - For Subversion-based projects,
      this variable contains the revision number of the module.
      If you have more than one module specified, this won't be set.

Hope that helps

like image 55
Gonen Avatar answered Sep 23 '22 19:09

Gonen