Matrix builds are special. I use them heavily so I'll try to explain - 
someone else may be able to do a better job.

Matrix builds perform a small set of actions on the master (or in the 
master workspace), and this is called the flyweight build. I'm always a 
little bit vague on where the line is for these, because it's not simply 
"things that are not build steps." It can depend on the plugin, and 
some/many plugins do not handle the matrix build case well or at all. This 
is always a frustration for me.

Once the flyweight build tasks are done, the main build fans out and runs 
on all axes of the matrix. In my case these are always jobs running on 
different slaves for different platforms, but I guess some people do things 
like matrix builds where the matrix is JVM versions or something, and this 
all happens on the master. The point is that here the builds are happening 
in a separate workspace for each axis of the matrix. 

Once you get to the post-build steps, I think most of them happen only on 
the master, though again depending on the plugin I think this isn't always 
the case. But when you specifically mentioned confusion with what happens 
when you copy a file back to the master, I thought I would comment because 
we do that, and there is a trick to it. Because you're only giving a 
filename to copy, the presumption is that the same filename could exist on 
all the slaves. If you just copy it back to the master workspace, you'll 
overwrite the file a bunch of times and only end up with one copy, when the 
contents could be different. So Jenkins, or the plugin, puts the files in 
named directories, so you have all the copies. 

The weird thing is that it also copies the file from the master TO the 
master, but into a different path for some reason. For example, in my case 
files that get copied from slaves end up in 
'../configurations/axis-label/precise_64bit/workspace' whereas files that 
get copied from the master end up in 'label/lenny_32bit.' Both those paths 
are relative to the main workspace on the master.

Hope this helps, if not perhaps I can explain further.

--
IRC: autojack
Twitter: literatesavant
http://holisticqa.com  <-- my dev productivity blog


On Friday, October 25, 2013 6:05:02 PM UTC-7, Ingo Richter wrote:
>
> Hi,
>
> I've spent a couple of days to reinstall our teams build system. Along the 
> way I made a couple of improvements to simplify the job configurations by 
> switching to a matrix build for all the supported platforms.
> This work pretty good most of the time.
>
> There is at least one issue that I don't have a solution right now:
> Using the build-name-setter plugin 
> https://wiki.jenkins-ci.org/display/JENKINS/Build+Name+Setter+Plugindoesn't 
> work for the "master" job if the value should be read from a file. 
> This file is created on each slave, but not on the master (obviously). 
> Trying to copy the file back to the master with the copy-artifact-plugin  
> https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin didn't 
> work either. I don't get an error message, but the file doesn't appear in 
> the master workspace.
>
> Is there anything that I miss with matrix job. Why does this type of job 
> behave so differently? The copy from slave works just fine in other jobs.
>
> Does anybody have any thoughts that might be helpful to resolve this issue?
>
> Thanks,
>  Ingo
>
>

-- 
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