[openstack-dev] [third party] - minimum response time for 3rd party CI responses
Jay Pipes
jaypipes at gmail.com
Thu Jul 3 17:02:51 UTC 2014
On 07/03/2014 03:49 AM, Luke Gorrie wrote:
> On 3 July 2014 02:44, Michael Still <mikal at stillhq.com
> <mailto:mikal at stillhq.com>> wrote:
>
> I have seen both. Normally there's a failure, reviewers notice, and
> then the developer spins trying out fixes by uploading new patch sets.
>
>
> Interesting. Yes, I can see that you need fast response from CIs to
> support that scenario. 12-hour edit-compile-run loop will ruin anybody's
> day/week/month.
>
> My rule of thumb is three hours by the way. I'd like to say something
> like "not significantly slower than jenkins", but that's hard to
> quantify.
>
> How do people normally throughput-optimize their CIs?
By using single-use slaves and things like nodepool to manage a "ready
set" of VMs that are used for these single-use slaves.
> I suppose that parallelism is the basic trick, but how do people achieve
> it? Concurrent tempest runs on the same host? or on a pool of (virtual)
> hosts? or in one-shot disposable VMs?
One-shot disposable VMs, managed by nodepool or some other custom script.
> The CI that I operate is currently running tests serially on a "bare
> metal" server. This is okay for now (no backlog) but I would like to be
> able to ramp up the number of tests performed and then performance could
> become an issue.
>
> The idea I'm playing with now is to support N servers each running M
> parallel virtual machines for tempest. I'm tempted to use a disposable
> Vagrant VM for each tempest run both in order to isolate tests from each
> other (those running in parallel and also those that have run before)
> and perhaps even make it possible for others (4th parties?) to grab my
> Vagrantfile and replicate my test environment (if they want a faster
> turn-around than via Gerrit).
I don't think Vagrant will give you anything other than a slow launch
time, frankly. You will want to have a system that keeps a pool of
available single-use slave VMs ready to run a test job, report the
results to Gearman (or Gerrit if you prefer to skip the entire queue
mechanism), and terminate the VM.
> I'd be very curious to know what is working well/badly for others at the
> moment so that I can avoid stepping on land mines :-).
devstack-gate works very well for what it is supposed to do:
* Checkout git repos of all projects related to OpenStack test runs
* Checkout the SHA1 of the code in Gerrit repo for the project under
test (Neutron in your case)
* Configure all of the OpenStack services and start all the services
in separate processes (screen sessions)
* Direct logs to a standardized location
* Run Tempest or another test suite based on environment variables
For your 100 line shell script project (which I can almost guarantee
will end up being more than 100 lines ;), I would recommend using
devstack-gate as much as you can, as it's taken dozens of engineers many
man-months to get it right, and you can be sure that you will run the
same tests that are executed in the gate, set up in an environment that
is exactly like the gate, therefore achieving some level of consistency
with the gate.
Best,
-jay
More information about the OpenStack-dev
mailing list