Posted by Abhijit Kini on June 23, 2016

Software development teams run Continuous Integration (CI) and Continuous Delivery (CD) to drive efficiencies in the Software Development LifeCycle. Shippable's architecture gives software developers a wide range of capabilities to automate and execute C/CD. To get started quickly and be successful running CI on Shippable, I'll walk you through the key concepts of CI on the Shippable platform.

I'll use a visual approach to go behind the scenes of the CI process on Shippable. This understanding will enable you to leverage Shippable, to automate and execute the end to end CI process and spend less time maintaining the process on your own.

Read More

Topics: continuous integration (CI), CI/CD, tutorial, tips

Posted by Avi Cavale on June 23, 2016

I spent the first decade of my career at Microsoft. As a result, the only stack I was familiar with was Microsoft SQL Server at the backend, an API layer using SOAP + XML in the middle, topped with a web layer built on .Net. 

I was drunk on the SOAP kool-aid and completely ignored the inefficiencies created by SOAP + .NET. For example, the view state transferred for every interaction between the API and Web layer was very heavy and led to the following:

Complicated stored procedures: We tried to minimize calls between Web and API layers, which meant that any call that retrieved complex information from multiple tables needed a SQL Server stored procedure. 

Multiple APIs to manage CRUD: API contracts did not represent the DB schema and multiple CRUD APIs interacted with the same database object. This led to confusion among developers and frequent regression issues since it was difficult to find all code locations where an object was being created or updated.

Fragile database: The above issues made us reluctant to change anything in the database since it caused bugs and regressions. This meant our database was virtually frozen.

Having experienced this as a developer, manager, and eventually a Product Unit Manager, the first thing I did at Shippable was to pledge total allegiance to REST. One of the most important principles of REST is that every object should have an http routable method. Now this led us to a very interesting conundrum: where should we compose the objects that need to be displayed in the UI? Should we build a layer of finished APIs that return a ready-to-display object or should we compose the object in the UI layer by making multiple calls to the basic CRUD APIs?

Read More

Topics: development process, software delivery

Posted by Avi Cavale on June 17, 2016

Shippable has been on a roll for the last 8 months. We scaled our team by 3X, had the best-ever release of our continuous integration and delivery platform on February 29, and we’ve continued launching 10+ features every month since then. 

As we scaled our development team, every new developer joined us with preconceived ideas about how software is developed. Unfortunately, software development is pretty inefficient at most places, and this is one of the main reasons we started Shippable. We at Shippable do things differently. We focus on shipping code faster and faster, and we hold some principles very close to our heart. 

One of our strongest beliefs is in pure REST APIs. This means we follow the cardinal rule: thou shalt not make multiple calls to DB objects from inside a single RESTable route. So when any new developer joins our team, his first question is : Why do we call our API from within our API?

Read More

Topics: nodejs, tips, REST API, Workflows

Posted by Abhijit Kini on June 17, 2016

There have been several requests on our support forum on how to customize environments to specific branches while running Continuous Integration (CI) builds for a repository that has multiple branches. In this tutorial, I'll go over a common scenario and review the multiple ways we can configure branch-specific actions during the CI build. 

The scenario I use for this tutorial is, to pull a Docker image in the CI process and upon completion, use different tags for the branches when pushing the Docker image to Docker Hub. The Docker tags should be customized to the specific branch where the CI was processed and should include the build number. The final results of successful CI process tagging different branches looks as shown.

Read More

Topics: Docker, continuous integration (CI), how-to, tutorial, tips, Public Repository, private repository

Posted by Matt Carter on June 15, 2016

Next week, DockerCon16 comes to our hometown of Seattle. Shippable is excited to be a sponsor of DockerCon16 and to welcome the Docker community to our neighborhood. For visitors to the conference, we have gathered some of our team's favorite tips and things to do in Seattle so you can get the most out of the event. And, if you want to get even more insider info, come and visit the Shippable booth and ask any of us for our favorite haunts and suggestions so you can maximize your down time in the Jet City.

Read More

Topics: Docker, DockerCon16