Code Monkey home page Code Monkey logo

container-pipelines's Introduction

Container Pipelines

Let's get the ball rolling on some Container-driven CI & CD

Catalog

The following is a list of the pipeline samples available in this repository:

  • Basic Tomcat - Builds a Java Application like Ticket Monster and deploys it to Tomcat
  • Basic Spring Boot - Builds a Spring Boot application and deploys using an Embedded Servlet jar file
  • Blue Green Spring Boot - Build a Spring Boot application and deploys it using a blue-green deployment
  • Secure Spring Boot - Build a Spring Boot app and deploy with a pipeline that includes code coverage reports, dependency scanning, sonarqube analysis
  • Cross Cluster Promotion Pipeline - A declarative syntax pipeline that demonstrates promoting a microservice between clusters (i.e. a Non-Production to a Production cluster)

Makeup of a "Pipeline"

We understand that everyone's definition of a pipeline is a little (maybe a lot) different. Let's talk about what WE mean.

In this context, a pipeline is defined as all of the technical collateral required to take application source code and get it deployed through it's relevant lifecycle environments on an OpenShift cluster (or multiple clusters).

A few guiding principles for a pipeline quickstart in this repo:

  • Everything as code. A pipeline should require as few commands as possible to deploy (We recommend an openshift-applier compatible inventory)
  • Use OpenShift Features. The intention of these quickstarts is to showcase how OpenShift can be used to make pipeline development and management simpler. Use of features like slave pods, webhooks, source to image and the JenkinsPipelineStrategy is highly desired where possible.
  • Sharing is Caring. If there are things that can be common to multiple pipelines (templates, builder images, etc.), let's refactor to make them shared.

Typically the things required to build a pipeline sample include:

  • Project definitions (each representing a lifecycle environment)
  • A Jenkins Master
  • A jenkinsfile
  • A build template that includes all things necessary to get the source code built into a container image. This means:
    • A JenkinsPipelineStrategy buildConfig, which is used to inject the pipeline into Jenkins automatically
    • A Source strategy binary buildConfig, which is used to build the container image
  • A deployment template that includes all the necessary objects to run the application in an environment. At a minimum:
    • A DeploymentConfig definition
    • A Service definition
  • it might also include:
    • Routes
    • Secrets
    • ConfigMaps
    • StatefulSets
    • etc.

See our basic spring boot example for a very simple reference architecture.

Automated Deployments

These pipeline quickstarts include an Ansible inventory through which they can be automatically deployed and managed using the OpenShift Applier role.

Optional: Use a container that contains ansible

So you don't have to install ansible on your machine. Just type oc run -i -t tool-box-test --image=quay.io/redhat-cop/tool-box --rm bash. More into on the toolbox container can be found at https://github.com/redhat-cop/containers-quickstarts/tree/master/tool-box.

container-pipelines's People

Contributors

alberttwong avatar alyibrahim avatar bparry02 avatar charlbrink avatar cpeters avatar davgordo avatar etsauer avatar garethahealy avatar gautric avatar gl4di4torrr avatar hhellbusch avatar itewk avatar jaredburck avatar malacourse avatar mluyo3414 avatar pabrahamsson avatar pcarney8 avatar raffaelespazzoli avatar rcarrata avatar sabre1041 avatar schen1 avatar sherl0cks avatar siliconjesus avatar syvanen avatar tinexw avatar tylerauerbeck avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.