Builds of new configuration in a matrix build are lost after some time.
Hello, I'm using Jenkins 1.487 with matrix jobs. Debian master, linux windows slaves. I've just made some changes in matrix jobs. I have added new configuration to a user defined axis. The matrix job run properly and I could see that new configuration was build properly : - The parent jobs console log says newconfiguation completed with result SUCCESS I can go to the the new configuration web page, see the logs and the artifacts. Looking at the matrix, the bullet corresponding to the new configuration is blue ! After some time ( less than 2 hours) the result from the build is lost. The bullet corresponding to the new configuration is grey and indicates NOT RUN when I pass the mouse over it. So I cannot click on the bullet to see the build. If I go back to the parent job console, I can click on the newconfiguation completed with result SUCCESS link. I get a web page, where everything is empty : no Build History, empty change log, no artifacts. I run the job again . Can see the newconfiguration build. Some hours later , everything is gone again. Looking on the master node , in /va/lib/jenkins/jobs, I can see /var/lib/jenkins/jobs/*job_name* /configurations/../axis-xxx/newconfiguration/ I this folder everything looks fine : builds config.xml lastStable lastSuccessful In lastSuccessful I can see the log, the build.xml. Could not understand why this does not appear in jenkins. Any Idea why the new build are lost ? This is really annoying. I've faced this issue on several jobs. I did not the the problem before has someone else seen this issue ? Thanks. Bertrand.
Re: How does Jenkins know tests history
Hi, you mean the Jenkins Links / Permalinks correct ? http://javadoc.jenkins-ci.org/hudson/model/PermalinkProjectAction.Permalink.html I dont think, that Jenkins does a string Matching. Jenkins has its own Methods to get these information. For example you can use: item = hudson.model.Hudson.instance.getItem(job_name) build = item.getLastBuild() So i guess its working with a List and without any matching tests, there shouldnt be lost datas. But if im wrong, im happy for any further information. Clem
Re: Build flow plugin: fails build if there are unstable builds
the error is ugly, but the behavior is as expected. A non successful step in the flow will interrupt the execution. The DSL could probably be extended to ignore some build results, something like : build( B ).ignore( UNSTABLE ) contributors are welcome :) 2012/11/22 Egle egles.telefo...@gmail.com Hi, I am trying to set up a following flow if builds: build( A ) build( B ) build( C ) Now I get FATAL: null error and stack trace in console if build B is unstable. So the flow does not execute job C. Is there a way to configure a flow that it would only terminate if the performed builds are failing and not becoming unstable? Thanks, Egle
Re: How does Jenkins know tests history
Hi Check this image. Jenkins says this test failure is a regression (e.g. fails this build, passed previous build). How does Jenkins know to match the result from both builds - after all Jenkins know about the test results only the xunit xml. So I guess Jenkins compare test names from the Xml? In this case if a class is renamed so the full name of its tests also changes and all this history data is lost. Is this correct? [image: Inline image 1] On Fri, Nov 23, 2012 at 12:35 PM, clem clemensgoer...@googlemail.comwrote: Hi, you mean the Jenkins Links / Permalinks correct ? http://javadoc.jenkins-ci.org/hudson/model/PermalinkProjectAction.Permalink.html I dont think, that Jenkins does a string Matching. Jenkins has its own Methods to get these information. For example you can use: item = hudson.model.Hudson.instance.getItem(job_name) build = item.getLastBuild() So i guess its working with a List and without any matching tests, there shouldnt be lost datas. But if im wrong, im happy for any further information. Clem -- I'm on Twitter (@YaronNaveh http://twitter.com/#!/YaronNaveh) jenking.png
Re: How does Jenkins know tests history
Hi, sry for the misunderstanding. I was looking at this, not sure if this would help you. CaseResultshttp://javadoc.jenkins-ci.org/hudson/tasks/junit/CaseResult.Status.html Jenkins-ci.org CaseResults Codehttps://svn.jenkins-ci.org/branches/btosabre/hudson/main/core/src/main/java/hudson/tasks/junit/CaseResult.java Sry, but i am not sure about the answer. But will also have a look to find a answer, will post it in case of a research result. Clem
Re: 404 on using --prefix
Hi, just tried to change the Port in my Jenkins.xml file. Old line: arguments-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar %BASE%\jenkins.war --httpPort=8080/arguments Just changed the httpPort to 8282 , after a Service restart, Jenkins started correctly at Port 8282. So maybe just try the simple line code: arguments-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar %BASE%\jenkins.war --httpPort=YOUPORT/arguments (Im also not sure, you wrote *8283 *in your line, hopefully you did not try to enter Jenkins after your changes at port *8282 *like your http://myserver.com:8282/jenkins) Clem
Advice requested: bash vs python scripts in Jenkins
Hi We use Jenkins to run regression tests on our C++ console application. Each test consists of a bash script that typically runs the application with defined test parameters and then compares the output files with reference files using 'diff'. I am now thinking of moving from bash scripts to Python. My expectation is that Python will be much easier to code. To use Python, would I still use an Execute shell build step and specify the following? /path/to/build.py -i When using a bash script, I know that the test will fail if any script command fails. In an equivalent Python program should I just ensure that my Python program returns an error code if any test step fails? Best regards David
Re: Advice requested: bash vs python scripts in Jenkins
Hi, yes you are correct. Im running my python scripts like this : #python location/file.py parameter paramerter# in a Execute Window Batch command You can catch error messages in your python script with : sys.exit('Your Error Code'); For example : if re.match(---) do this else: sys.exit('Not matching parameter x.') So in case of an Script failure, it will stop and this Error Code will published at the Jenkins console and stop the build. Clem
Re: Advice requested: bash vs python scripts in Jenkins
Just to make sure that there is no misunderstanding there are no # at my python line :) Greetings
Re: Advice requested: bash vs python scripts in Jenkins
Yes, that technique will work, and switching to Python then opens you to the opportunity to write your tests in C or in Python using the Python ctypes library, and would allow you to use either py.test or nose to automatically discover, execute, and parallelize your tests. Using that technique would also let you easily write the success / failure status of your tests in JUnit output format so that you could have success, unstable, and failed states for your builds, where success means everything compiled and all tests passed, unstable means everything compiled and some tests failed, and failed means that compilation failed. There is a testing in python mailing list which can help with questions about py.test and nose. Mark Waite From: David Aldrich david.aldr...@emea.nec.com To: jenkinsci-users@googlegroups.com jenkinsci-users@googlegroups.com Sent: Friday, November 23, 2012 4:47 AM Subject: Advice requested: bash vs python scripts in Jenkins Hi We use Jenkins to run regression tests on our C++ console application. Each test consists of a bash script that typically runs the application with defined test parameters and then compares the output files with reference files using 'diff'. I am now thinking of moving from bash scripts to Python. My expectation is that Python will be much easier to code. To use Python, would I still use an Execute shell build step and specify the following? /path/to/build.py -i When using a bash script, I know that the test will fail if any script command fails. In an equivalent Python program should I just ensure that my Python program returns an error code if any test step fails? Best regards David
RE: Advice requested: bash vs python scripts in Jenkins
Hi Mark and Clem Thanks very much for your replies. They were both very helpful. Best regards David
Re: How to use the environment variables set by a parameterized build?
I'm talking about a build job that is parameterized. The parameter is of type run parameter. Jenkins creates variables with names that cannot be used in a pre-step shell script. Quite annoying. On Saturday, November 17, 2012 11:56:40 PM UTC+1, r2_ wrote: Hey, Checkout the environmental variable here: https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project Short answer: echo ${JOB_NAME} echo ${BUILD_NUMBER} On Friday, November 16, 2012 3:39:26 PM UTC-5, Martin Lichtin wrote: Hi For a parameterized build with one run parameter (let's name it X), Jenkins set three environment variables. X X.jobName X.number How can the latter two be used in a pre-step shell script? Bash cannot handle environment variables containing a dot, it seems. $ echo ${X.jobName} bash: ${X.jobName}: bad substitution
Re: FYI: Jenkins Security Advisory 2012-11-20
Hi there, On 21/11/12 13:33, Lars Nordin wrote: Request to Cloudbees: please send a notification of this out on the Jenkins user list too There's already a mailing list for this: https://groups.google.com/group/jenkinsci-advisories Regards, Chris
Re: Need help to perform a Maven release with Jenkins and Gitorious
Luis, Have you manually verified access from Jenkins server to you git server on ssh as well as added the user owning the jenkins process ssh pub key into your key management profile in gitorious? This sound more like a setup issue. Regards, -Urivan Flores On Nov 21, 2012 11:20 AM, lacribeir...@gmail.com lacribeir...@gmail.com wrote: Hi everyone, I need your help to solve a problem that I have when performing a Maven Release in our new server with Gitorious. When we where in the old server it was working fine, but now that we change to a new server (a vm in amazon cloud) the release isn't working. I can pull, commit or push from the machine with Jenkins. Only Maven Release is missing. Environment: Jenkins ver. 1.460 Jenkins Maven Release Plug-in Plug-in ver: 0.9.1 pom.xml(127.0.0.1 because I don't want to give the real address): scm connectionscm:git:git://127.0.0.1: /gitserver/gitserver.git/connection developerConnectionscm:git:git@127.0.0.1: gitserver/gitserver.git/developerConnection /scm Jenkins job configuration: Build Environment Enable Artifactory release management: Unchecked Maven release build: Checked Release goals and options: -X -Dresume=false release:prepare release:perform DryRun goals and options: -Dresume=false -DdryRun=true release:prepare Default versioning mode: None Preselect custom SCM comment prefix: Unchecked Preselect append Hudson username: Unchecked Preselect 'specify SCM login/password': Unchecked Resolve artifacts from Artifactory: Unchecked Gitorious Project: Clone oush urls;ssh; git@127.0.0.1:gitserver/gitserver.git Run results: [INFO] [INFO] --- maven-failsafe-plugin:2.12:verify (verify) @ com.project.core.dom --- ….. [INFO] [INFO] Reactor Summary: [INFO] [INFO] [INFO] [INFO] proj-core .. SUCCESS [0.201s] [INFO] [INFO] dependency.package.gui SUCCESS [0.008s] [INFO] [INFO] dependency.package.spring . SUCCESS [0.012s] …. [INFO] Executing: /bin/sh -c cd /var/lib/jenkins/jobs/maven23_testbuild_maven_01/workspace git push gam.build@gitserver .com:gitserver/gitserver .git develop_core_1_0:develop_core_1_0 [INFO] Working directory: /var/lib/jenkins/jobs/maven23_testbuild_maven_01/workspace mojoFailed org.apache.maven.plugins:maven-release-plugin:2.2.2(default-cli) projectFailed com.gitserver :proj-core:1.0.92-SNAPSHOT sessionEnded [INFO] [INFO] Reactor Summary: [INFO] [INFO] proj-core .. FAILURE [2:00.141s] [INFO] dependency.package.gui SKIPPED [INFO] dependency.package.spring . SKIPPED ….. Waiting for Jenkins to finish collecting data mavenExecutionResult exceptions not empty message : Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.2.2:prepare (default-cli) on project proj-core: Unable to commit files Provider message: The git-push command failed. Command output: ssh: connect to host gitserver.com port 22: Connection refused fatal: The remote end hung up unexpectedly cause : Unable to commit files Provider message: The git-push command failed. Command output: ssh: connect to host gitserver.com port 22: Connection refused fatal: The remote end hung up unexpectedly Stack trace : org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.2.2:prepare (default-cli) on project gam-core: Unable to commit files Provider message: The git-push command failed. Command output: ssh: connect to host gitserver.com port 22: Connection refused fatal: The remote end hung up unexpectedly at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at
hg pull has no effect
I've installed Jenkins recently and have created a free-style project which is linked to a Mercurial repository. I've installed the Mercurial plugin and set the sources pointing to the correct URL. The user Jenkins is running under can access the repository without issues, and in fact a build right after a workspace cleanup works fine. I'm triggering a build using the URL JENKINS/job/myjob/build?token=mytoken and this works as well. I've also set a commit hook at my repository to hit this URL when a new changeset comes in, and it succesfully triggers the job build. The problem is that after the initial clone, a 'hg pull' from Jenkins itself has no effect on the result. Here's part of the build log right after a push (which triggers the build): [workspace] $ hg showconfig paths.default [workspace] $ hg pull --rev default [workspace] $ hg update --clean --rev default 0 files updated, 0 files merged, 0 files removed, 0 files unresolved Nothing is actually pulled from the repository, even though I _know_ there's more data there to be pulled. If I step into the repository myself and run 'hg inc --rev default', the new changesets are shown. I can even pull the new data myself and trigger a new build on my own, but that's how I hoped it would work.. I'm running Jenkins 1.491 and the Mercurial plugin version is 1.42, but this is happening from the first day I installed Jenkins, a couple weeks ago. How can I make the Mercurial plugin actually pull the new changesets with a new build?
Pass env variables to junit test from jenkins
Hi, I have pretty silly question. Please help me. I do have a test which gets parameters from env variables: public Conf(){ this.hostname = System.getProperty(WEBAPP_HOST); this.port = System.getProperty(WEBAPP_PORT); this.contextPath = System.getProperty(WEBAPP_CONTEXTPATH); this.scoringServletname = System.getProperty(WEBAPP_SCORING_SERVLETNAME); } I do pass these variables in this way: mvn test -DargLine=-Dwebapp.port=12345 -Dwebapp.host=xxx.yyy.net -Dwebapp.contextpath=my-webapp -Dwebapp.my.servletname=myServlet How can I do the same using jenkins? I've tried a lot of stuff, but nothing helps. Conf ogject gets null values during instantiation.
email-ext and Send To Committers
I'm seeing behavior that I don't understand. I'm using email-ext 2.24.1. I have Send To Commiters enabled. I also have Manage Jenkins | Configure System | E-mail Notification | Default user e-mail suffix set to '@domain1.com'. Suppose a change is committed by the Git Author = 'foobar first.l...@domain2.com'. The address 'first.l...@domain1.com' is included in the recipients list of the resulting email. I would expect that the default user suffix would only be used if the Author string had no domain at all, and that the email would be sent to 'first.l...@domain2.com'. Instead it seems like the domain that exists in the commit is stripped off and replaced by the default. Could there be something else at play? If not, why does the plugin behave this way? Thanks, Dan
RE: email-ext and Send To Committers
It depends on how the git plugin is resolving the email address. If it's not resolving correctly, then email-ext will add the default domain. Sent from my Windows Phone -- From: Dan Stine Sent: 11/23/2012 1:40 PM To: jenkinsci-users@googlegroups.com Subject: email-ext and Send To Committers I’m seeing behavior that I don’t understand. I’m using email-ext 2.24.1. I have Send To Commiters enabled. I also have Manage Jenkins | Configure System | E-mail Notification | Default user e-mail suffix set to ‘@ domain1.com’. Suppose a change is committed by the Git Author = ‘foobar first.l...@domain2.com'. The address ‘first.l...@domain1.com’ is included in the recipients list of the resulting email. I would expect that the default user suffix would only be used if the Author string had no domain at all, and that the email would be sent to ‘first.l...@domain2.com’. Instead it seems like the domain that exists in the commit is stripped off and replaced by the default. Could there be something else at play? If not, why does the plugin behave this way? Thanks, Dan
Re: Grails: Plugin Perform Maven Release
I'm not sure how complete the Maven integration is with Grails and what is required or how it works. I'm more waiting for Grails 3.0 for Gradle support. On Thu, Nov 22, 2012 at 1:32 AM, rportix rut.pe...@gmail.com wrote: Thanks Larry, We are using the Grails Plugin. We're not using Maven because we think that we have to support two files: the pom.xml and the Grail properties file, do you know if it's neccesary to do it so, or it's possible use Maven with one file. Thanks in advance Larry Shatzer, Jr. wrote If you are using the Maven integration for Grails, it should be the same, but if you are using the Grails plugin, the only thing you can do is use the standard Release plugin to script it yourself. It's what I did, along with some script code inside a shared plugin across projects that takes care of the PreRelease steps and the PostRelease steps that are specific for situation. On Wed, Nov 21, 2012 at 5:14 AM, rportix lt; rut.perez@ gt; wrote: Hi, We have a Grails job, and we need the same functionality that M2 Release Plugin for Grails. Dou you know about this? Thanks in advance -- View this message in context: http://jenkins.361315.n4.nabble.com/Grails-Plugin-Perform-Maven-Release-tp4646810.html Sent from the Jenkins users mailing list archive at Nabble.com. -- View this message in context: http://jenkins.361315.n4.nabble.com/Grails-Plugin-Perform-Maven-Release-tp4646810p4646899.html Sent from the Jenkins users mailing list archive at Nabble.com.
Re: Should my Jenkins user be a normal one with GUI?
On Nov 21, 2012, at 2:08 AM, frankgarcia pub...@francisco-garcia.net wrote: But that is not working for Mountain Lion. I am no longer looking for a solution because now I believe this is not the real problem. I am planning to add automated GUI tests for OSX and iOS, therefore I believe I will be having more than just a pasteboard server not running problem. Correct, there are certain privileges that are dropped when moving from a foreground process to a background one, having to do with interacting with Spotlight, among other things. In Lion and Mountain Lion, we have not (yet) figured a way around that problem. Should I create a normal system user for my Jenkins server? If so, I guess I will have to setup everything so every time the server starts, a full blown background user GUI session starts only for Jenkins. Any recommendations about how to do the auto-login in the background. I could not find that information and I am wondering what is the normal setup of OSX users for Jenkins. We run our Jenkins server using Jenkins.app (by Sami Tikka, see https://github.com/stisti/jenkins-app), and that at least lets us do OS X and iOS UI testing with tools like frank-cucumber, as well as most of our integration tests for our server-side code -- minus the four tests that require interaction with Spotlight. As quick/dirty solution I could just make Jenkins run under the same user I normally log in into my server... but that seems kind of... non-ethical? I would say unwise, as opposed to unethical. If you get hit by a bus and your personal account gets deleted by your employer, the Jenkins system shouldn't be shut down as a result. You want to use organizational keys and accounts for all this sort of stuff (including for code signing), so that the system is not dependent on any particular normal user account continuing to be in existence long after the person themselves actually departed. -- Brad Knowles b...@shub-internet.org LinkedIn Profile: http://tinyurl.com/y8kpxu
Re: Pass env variables to junit test from jenkins
Are you not using Maven Plugin (Maven type Job)? As that has a textbox for arguments. If you are using the maven job and still getting issue, then would need more info on how are you trying to pass these argument, as it should be simple enough, even if you run it from Bash shell / as Bach command (from Jenkins job) Thanks On Fri, Nov 23, 2012 at 11:09 AM, Serega Sheypak serega.shey...@gmail.comwrote: Hi, I have pretty silly question. Please help me. I do have a test which gets parameters from env variables: public Conf(){ this.hostname = System.getProperty(WEBAPP_HOST); this.port = System.getProperty(WEBAPP_PORT); this.contextPath = System.getProperty(WEBAPP_CONTEXTPATH); this.scoringServletname = System.getProperty(WEBAPP_SCORING_SERVLETNAME); } I do pass these variables in this way: mvn test -DargLine=-Dwebapp.port=12345 -Dwebapp.host=xxx.yyy.net-Dwebapp.contextpath=my-webapp -Dwebapp.my.servletname=myServlet How can I do the same using jenkins? I've tried a lot of stuff, but nothing helps. Conf ogject gets null values during instantiation. -- http://wharpreet.blogspot.com http://linuxgazettes.blogspot.com http://in.linkedin.com/in/wharpreet
Re: Builds of new configuration in a matrix build are lost after some time.
Are you using labels to run these jobs on, or dynamic slaves. As I have seen similar issue with pool of slaves on which my job runs, next time when the job runs on different slave it looses the part that is slave specific. If not then can you please be more specific about your job configuration. I mean Master-slave setup etc. Thanks On Fri, Nov 23, 2012 at 1:35 AM, B.Latinville blatinvill...@gmail.comwrote: Hello, I'm using Jenkins 1.487 with matrix jobs. Debian master, linux windows slaves. I've just made some changes in matrix jobs. I have added new configuration to a user defined axis. The matrix job run properly and I could see that new configuration was build properly : - The parent jobs console log says newconfiguation completed with result SUCCESS I can go to the the new configuration web page, see the logs and the artifacts. Looking at the matrix, the bullet corresponding to the new configuration is blue ! After some time ( less than 2 hours) the result from the build is lost. The bullet corresponding to the new configuration is grey and indicates NOT RUN when I pass the mouse over it. So I cannot click on the bullet to see the build. If I go back to the parent job console, I can click on the newconfiguation completed with result SUCCESS link. I get a web page, where everything is empty : no Build History, empty change log, no artifacts. I run the job again . Can see the newconfiguration build. Some hours later , everything is gone again. Looking on the master node , in /va/lib/jenkins/jobs, I can see /var/lib/jenkins/jobs/*job_name* /configurations/../axis-xxx/newconfiguration/ I this folder everything looks fine : builds config.xml lastStable lastSuccessful In lastSuccessful I can see the log, the build.xml. Could not understand why this does not appear in jenkins. Any Idea why the new build are lost ? This is really annoying. I've faced this issue on several jobs. I did not the the problem before has someone else seen this issue ? Thanks. Bertrand. -- http://wharpreet.blogspot.com http://linuxgazettes.blogspot.com http://in.linkedin.com/in/wharpreet