The CI/CD and DevOps Blog

Cascading Builds with our New Public API

Ever wish your build minions could boss around your other minions for you? Well, with the help of the new API, now they can! Today, I'm going to show you how you can have a successful build of one project, kick off a build of a different project. In honor of the new API, we are gonna do it all without leaving the terminal! Warning: You must have a startup or custom plan to use the API.


For illustrative purposes, I've created two repos that contain only shippable.yml files. I'm going to call one project "kicker" and the other project "kicke". The kicker project will kick the kicke project into building, after kicker finishes building successfully. Here is the code for the kicke project's shippable.yml file

install:
  - true
script:
  - true

Basically, a build that will always run successfully under normal conditions.

Before you do ANYTHING with the api, you're gonna need to get your api token; don't worry though... It's easy! All you have to do is go to your account permissions page and generate a token. We will use this token in the header of our http requests.

Making Deployments Even Easier with Docker Build

this is a deprecated blog

DEPRECATED BLOG:

We have significantly updated the Shippable platform with several new features. Hence most of the content in this blog is deprecated.

Here are some updated tutorials that explain how to configure common scenarios for Docker Hub:

  1. Use an image from Docker Hub as your build container
  2. Pull an image from Docker Hub
  3. Build an image which pulls the base image from Docker Hub
  4. Push an image to Docker Hub

For the latest information, refer to our documentation and/or open a support issueif you have questions.


Try Shippable


 

402x242_build_docker_images

Docker Hub and Shippable have always been good friends, but today, we're gonna learn how to make them best friends. With our new docker build support, you no longer need to upload your custom images to Docker Hub. Simply include your dockerfile and dockerized app in your Git repo, enable docker build, provide your Docker Hub credentials, and leave the rest to us.

Exciting new features at Shippable! Docker Build, Public API, Cascading Builds, External Webhooks, and more!



Our purpose at Shippable is to remove all friction in software engineering. With our newly released suite of features, we hope you'll agree that we can help you take your software development process to the next level! Over the coming weeks we will be taking you through some technical dives of each feature, but today let's start with a high level overview of each feature.

DOCKER BUILD: With Docker Build, you provide the specifications and Shippable will generate your custom image, ensure it passes all Continuous Integration steps, then store it in the Docker Hub Registry with versioning and all associated meta data. You no longer need to create, store and manage your custom images outside your CI system, so you can eliminate extra steps in your application delivery pipeline. All it takes is the simple addition of a Dockerfile to your repo and the use of your dedicated host with Shippable.

4 Scenarios Your CI Strategy Should Support

Continuous Integration (CI) is a hot topic right now.  Companies have embraced the idea that automatically integrating software changes early and often is an effective approach to reduce cycle time, increase quality, and reduce end-to-end costs.

But what constitutes early and often?  (Hint: the earlier the better, and you should do it at multiple stages of your software delivery process.)

To identify where to introduce CI, it helps to understand how the need for CI changes as the complexity of your software delivery process grows. 

Setting the JDK Versions on Java Images

 

It's quick and easy to specify which JDKs to build your code against! With the aid of the JDK tag, you can instruct your minion to not only use a specific JDK, but even have it create a build matrix using multiple JDKs! The JDK tag can be used in both the comprehensive minv2 image, and in the Java specific ubuntu1404_java and ubuntu1204_java images. For example, let's say you want to verify that your app builds on both openjdk and oracalejdk. This can be done with by using the following snippet in your shippable.yml file:

language: java
jdk:
- oraclejdk7
- openjdk7

However, while the above snippet can be used in both the minv2 and java specific images, you must add a script to activate the JDKs in the ubuntu1404_java and ubuntu1204 images. This can be done by adding a few lines to the before_script section of your shippable.yml .