|
#1
|
|||
|
|||
Continuous integration
I'm playing with the ContinuousIntegration.bld file from the sample folder, and using Starteam in my case. I see where the script knows that it has not run yet, and so it sets a NEED_TO_BUILD macro to true. After the first build, it runs a Starteam History command for missing and out-of-date files, but I don't see where it uses this information to set the NEED_TO_BUILD macro to either true or false. When I test it, it always builds, regardless if any check ins were done so I'm confused. Thanks!
|
#2
|
|||
|
|||
See the step's vbld_StepDone script event code (show the step properties dialog and click the Script Editor button).
|
#3
|
|||
|
|||
So it does the following (pseudo-code)
if has-missing-files OR has-out-of-date-files OR last-build-failed NEED_TO_BUILD = yes correct? I call a *.bld script to build of course. Does that script have to explicitly return a "true" bool it passes build, or does it just automagically do that? |
#4
|
|||
|
|||
Quote:
Quote:
|
#5
|
|||
|
|||
Thanks!
|
#6
|
|||
|
|||
A follow up question.
I do a full build (check out everything, build everything) at 1:00am every day. I want the full build to happen at exactly the same time everyday. If that build passes, I just want to do incremental builds subsequently for the remainder of the day. Then the cycle repeats daily. How can I ensure that the incremental builds do not overlap with the full build? In other words, it's conceivable that an incremental build starts at 11:59pm and run for 1.5 hours. |
#7
|
|||
|
|||
If you're using a continuously running build like the sample, it won't start one build while another is building. If you're using another method like a scheduled task, you could use the technique shown in the SingleInstance.bld sample to ensure only one build runs at a given time.
http://www.kinook.com/VisBuildPro/Ma...ancesample.htm |
#8
|
|||
|
|||
I'm doing a hybrid of both.
To ensure a build at 1:00am, I have to do a scheduled task. To do subsequent builds, I do a continuous integration build, per your sample file. |
#9
|
|||
|
|||
You could either modify your continuous integration build to also build after 1am if no builds today, or use the single instance technique in the continuous and scheduled builds.
|
#10
|
|||
|
|||
Ok I'll play with that. I really want to guarantee a full build at 1:00am+, regardless of what happened before.
|
#11
|
|||
|
|||
The continuous integration example checks the repository (Starteam in my case) for any changes and then runs a build if any. In my case I don't want to check the whole repository, but only two folders, say Folder1 and Folder2. I know I can set up two different steps to check each folder, but how can I OR the results of each step? Or is there yet a better way?
|
#12
|
|||
|
|||
Conditionally build the step that checks the 2nd folder only if %NEED_TO_BUILD% equals no.
|
#13
|
|||
|
|||
Can't it be any simpler than that! Thanks!
|
|
|