Hi all,
I've been unable to work on this for the past weeks, but I'm still moving on step by step...
I now have all codes ready for deployment and could generate manually a debian with gbp.
I still have to work out my own rosdistro and the local mirrors... in order to get buildbot-ros set properly...
I now have 3 sets of questions:
A: WORKFLOW
So now, I have a doubt that I'd like to clarify on the WORKFLOW you are following with buildbot-ros and bloom...
I had in mind that buildbot-ros would perform all the steps at every nightbuild: checkout the source, compile, test, boom, generate the doc and the debian...
But I've looking deeply in the master.cfg and the slaves python examples you are providing.
And I now think (please confirm) that your workflow is the following:
1. Check source updates (check for newcommits)
2. When source updated, then run a build and test slave. (Here, I don't see where you perform catkin_make, since the cmake flags you are using are not setting the devel overlay, just the test ones... Is there a reason for that? Isn't that required?)
I'm not quite sure either if you run the doc slave now also or not.
This will provide some nightly build and testing results.
But it won't provide a nightly stable version of the packages to the developpers. Will just check for breaks in the build. Right?
Then when you consider that you are ready for a new release, based on your release plan and strategy, you MANUALLY run catkin_prepare_release and bloom-release.
Still correct?
Then go to the buildbot-ros webpage and manually force a build on the deb generator slave.
Is this correct? or do you also automatically check for source updates on the bloom/debian_files git server to run the build with the deb builder slave?
Can you confirm that this is the current workflow you are using with buildbot-ros?
B. Private git for bloom-release and git-buildpackage
I've been running some preliminary tests using non critical packages on a public github account, to get up to speed on the process.
But I'll need shortly to setup this process on our private internal git server.
And there's a lot of info about private repos, and stuff to make sure, this it is disseminated on many webpages...
So I would appreciate if you could try to summarize the pitfalls I have to avoid when setting this up on our private servers...
configs, ssh keys etc...
Thanks a lot in advance.
C. TESTING
And then I have another question, related to the Build and test part.
We haven't generalized the use of unit tests in our team, so we have really few unit tests available and no regression tests...
In that case of almost no tests available, what kind of feedback will buildbot provide? missing dependencies, compilation errors etc...?
Can we set the level of the warnings to be considered?
Then if/when we implement the gtest or unittest or rostest, I understand that buildbot will also provide the outputs of those tests, in the buildbot webpage or by email if added to the master config file. correct?
And a final question for today:
when running catkin_make and catkin_install, this doesn't prevent for a badly configured Install section of the CMakelist.txt or package.xml or setup.py...
So basically, the complete process can go through (up to generating bloom and the debian) without detecting that the application will not be functional because of a missing file for example only called in python at runtime; or because a python node hasn't been declared as an executable node...
So at the moment I need to manually execute and test all the roslaunch applications of my product, testing the GUIs etc to make sure that what I ship is really operational...
How can I automate those tests? So I'm not talking about intra-node functions testing, nor individual node publish/subscribe testing (that I can perform with gtest or unittest if I understood this well), but at the whole application level, loading the correct robot part program from the gui for example, and checking in simulation that the robot is really doing something... and that no runtime error or exception are thrown...
Is that feasible?
What links/pointers could you advise me to look into?
And by the way, since you are not running "catkin_make install" in the slave, how can you test that your "installed" files will be correct? The slave will be running in the /devel overlay when you run the testing buildbot slave, no? So you won't check for missing files or badly setup Install section of the Cmakelist.txt...
Am I not getting something? because I believe you need to execute the testing in the /install overlay to test your to-be-deployed application...
As you can, it is still not crystal clear to me, even if I feel that I'm quite close now...
Thanks for your support and patience!
Damien