Hello,
As I’m looking at putting more complex test projects to Continua I’d like some feedback on how the build workspace can and should be used in communication between the stages.
Our primary build is quite large and complex, as you have seen from the script. What would be the best way to replicate that to Continua while utilizing the facilities offered by Continua? It’s not feasible to register 9000 files as artifacts, but all of those are required for our build. Can we for example construct the directory structure within the workspace to other location besides the Artifacts -directory? Can we also create a temporary directories to the workspace during the build to communicate stuff between stages (for example certificate to be used in code signing etc.) which is determined during the build and have these directories synced between the agent(s) running the stages?
Hi Olli,
We’re in the middle of changing how workspace syncing works, so I’ll give you two answers
Currently, you can just put things anywhere in the workspace and they will automatically be sync’d back to the server, then to each agent that the build uses. Also, any files that are changed in the Source directory are automatically sync’d and re-applied to each agent. So basically the workspace is transported in its entirety to each stage.
While that automation is convenient, it’s not very flexible: everything in the workspace goes to every agent, whether you need it or not. So, we’re working on introducing a way to specify exactly what is sync’d to and from each agent. As part of this, we’re also looking at being able to only get part of your source tree into the workspace.
So for example, lets say you have 5 stages: Build, Test, Doco, Installer, Deploy.
Build: needs all the source except the documentation directory, and you want to sync back all .exe and .dll files that the build creates
Test: needs no source, and needs the .dlls produced by the build step
Doco: needs only the documentation source, and doesn’t need any .exes or .dlls. It produces a set of help files that need to be sync’d
Installer needs a single key file from source control to sign the installer, plus the exes, dlls and help files. Produces a single installer file
Deploy: needs only the installer file
Currently, each stage would take progressively longer to get started as more and more stuff is added to the workspace. That includes things that you probably don’t care about, like files temp files produced by the build process. Plus, the stages that only need a small part of the source currently need to copy the whole repository into the workspace.
The file rules we’re introducing now will let you specify exactly what goes to and from each stage. It’ll be a little bit more work to set up but, especially for complex builds like yours, it should make things a lot quicker, particularly in the later stages.
We’re certainly still open to idea and suggestions on this stuff too, so if there’s anything you’d like to see, a way you’d prefer it to operate, or a particular use-case that you think is important, please let us know.
Cheers,
Ben