On 2 Sep 2015, at 2:48, Paul Jakma wrote:

On Sat, 22 Aug 2015, Martin Winter wrote:

On 20 Aug 2015, at 6:13, Paul Jakma wrote:

So what you're asking is to push a commit at a time, and wait till the CI has run before pushing the next?

Yes, when possible. Or at least just bundle related commits together. My goal is still to have some automatic feedback on test results back to list (or maintainer) for each run, but at this time the result still needs too much manual investigation to make sure it’s not a false alarm if things break.

This could be tricky. We have to couple the pushing of commits to the running of the CI tool on those commits. Hmm. So the commiter would need to:

1. Push the next minimum set of commits that are needed to build (ideally that'd be 1 commit)
2. Check the CI tool and wait till it has run
3. Go to 1

?

Yes, painful… Trying to figure out something easy.
My struggle at this time is that I’m not that clear what you are pushing next. Each patch gets discussed on it’s own on the list and then you pick a few of them for your next push. I see you giving some heads up
but, not very clear on which ones.
So how about (if you plan to push multiples at the same time), you would create a branch, apply it all there, then announce the branch and if no objections show up within a week or two, then you merge it into the mainline?

If you manage to give the branch a distinct name (i.e. proposed-XXXXXX or something), then I could even trigger automatically based on it. Could be even another git altogether if you prefer.

This is the CI at https://ci1.netdef.org/browse/QUAGGA-QMASTER right?

Yes and no… this is the ci at ci1.netdef.org, but there are many more (not yet) public plans. Eg, I have the full compliance run and some basic patchwork plan implemented as well. My plan for the patchwork plan was to potentially pick up all new patchworks automatically, test the build on all the OS and do some selected compliance runs. Currently struggling to finish this as most of OSPF and BGP is broken (btw: your OSPF patch looks promising, but still running the tests). So they
currently all fail miserably.

Better would be to remember the last head the CI ran on, then after more commits are pulled in, go through each commit and do the CI on each? E.g. if abc123 was the last commit ID, then get the list of more recent commits, checkout and run the CI in that with something like:

for COMMIT in $(git rev-list abc123..); do
git checkout $COMMIT && runci() || exit ...
done

Unfortunately not without rewriting the whole CI system (as fas as I know). Atlassian Bamboo (which I use) and Jenkins work in a way that they get triggered by git server telling them that new commits are available
or by polling a git server for changes.

And they don't support doing something akin to 'git bisect' to find the commit? Surely others must have run into this?

Hmm, seems so:

https://issues.jenkins-ci.org/browse/JENKINS-12972

Jenkins is more feature-rich, but after long attempts I gave up on it for not getting it reliable to work.
(Each bug I found got fixed, but then each fixed version had new bugs.)

https://jira.atlassian.com/browse/SRCTREE-1125

This is for SourceTree, which is just a graphical git client. I’m using Atlassian Bamboo which is their
Jenkins like CI system

I could probably trying to get something like this implemented with enough time, but then I rather concentrate
my work on catching the bugs even earlier (i.e. with patchwork).

Also keep in mind that many crashes are not that clear cut and not always failing or passing. For the larger runs (every few months) I run each test at least 4 times to make sure I have consistent results. And each test suite (= each protocol) usually takes approx 24hrs of runtime for a full pass. Splitting it into smaller batches is possible, but then I miss issues because of bad state from previous tests (i.e. like the case when the
ospf router-id gets changed)

Also, your suggestion would break builds in the rare case where multiple commits need to be tested together to build a working system (not sure if and how often this might happen).

Yeah, ideally every commit should be 'golden' and produce a buildable and workign tree. The ideal and reality have a tendency to disagree every now and then though, despite best efforts. ;)

Understood. And it would be good to find these non-golden commits as soon as they happen… Anyway, just trying to find the best solution while keeping it as simple as possible for maintainers
pushing the commits and people (like me testing it).

- Martin Winter
  [email protected]

_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to