Difference between revisions of "Continuous Integration"
Line 157: | Line 157: | ||
* Automated Jenkins Configuration via (Jelastic) Cloud Scripting Add-On: http://dzone.com/articles/automated-jenkins-configuration-via-cloud-scriptin | * Automated Jenkins Configuration via (Jelastic) Cloud Scripting Add-On: http://dzone.com/articles/automated-jenkins-configuration-via-cloud-scriptin | ||
* Continuous Delivery with ZeroDownTime (ZDT) Deployment for PHP Applications: http://dzone.com/articles/continuous-delivery-with-zerodowntime-zdt-deployme | * Continuous Delivery with ZeroDownTime (ZDT) Deployment for PHP Applications: http://dzone.com/articles/continuous-delivery-with-zerodowntime-zdt-deployme | ||
+ | * Docker Container Delivery vs Traditional App Delivery: http://dzone.com/articles/docker-container-delivery-vs-traditional-app-deliv | ||
Revision as of 19:40, 25 September 2015
Continuous Integration (commonly abbreviated CI) is the process of deploying, distributing, testing, updating, managing and monitoring versions of code running as a cohesive system.
Contents
Continuous Delivery
Continuous Delivery (CD) is a software engineering approach in which teams keep producing valuable software in short cycles and ensure that the software can be reliably released at any time. It is used in software development to automate and improve the process of software delivery. Techniques such as Automated Testing and Continuous Integration (CI) allow software to be developed to a high standard and easily packaged and deployed to test environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead. CD builds on CI by adding the regular deployments to production as part of the process, however CD is not a requirement of CI. CD as a software development technique was one of the assumptions of "extreme programming", but at an enterprise level has developed into a discipline of its own, with job descriptions for roles such as "Buildmaster" calling for CD skills as mandatory.
- Visualizations of Continuous Delivery: http://continuousdelivery.com/2014/02/visualizations-of-continuous-delivery/
- Continuous Delivery - Reliable Software Releases through Build, Test, and Deployment Automation: http://www.amazon.com/dp/0321601912?tag=contindelive-20
Containers
Containers in software engineering & deployment are like Intermodal Containers (i.e. ocean/sea shipping freight containers that can be lifted and stacked on top of one another safely & securely on a Boat, while also able to be pulled by Trucks or Trains due to adherance to particular standards) invented to simplify global trade, only, rather than hold physical objects, these Containers are designed to keep applications and their runtime components together. They accomplish this by combining lightweight application isolation with an "image"-based deployment method, providing autonomy for applications by packaging the apps with the libraries and other binaries on which they depend. This avoids conflicts between apps that otherwise rely on key components of the underlying host operating system.
- wikipedia: Containerization
- wikipedia: Intermodal container
- wikipedia: Intermodal freight transport
- wikipedia: Container ship
- Linux Containers: https://www.redhat.com/en/insights/containers
- The OS behind the curtain: http://www.redhat.com/en/about/blog/os-behind-curtain
- OPEN CONTAINER PROJECT: http://www.opencontainers.org/[1][2][3][4]
Configuration
ITIM, ITIL, ITSM
Tools
- 10 Devops Tools for Infrastructure Automation: http://devopscube.com/devops-tools-for-infrastructure-automation/
- wikipedia: Comparison of continuous integration software
Docker
Docker is essentially a Continuous Integration & Deployment (Delivery) solution designed for the Cloud and Distributed Systems. It differs from standard Virtualization and Provisioning solutions in that each virtualized application includes not only the application - which may be only 10s of MB - and the necessary binaries and libraries, but also an entire guest operating system - which may weigh 10s of GB; however, in Docker, the Docker Engine container comprises just the application and its dependencies. It runs as an isolated process in userspace on the host operating system, sharing the kernel with other containers. Thus, it enjoys the resource isolation and allocation benefits of VMs but is much more portable and efficient.
- Docker: https://www.docker.com | HUB (Build, Ship and Run Any App, Anywhere)[5][6]
- Introducing Docker to a Java developer: http://www.drissamri.be/blog/continuous-delivery/introducing-docker-java-developer/
- Linter for Dockerfile: https://access.redhat.com/labsinfo/linterfordockerfile (verify Docker file syntax)
- Docker - Supported installations: https://docs.docker.com/installation/
- Overview of Docker Compose: https://docs.docker.com/compose/
CI
Travis CI
- Travis CI: https://travis-ci.org/ (Cloud-hosted Continuous Integration Software-As-A-Service; tight coupling & integration to GitHub)
Hudson
- Hudson - Extensible continuous integration server: http://hudson-ci.org/[12]
- Starting and Accessing Hudson: http://wiki.hudson-ci.org/display/HUDSON/Starting+and+Accessing+Hudson[13]
- Setting up Hudson for small Teams: http://blog.mgm-tp.com/2010/04/hudson-continuous-integration-part1/
- Building a maven2 project via Hudson: http://wiki.hudson-ci.org/display/HUDSON/Building+a+maven2+project
- Building a free-form software project: http://wiki.hudson-ci.org/display/HUDSON/Building+a+software+project
Jenkins
Jenkins evolved from the creator (and much of the core team) of the Hudson project/community after the Oracle acquisition of Java. It is considered to be the next generation of Hudson, despite the fact that a faction of the original team stuck with Hudson or became Oracle employees and continue to support Hudson day-to-day. That said, Jenkins is quickly supplanting its parent project, with quicker development, more plugins and becoming recognized as the de facto Continuous Integration tool/service, especially for Enterprise Java projects.
- JENKINS -- Next-generation fork of Hudson: http://jenkins-ci.org/ | DEMO - Apache build processes (all managed by a single Jenkins instance)
- Starting Jenkins: https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins
Continuum
- Apache Continuum: http://continuum.apache.org/
CruiseControl
- CruiseControl: http://cruisecontrol.sourceforge.net/
jRebel
- jRebel: http://zeroturnaround.com/software/jrebel/ | My jRebel (skip the build/redeploy process; JRebel reloads changes to Java classes, resources, and over 90 frameworks)[14]
CD
- Docker: http://www.docker.com
Configuration Management
- Chef: [15]
- Puppet: http://puppetlabs.com/ (Automated Provisioning for Virtual environments and infrastructure, such as VMware vSphere)[16]
Resources
- OpenContainer project: http://www.opencontainers.org/
Tutorials
- Change Jenkins or Hudson HTTP port number: http://igordcard.blogspot.ca/2012/03/change-jenkins-or-hudson-http-port.html
- Continuous Deployment at IMVU - Doing the impossible fifty times a day: http://timothyfitz.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/
- Etsy's approach to Continous Deployment: http://www.slideshare.net/beamrider9/continuous-deployment-at-etsy-a-tale-of-two-approaches
- Etsy - Continuous Experimentation: http://www.slideshare.net/danmckinley/design-for-continuous-experimentation
- Mule ESB in Docker: http://java.dzone.com/articles/mule-esb-docker
- Automated Jenkins Configuration via (Jelastic) Cloud Scripting Add-On: http://dzone.com/articles/automated-jenkins-configuration-via-cloud-scriptin?oid=devops
- Getting Started with Docker, Google Container Engine and Logentries: http://dzone.com/articles/getting-started-with-docker-google-container-engin
- Orchestrate Containers for Development with Docker Compose: http://dzone.com/articles/orchestrate-containers-for-development-with-docker
External Links
- wikipedia: Continuous Integration
- wikipedia: Nightly build
- wikipedia: Continuous delivery
- wikipedia: System configuration
- wikipedia: Configuration management
- wikipedia: Configuration Management (ITSM) (ITSM)
- wikipedia: Information technology management (ITIM)
- wikipedia: Information Technology Infrastructure Library (ITIL)
- wikipedia: Infrastructure asset management (deals with Physical Infrastructure, i.e. Roads, Bridges, Power Centers, etc...)
- wikipedia: Infrastructure Lifecycle Management (ILM)
- wikipedia: Data center infrastructure management (DCIM)
- wikipedia: Cloud Infrastructure Management Interface (CIMI)
- wikipedia: Remote infrastructure management (RIM)
- wikipedia: Configuration item (CI)
- wikipedia: Converged infrastructure
- wikipedia: Change control
- wikipedia: Changelog
- wikipedia: Release notes
- wikipedia: Bill of materials
- wikipedia: Bill of material based on characteristics
- wikipedia: Software Bill of Materials
- wikipedia: README
- Kohsuke Kawaguchi (Hudson founder) Talks Hudson and its new CI service/support company InfraDNA: http://java.dzone.com/articles/kohsuke-kawaguchi-talks-hudson
- Continuous Integration With Hudson: http://www.slideshare.net/carlo.bonamico/continuous-integration-with-hudson
- Performance Tests with Jmeter, Maven and Hudson: http://www.theserverlabs.com/blog/2009/04/23/performance-tests-with-jmeter-maven-and-hudson/
- Breaking the Build is Not a Crime: http://www.dzone.com/links/r/breaking_the_build_is_not_a_crime.html
- This is how Facebook develops and deploys software. Should you care?: http://java.dzone.com/articles/how-facebook-develops-and
- Scaling Your Application Efficiently – Horizontal or Vertical?: http://blog.appdynamics.com/devops/scaling-application-efficiently-horizontal-vertical/
- HP is trying to patent Continuous Delivery – here is how you can help block this madness: http://blog.matthewskelton.net/2015/03/06/hp-is-trying-to-patent-continuous-delivery-here-is-how-you-can-help-block-this-madness/
- Automated Jenkins Configuration via (Jelastic) Cloud Scripting Add-On: http://dzone.com/articles/automated-jenkins-configuration-via-cloud-scriptin
- Continuous Delivery with ZeroDownTime (ZDT) Deployment for PHP Applications: http://dzone.com/articles/continuous-delivery-with-zerodowntime-zdt-deployme
- Docker Container Delivery vs Traditional App Delivery: http://dzone.com/articles/docker-container-delivery-vs-traditional-app-deliv
References
- ↑ Open Container Project -- How cloud giants are joining forces against lock-in and fragmentation: http://www.zdnet.com/article/open-container-project-how-cloud-giants-are-joining-forces-against-lock-in-and-fragmentation/
- ↑ What’s in a container? You don’t know, and that’s a problem: http://venturebeat.com/2014/12/16/whats-in-a-container-you-dont-know-and-thats-a-problem/
- ↑ : http://opensource.com/business/15/6/announcing-open-container-project
- ↑ Enterprise Containers 101 with Red Hat platform architect, Langdon White: http://summitblog.redhat.com/2015/06/25/enterprise-containers-101-with-red-hat-platform-architect-langdon-white/
- ↑ Docker Enterprise Adoption (INFOGRAPHIC): http://vmblog.com/archive/2015/02/10/infographic-state-of-containers-2015-docker-adoption-survey.aspx#.VPXXYWM3dAs
- ↑ Docker and Its Challenges for Enterprise IT: http://java.dzone.com/articles/docker-and-its-challenges
- ↑ Docker – Clean Up After Yourself!: http://java.dzone.com/articles/docker-clean-after-yourself
- ↑ Do I Need OpenStack If I Use Docker?: http://java.dzone.com/articles/do-i-need-openstack-if-i-use
- ↑ 5 Key Benefits of Docker -- CI, Version Control, Portability, Isolation and Security: http://java.dzone.com/articles/5-key-benefits-docker-ci
- ↑ Docker Security - More than Meets the Eye: http://java.dzone.com/articles/docker-security-more-meets-eye (lots of security problems with user-contributed and even sample Docker container images)
- ↑ Docker and IBM Bluemix Containers Reference Sheet: http://dzone.com/articles/docker-and-ibm-bluemix-containers-reference-sheet
- ↑ Hudson downloads: http://hudson-ci.org/download/
- ↑ Local Hudson deployment: http://localhost:8805 (typical deploy location)
- ↑ New version of JRebel for NetBeans Plugin 6.1.0: http://benkiew.wordpress.com/2015/03/03/new-version-of-jrebel-for-netbeans-plugin-6-1-0/
- ↑ wikipedia: Chef (software)
- ↑ wikipedia: Puppet (software)