I evaluated your software it looks really promising but I had several question
1. Is it any plans to support Delphi 2007? 2. Is it possible to add to ST Delete Files to more options "Mot in View"? The reason for that that we would like to checkout files and delete any old files left on build machine. Of course I can do it using ST Generic, but I have to remember a lot of extra switches. 3. ST Delete Files has OnGenerateStarTeamOptions event. How can I use it? I was trying to modify command line but have no luck. 4. Is it possible to do distributed build? Our program have a lot of independent modules. We have plans to compile all modules on separate machines and then merge results in one installation. If module failed to build on build machine due to hardware problem it has to be re-routed to another build machine. 5. Does Final Builder supports COM interface? Sometimes it may help. 6. Say I compile some Delphi project file. Say it has some errors, warning and hints. Is it possible to somehow filter them? Say I would like to put all hints to this variables, all errors to that variable. 7. I have several projects. Is it possible to share some action lists or scripts between them?
2. ST Delete Files - you should be able to add extra command line options in the OnGenerateStarTeamOptions event. The syntax is: CommandLine.AddArgument , , eg. CommandLine.AddArgument “-filter”, “N”, qtDouble (the valid quote styles are: qtNone, qtSingle, qtDouble, qtAutoDouble, qtAutoSingle - the auto ones will only add the quotes if the value contains spaces)
3. see 2.
4. Distributed build. FinalBuilder doesn’t feature special functionality to help you with distributed builds. Which compiler are you using? There are some products that enable you to distribute the compilation, eg. IncrediBuild, and it has actions in FinalBuilder too. Unless your compilations are taking many hours, it’s better to build on a single machine (maybe with multiple CPU’s), as this give you a known stable environment (eg. OS, components, paths, etc).
5. COM - yes, you can use JavaScript and VBScript in script events and the Run Script action to access COM components. You can also use ActionStudio to write your own actions, and these actions can use COM too.
6. Getting Delphi hints and warnings to a variable. Yes, you can use the OnStatusMessage with a bit of script to parse each line and then if they match (ie. is a Hint or Warning) then append them to the relevant variable.
7. Sharing ActionLists. You can share action lists by using the “Include Project” and then selecting which action list to use. You can’t share script code though. However, each project has “Global Script” (see the Project menu), which allows you to share script code between actions in your project.
Hope I’ve answered these questions with enough detail - let me know if you need clarification with anything.
The OnGenerateStarTeamOptions event is currently not working as expected (the extra args are added in the wrong place.) We’ll have a fix which exposes the “-filter N” option, ASAP.
Thanks for so detailed answers. They really helps.
2. Thanks for that. It helps. I will use that, but it is good to have check box, because it is much more readable for person which will read my script later. 4. Our installation has around 15000 files and check-out size is around 5 Gb. Currently we use Delphi 6 as main compiler and it take little bit less than 4 hours to build product. So we would like to distribute build. We already have around 100 computers to run only tests, so we can reuse them to do builds. And the main problem that we want that FinalBuilder starts multiple instances of FinalBuilder on remote machines and collect results back. It will be hard to do with other program. 7. Include Project is cool feature. But it will be much better if I can debug included project.
And I have more questions: 8. You have Action Lists which can accept parameters and you can Include Project. But how I can get results from them? They only allows to pass results to them but not back to caller. 9. Can Action Lists have own local variables? Say I have 2 configuration files with similar structure. They describes how to checkout and build module. Say I have Action List which reads from file, do check out and comppile. So I would like to use ASync Action Group and have 2 children to call the same Action Lists but with different parameters. But main problem that Action Lists reads from that file to global variable, so they shoudl interfere each with other. As well putting global variable for local needs create mess in Variables window. 10. Is it any way to check that every variable I use in action actually declared? When I tried to some stuff with FinalBuilder I quite often renamed variable and later script failed, because variable is not declared.
4. Yes, you certainly can use FB to start other instances of FB on the other machines. You can make use of some of the “Wait For…” actions in the main FinalBuilder project to wait for the other machines to become available, the process to finish, etc. You can also have a look at the WMI Run Process action and PsExec as a way to run processes on a remote machines. It’s also possible you could craft your build process to only build components that require rebuilding - this could save a lot of time.
7. Sorry, debugging an include project is not possible. You should be able to set up the “sub projects” to be able to be run independently of their parent project, that way you can debug them separately.
8. The only way to get results back from an ActionList is to use a Project or User variable. (We are aware of this issue, and plan to address it some time in the future).
9. Yes, you can use the ActionList parameters like local variables.
10. No, there’s no way to do this. The difficulty is that there’s no way to know if the variable that will be used will not be available by the time the action runs. Variables can be declared during execution of your project, and also can be available as part of a parent project.
Thanks for answers. I answered on your email. I need little bit more time.
About you answeres. 7.Including External Scripts You can include external script files in your Action scripts, by inserting a comment with “USEUNIT scriptfilename”. This is from help Is it working?
I have more questions: 1. How I can send email from Final Builder with high priority? 2. Is it possible to add environment variable which will hold path to current opened project? I would like to use Include Project and that project is stored relativelly to opened project. 3. When I run some project using FBBuild or ActionStudio it generates log file. Is it possible to append it’s lot to main log file? Say I have main project which ran child project on another machine. It waits until child project finishes and then I would like to append log from child project to main project. So if it child process failed by any reason it will be easy to analyse. Ideally if it possible to place to this tree at run time as child project executing 4. When I export log to HTML the HTML file looks flat. Is it possible to implement it as a tree? In this case it is easier to match HTML log with project actions.
> 1. How I can send email from Final Builder with high priority?
Unfortunately, this is not possible with the current email action. We have had requests for it in the past, so it is on our to-do list for a future version.
> 2. Is it possible to add environment variable which will hold path to current opened project? I would like to use Include Project and that project is stored relativelly to opened project.
Try %FBPROJECT%, or %FBPROJECTDIR% if you only need the directory (go to Tools -> Edit Variables and click on the Environment Variables tab to see all of the available environment variables.)
> 3. When I run some project using FBBuild or ActionStudio it generates log file. Is it possible to append it’s lot to main log file? Say I have main project which ran child project on another machine.
If you use the “Include Project” action, the log from the included project will appear in the main project log (as the child nodes of the Include Project action.)
> 4. When I export log to HTML the HTML file looks flat. Is it possible to implement it as a tree? In this case it is easier to match HTML log with project actions.
Unfortunately, there is no impelementation to export the log as a tree currently built in (we found it too hard to generate a practical and usable tree structure using only HTML.)
However, it is possible to use a stylesheet to format the log output in any way you want. The current “export log to HTML” button in the IDE uses the stylesheet “ConvertLogToHTML.xsl”, which can be found in the “Stylesheets” directory inside the FinalBuilder program directory. You could use it as a base for a tree format stylesheet. If you use the Export Log action, you can choose a custom stylesheet.
>>Tate may have emailed you this already, but here is a link to the test build with the new TC feature: What is TC?
2. Do %FBPROJECT% and %FBPROJECTDIR were added recently? I didn’t found them in build 208 3. I meant if I run MasterProject on Computer1, then I used PsExec in MasterProject to run ChildProject on Computer2. After ChildProject finishes I would like to add log from ChildProject to MainProject.
StarTeam, not TC. Sorry. The build has the “-filter N” option you were asking for. It’s been a long day(!)
> 2. Do %FBPROJECT% and %FBPROJECTDIR were added recently? I didn’t found them in build 208
No, as far as I know they have been there since FinalBuilder 1.
I did give you a wrong instruction, though - they can be found under the System tab in Edit Variables, not the Environment tab. The variables will show as having no default value (although the value will be populated when the build is running.)
> 3. I meant if I run MasterProject on Computer1, then I used PsExec in MasterProject to run ChildProject on Computer2. After ChildProject finishes I would like to add log from ChildProject to MainProject.
Sorry, I missed that you wanted to run across multiple machines. I’m afraid there is no way to do this at the moment. The only solution would be to export all of the logs, use XML and XSLT to manually conect all of them together, and then display them as HTML using a stylesheet.
StarTeam, not TC. Sorry. The build has the “-filter N” option you were asking for. It’s been a long day(!) It is very nice. Thanks a lot.
> 2. Do %FBPROJECT% and %FBPROJECTDIR were added recently? I didn’t found them in build 208 Sorry I missed them because they didn’t display current value. I already found them.
>3. I already do it, but just thought maybe they is easier way.
>The difficulty is that there's no way to know if the variable that will be used will not be available by the time the action runs. Variables can be declared during execution of your project, and also can be available as part of a parent project.
I for one would be very happy to forgo the ability to declare variables at runtime (something I don't see much value in) in order to get better compile-time safety. And even forgo the ability to implicitly inherit variables from a parent project for that matter - you could make it so that you had to name all the variables you wanted to inherit.
>I for one would be very happy to forgo the ability to declare variables at runtime (something I don't see much value in) in order to get better compile-time safety. And >even forgo the ability to implicitly inherit variables from a parent project for that matter - you could make it so that you had to name all the variables you wanted to inherit.
You can already avoid inheriting variables by not using the "Share variables namespace" option and explicitly setting variables in the child project.
While I personally agree with you about declaring variables at runtime, that feature was added because lots of users found the need to do it. Also, because FinalBuilder inherits things like system environment variables it can be kind of hard to statically determine which ones are available at validation time.