Skip to content

Instantly share code, notes, and snippets.

goal: how to build an awesome CI for your organization.
Couple of years ago I was webdeveloper at Groupon working on a monlithic RoR webapp.
We had grown rapidly and the webapp saw incredible amount of work put in. This also bought in lots of cucumber tests and our build time shot up to 40 mintues.
My Name is Surya Gaddipati, This is my story of my epic journey to build an awesome CI at groupon.
CI is often setup as afterthought
> Teams consider it unimportant in grand scale of things
> Teams often don't have the experience, interest
The problem was to find the unique assignment of the ten decimal digits to letters that makes this addition correct:
DONALD + KNUTH = OUTPUT
db.run.update({ timestamp: { $exists: true}},{$rename: {'timestamp': 'scheduledDate'}})
update build_number_sequence with intial values
Recent Project improvements
Rebuild doesnt work for subbuilds because of urls
Is not kicking off job with org name in different case
PR kicking off even in the same
Syed . Error
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
java.lang.RuntimeException: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
at com.groupon.jenkins.util.GroovyYamlTemplateProcessor.getConfig(GroovyYamlTemplateProcessor.java:50)
at com.groupon.jenkins.buildtype.install_packages.buildconfiguration.BuildConfiguration.<init>(BuildConfiguration.java:44)
<% if( ! DOTCI_STAGE ) %>
run: blah
plugins:
- artifact: my.jar
- downstream:
myorg/myjob:
BRANCH: $DOTCI_BRANCH
SHA: $DOTCI_SHA
DOTCI_STAGE: package
UPSTREAM_NUMBER: $BUILD_NUMBER
@suryagaddipati
suryagaddipati / docker-compose-dotci.md
Last active August 29, 2015 14:19
Docker Compose Dotci

DotCi requires you to use Docker compose https://docs.docker.com/compose/

.ci.yml has three main sections

##Run

  • Run a service from docker-compose.yml with default CMD defined in the Dockerfile

     run: 
    

test:

# will run docker-compose run ci
run: 'ci'
#will run in parallel
run:
- 'rspec' # These are defined in docker-compose.yml
- 'cucumber' #These are defined in docker-compose.yml
plugins
- checkstyle
1. Vim for js
2. animations
3. flexbox
4. es6 promises
5. es6 generators
6. Immutable
7. Tanspilers, compatibility matrices
8. Less/Sass/Stylus
9. Browserify/webpack
I like the cleanliness of it, but I'd like some more lines to identify different sections.
It feels a bit too floaty and not enough anchor.
and some border lines would help ground certain sections.
The header is a good example of being anchored, but the rest of the widgets feel unorganized because there's no barrier between them.
Fix and review all permissions on actions on build /project
PR's don't have commiter name or commit message
Seperate out branch/tab logic from dynamicproject. It doesnt belong there.
use permissions for configure button + add delete project option
include progress bar
ajax query should only return completed