Adding CI Pipelines and Continuous Testing with Spinnaker CD Pipelines using ReleaseIQ

March 21, 2021
Product Updates
by  
Tamilmaran Selvaraju
Blog-thumbnail

Application architectures have gone through a huge change over the past 5-10 years. Prior to unicorn companies building out scale out infrastructure, the major application pattern was monolithic apps sitting in physical and then virtual environments.  These applications (and their underlying infrastructure) needed care and feeding, updating and refactoring.  This all created a confusion of configuration states and status.   With the introduction of the new wave of cloud first companies and their applications came the paradigm shift toward immutable architectures where the entire application was redeployed over the existing one.  Configuration for both the application and the infrastructure environment became a matter of code.  This new cloud native architecture could be set up to run in any cloud, executing in portable containers laying the groundwork for this new model.  CI/CD changed along with these trends and orchestration of pipelines for dozens of code commits each week or even day required new models, especially in the deployment arena.   This blog highlights one of the key players in this new arena, Spinnaker, and how the ReleaseIQ platform integrates with Spinnaker to compose, integrate, execute, and manage the issues around these pipelines.

Spinnaker and Continuous Deployment

Spinnaker is an open source, multi-cloud continuous delivery (CD) platform for releasing software changes with high velocity and confidence. Created by Netflix and now used by hundreds of teams over a million deployments. Spinnaker creates deployment pipelines that run the integration and system tests, spin up and down server groups, and monitor your rollouts.

Spinnaker provides application deployment features to construct and manage delivery workflows. Below is the typical pipeline for continuous delivery workflow:

Spinnaker Pipeline
Source: https://spinnaker.io/concepts/#pipeline

The pipeline is the key deployment management construct in Spinnaker. It consists of a sequence of actions, known as stages. You can pass parameters from stage to stage along the pipeline. Pipelines can be started manually or can be configured to be automatically triggered by an event, such as a CI job completing, artifact appearing in the registry, CRON schedule or stage in another pipeline.

Spinnaker Integration with ReleaseIQ

The ReleaseIQ platform supports the integration of external tools to orchestrate the full process of CI, continuous test and CD.   Examples we already integrate with are Jenkins, CircleCI, Bamboo and Spinnaker. You can integrate Spinnaker with ReleaseIQ and orchestrate the CI/CD process pipeline from developer commit, test, other custom steps through deploying the code into an environment such as staging or production. Below are the three key use cases of using ReleaseIQ with integration of Spinnaker continuous delivery workflow along with other tool chains to bring end-to-end visibility and insights.

Use Case #1: ReleaseIQ CI and Spinnaker CD

In this use case, ReleaseIQ provides the continuous integration capability that will build the source, deploy, test and promote the qualified package to build the repository. In addition, the ReleaseIQ platform can bring the Spinnaker CD pipeline that can connect to the end of a CI pipeline.

ReleaseIQ Spinnaker Pipeline

Use Case #2: Jenkins CI, QA Test, Promote Build and then Spinnaker CD

In this use case, Jenkins CI is used by the development team, Spinnaker is used by the DevOps team for CD. ReleaseIQ provides the glue between CI and CD to bring end-to-end visibility. This is another great example of how two distinct tool chains with multiple teams can be integrated using the ReleaseIQ solution.  There is no need for specific teams to change what works.   Just input the external pipelines into ReleaseIQ and you get coordinated orchestration and instant visibility across those tools.

Jenkins Spinnaker Pipeline

Use Case #3: Using Bamboo & Jenkins CI, ReleaseIQ QA and then Deploy to Staging/Production through Spinnaker CD

In this use case, Bamboo & Jenkins CI are used by two different development teams and Spinnaker CD is used by the DevOps team. ReleaseIQ provides end-to-end visibility by orchestrating the multiple tool chains. In the example below, Once CI is done, the QA team can build the new package, qualify it through tests & promote it for deployment using Spinnaker.

Spinnaker CD

Dashboard:

ReleaseIQ platform provides a consolidated dashboard for users to see the status across all the pipelines. Below is a snapshot of the pipeline summary for the above 3 use cases.

Spinnaker Dashboard

Let’s now discuss how you can set up the ReleaseIQ system to allow you to run the above use cases.

ReleaseIQ Settings

In ReleaseIQ you can configure the Spinnaker tools in the Settings Screen. In the Deployment section of Settings you configure Spinnaker.

Spinnaker Settings

Enter the name of the Spinnaker tool, choose the Tool Type as Spinnaker, enter the Tool URL & API Token credentials of your Spinnaker setup.

After saving you can see your Spinnaker tool on the right table with the status of integration connection in ReleaseIQ.

Embedding a Spinnaker Pipeline in the ReleaseIQ Composer

In the Pipeline screen you can embed your Spinnaker CD pipeline into a larger pipeline context.  After building CI pipeline, choose External Pipeline for CD. In the Tool Name dropdown you will see Spinnaker which was configured in the Settings page previously. Then select the appropriate configuration settings based on the Spinnaker CD pipeline. In the below example, ReleaseIQ provides the CI pipeline & then connects it to Spinnaker CD pipeline.

Spinnaker Pipeline

Running a Pipeline with an Embedded Spinnaker Pipeline

In the ReleaseIQ UI you can see the last execution of the pipeline. In the component filter choose the component and you will see the pipeline displayed graphically. All the stages and job information of the pipeline containing Spinnaker will be displayed along with the status of execution.  If the pipeline has failed the Spinnaker job will be highlighted in red.

Spinnaker Execution

Logs for the Complete Pipeline

You can explore the  logs of each job in the Spinnaker pipeline.. When you select the completed (Success/Failed) Job of Spinnaker you can see the full logs.

Spinnaker Logs

This blog on Spinnaker integration with the ReleaseIQ platform shows how a DevOps team that uses Spinnaker for deployment can up level their CI/CD pipeline to integrate other best of breed tools. There is no reason to have both a highly automated deployment pipeline disconnected from a highly functional CI front end.  Adding continuous test to the middle only serves to create that truly best of breed integration.   No need to build a “leaky” pipeline.  ReleaseIQ enables multiple teams to gain the value of that unified orchestration, visibility and insights for troubleshooting.