16
How AngularJS Made MCI Superheroic Valeri Karpov Kernel Tools Engineer, MongoDB www.thecodebarbarian.com github.com/vkarpov15 @code_barbarian

AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

How AngularJS Made MCI Superheroic

Valeri KarpovKernel Tools Engineer, MongoDB

www.thecodebarbarian.comgithub.com/vkarpov15

@code_barbarian

Page 2: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

What is this talk about?

•MongoDB Continuous Integration

•How AngularJS saved us from BackboneJS hell

•Special focus: Filters, the forgotten component

Page 3: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

MongoDB Continuous Integration

Q: Who broke what?

MongoDB has ~1400 E2E tests

Multiply that by 20 different OS configurations

And again by Enterprise / non-Enterprise

And again by 10-30 commits / day

Page 4: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

6-12 hours of test execution, too much of this:

MongoDB Continuous Integration

Page 5: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•“Is something broken?” is easy

•Somewhat harder:

•“Who broke it?”

•“Why is it broken?”

•“What happened with previous runs?”

•UI needs to make this easy, buildbot doesn’t

Why is AngularJS important for CI?

Page 6: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Waterfall - all results from last 5 builds

•800 lines of Backbone, 1000 lines of server helpers

•250 lines of AngularJS, 200 lines of server helpers

Liberate Tuteme Ex BackboneJS

Page 7: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Rules for converting data to UI-specific format

•One-way tie-in to two-way data-binding

•Prevent you from drowning in easy tasks

What are filters and what do they do?

Page 8: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Build state stored in lowercase

•Build status badge should have first letter in caps

•Don’t extend String.prototype, use a filter!

Ok, what’s a very basic filter?

Page 9: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Build state stored in lowercase

•Build status badge should have first letter in caps

•Don’t extend String.prototype, use a filter!

Ok, what’s a very basic filter?

Page 10: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Commits reference JIRA tickets

•Filter to make links using ng-bind-html-unsafe

Fun with Filters - JIRA Linkify

Page 11: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Filter to make links using ng-bind-html-unsafe

Fun with Filters - JIRA Linkify

Page 12: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Server in Go - times and deltas in nanoseconds

•… except when they’re not

•Keep dates in UTC but standardize UI on EST

Fun with Filters - Easy Dates & TZ

Page 13: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Log files - first step of debugging

•Developers still prefer using less or vim

•With AngularJS, we can make it better

Next Step: Rethink Log Files

Page 14: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Multi-highlight (Filters!)

•Bottom-up infinite scroll

•Search with context a la SublimeText

Making Log Files Cool (And Useful!)

Page 15: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration

*

•Suggestions for log file viewer most welcome

•Filters tutorial coming soon to my blog at:• www.thecodebarbarian.com

• Twitter: @code_barbarian

Thanks for Listening!

Page 16: AngularJS Meetup 11/19/13 - AngularJS for MongoDB Continuous Integration