There is also the github pull request builder which will build the merge of 
your pull request every time you commit to the branch in the pull request.  
This way you can get the results of the tests, see it failed, fix it, push your 
change back to your branch, and the tests will run again.  You can basically 
get CI on your branch if you open a pull request immediately.  You could even 
have it deploy the built artifact for the tester to test before anything is 
even merged to the main line of development.  By the way I am doing a lightning 
talk about this very thing at JUC Palo Alto.

Will

On 08/05/13 07:27, Tom Moore wrote:
Alternatively, if you have a requirement for code passing test/compiling, etc 
before checkin and you can't or don't want to use private 
repositories/branches, you can look at developing a variation of your build 
process that uses the filesystem SCM plugin.   Run the build/tests against the 
files in the filesystem, and if they pass then they are permitted for 
checkin.... you can even run a post-build script if the build is successful to 
perform the check-in for you.

Of course this method can require a lot of slave nodes defined to support all 
your developers so that it can find their local filesystem source, plus 
depending on the level of user specific variables in your build you might have 
fun with lots of parameters.


On Monday, August 5, 2013 2:28:31 AM UTC-4, Avihay Eyal wrote:
Thanks for your ideas. I think an on-demand script would fit my organization, 
but I'll take into account the way that GIT script works.



On Monday, August 5, 2013 4:20:05 AM UTC+3, Mark Waite wrote:

________________________________
From: Avihay Eyal <aviha...@gmail.com>
To: jenkins...@googlegroups.com
Cc: dirk.he...@recommind.com
Sent: Sunday, August 4, 2013 12:37 PM
Subject: Re: CI usability - isn't there a problem that tests are executed only 
after a developer pushed his changed to the repsitory?

I'm using Mercurial, which is a distrusted source control.

So you're suggesting using a script, activated via commits to the developer 
local repository?

Once the developer committed changes to it's repository,  the script will build 
that changes with the latest code, run all the regression
tests, unit test, etc...If the test pass fine, then the developer can choose if 
he wants to push his changes to the main repository?


I don't think that is how the Git plugin does what it does.

I believe the Git plugin monitors multiple repositories and branch names for 
changes.  If a change is detected in one or more repositories, the plugin 
merges those changes into its local branch, and attempts to run the job steps 
you specify (compile, test, deploy, whatever).  The Git plugin has an optional 
step at the end, "Git Publisher" which will push the results of that merge to 
the remote specified in the plugin.

I think that allows a workflow where the only user allowed to push to the 
authoritative repository is the Jenkins user.  Other users push to their own 
repositories which are monitored by the Jenkins job.  If their submissions are 
successful, then the results of merging their proposed change are pushed by 
Jenkins to the authoritative repository as the Jenkins user.

I've been experimenting with a variant of that workflow and it has worked OK 
for me.  My variant has been that by convention I never push to certain 
branches.  Those branches only receives commits from Jenkins, and only after 
Jenkins has run some series of checks successfully.  It has worked well enough, 
though I suspect it won't work in a larger organization, since it is a 
convention for users not to push to the integration branch, not an enforced 
rule.

I think you could do the same with Mercurial and a script, though I'm not a 
Mercurial user, so I can't be certain.

Mark Waite

--
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
jenkinsci-users+unsubscr...@googlegroups.com<mailto:jenkinsci-users+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/groups/opt_out.



-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to