One thing I didn't mention is that we recently marked a few of our selenium
tests as smoke tests which I just spotted was suggested in the other email
thread for core!

Great idea!

Addshore


On 7 March 2014 19:34, addshorewiki <addshorew...@gmail.com> wrote:

> I feel like I should probably post here about the current Wikibase /
> Wikidata deployment pipeline too which probably differs slightly to other
> products.
>
> On a per commit basis:
> A commit is made, the unit tests run on jenkins, the commit is reviewed,
> amended, merged, Jenkins again runs the unit tests as gate submit, Travis
> also runs the unit tests post merge testing against php 5.3, 5.4, 5.5 and
> both sqlite and mysql.
>
> Daily at 10AM UTC:
> Our build process is triggered and creates a build for Wikidata, Both the
> WMF jenkins and our WMDE jenkins run the unit tests, if both pass we +2CR
> and it is merged, this is then deployed straight to beta where our Jenkins
> runs all of our Selenium tests, the tests report to the build gerrit commit
> depending on their outcome.
>
> Branch Day (even 2 weeks):
> Tuesday is generally branch day, we branch the Wikidata repo all the unit
> tests and selenium tests are re run, we deploy to test.wikidata, manually
> test and on thursday and wikidata.org the following tuesday.
>
> We have very good test coverage which generally makes everything much
> easier! I probably missed something of interest above but generally
> everything is covered.
>
> Addshore
>
>
> On 7 March 2014 19:08, Greg Grossmeier <g...@wikimedia.org> wrote:
>
>> <quote name="Jon Robson" date="2014-03-07" time="09:30:09 -0800">
>> > Let's also take this into a new thread. There are a lot of different
>> > conversations now going on....
>>
>>
>> My opinion is that fixing this with policy is going to be hard.
>>
>> Either everyone who commits needs to be mindful of what day/time it is
>> and whether or not another human has cut the new branch yet (which isn't
>> set in stone on when, it varies by a couple hours, depending on a lot of
>> factors), OR we modify the branch cut based on some arbitrary offset
>> (24 hours ago) or some human looks at the merges and picks a point.
>>
>> None of those are ideal/scalable.
>>
>> What we should do, however, is have a true "deployment pipeline".
>> Briefly defined: A deployment pipeline is a sequence of events that
>> increase your confidence in the quality of any particular build/commit
>> point.
>>
>> A typical example is:
>> commit -> unit tests -> integration tests -> manual tests -> release
>>
>>
>> Each step has the ability to fail a build, which means "You shall not
>> pass!" to that commit point. The earlier you get a "You shall not pass!"
>> the better because it means less time waiting by the developers to know
>> if what they committed is ok or not.
>>
>>
>> What this means for us:
>> The Mobile team is actually a good example. They are doing The Right
>> Thing and have a lot of tests written, including browser tests. They run
>> into problems when, eg: they write a new feature and associated test and
>> commit it.
>>
>> Beta Cluster gets that code (feature and test) within 5 minutes.
>>
>> But, test.wikipedia and en.wikipedia get that feature much later, days
>> later.
>>
>> However, the test code is run by Jenkins across all environments (beta
>> cluster, test.wikipedia, en.wikipedia etc) all the time. So, the mobile
>> team gets a ton of false positives when their new test runs against eg
>> production where the feature isn't enabled yet (on purpose).
>>
>> The QA team is working on this problem now (loosely termed the
>> "versioned test problem").
>>
>>
>> How a pipeline would help:
>>
>> Really, a pipeline isn't a thing like your indoor plumping but more of a
>> mindset/way of designing your test infrastructure. But, it means that
>> you keep things self-contained (contrary to the mobile example above)
>> and things progress through the pipeline in a predicable way/pace.
>>
>> It also means that each code commit spends the exact same amount of time
>> in the various stages as other code commits. Right now some code sits on
>> Beta Cluster for 7 days before hitting production, whereas other code
>> spends 0-5 minutes. That's not good.
>>
>> Wanna help us on this problem? We're hiring:
>> https://hire.jobvite.com/Jobvite/jobvite.aspx?b=nHZ0zmw6
>> (2 job openings)
>>
>>
>> Greg
>>
>>
>> --
>> | Greg Grossmeier            GPG: B2FA 27B1 F7EB D327 6B8E |
>> | identi.ca: @greg                A18D 1138 8E47 FAC8 1C7D |
>>
>> _______________________________________________
>> Wikitech-l mailing list
>> Wikitech-l@lists.wikimedia.org
>> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>>
>
>
_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to