Section 1 Bibliography

These online resources provide entry points to understanding the above topics:

http://www.martinfowler.com

  • Continuous Integration

    [...] projects with Continuous Integration tend to have dramatically less bugs, both in production and in process. However I should stress that the degree of this benefit is directly tied to how good your test suite is. You should find that it's not too difficult to build a test suite that makes a noticeable difference. Usually, however, it takes a while before a team really gets to the low level of bugs that they have the potential to reach. Getting there means constantly working on and improving your tests. If you have continuous integration, it removes one of the biggest barriers to frequent deployment. Frequent deployment is valuable because it allows your users to get new features more rapidly, to give more rapid feedback on those features, and generally become more collaborative in the development cycle. This helps break down the barriers between customers and development - barriers which I believe are the biggest barriers to successful software development.

  • Continuous Delivery

    You achieve continuous delivery by continuously integrating the software done by the development team, building executables, and running automated tests on those executables to detect problems. Furthermore you push the executables into increasingly production-like environments to ensure the software will work in production. To do this you use a Deployment Pipeline. The key test is that a business sponsor could request that the current development version of the software can be deployed into production at a moment's notice - and nobody would bat an eyelid, let alone panic.

  • Deployment Pipeline

    A deployment pipeline is a way to deal with this by breaking up your build into stages. Each stage provides increasing confidence, usually at the cost of extra time. Early stages can find most problems yielding faster feedback, while later stages provide slower and more through probing. Deployment pipelines are a central part of Continuous Delivery.

http://www.informit.com

Creation of a new product

Deployment pipeline Trade-offs in the deployment pipeline

We must also automate deployment to testing, staging, and production environments to remove these manually intensive, error-prone steps. For many systems, other forms of testing and so other stages in the release process are also needed, but the subset that is common to all projects is as follows.

  • The commit stage asserts that the system works at the technical level. It compiles, passes a suite of (primarily unit-level) automated tests, and runs code analysis.
  • Automated acceptance test stages assert that the system works at the functional and nonfunctional level, that behaviorally it meets the needs of its users and the specifications of the customer.
  • Manual test stages assert that the system is usable and fulfills its requirements, detect any defects not caught by automated tests, and verify that it provides value to its users. These stages might typically include exploratory testing environments, integration environments, and UAT (user acceptance testing).
  • Release stage delivers the system to users, either as packaged software or by deploying it into a production or staging environment (a staging environment is a testing environment identical to the production environment).

We refer to these stages, and any additional ones that may be required to model your process for delivering software, as a deployment pipeline.

This is not intended to imply that there is no human interaction with the system through this release process; rather, it ensures that error-prone and complex steps are automated, reliable, and repeatable in execution.

Basic deployment pipeline

http://devops.com

A typical CD pipeline will include the following stages: build automation and continuous integration; test automation; and deployment automation. The deployment pipeline is supported by platform provisioning and system configuration management, which allow teams to create, maintain and tear down complete environments automatically or at the push of a button.

https://jaxenter.com

  • Implementing Continuous Delivery

    A key aspect of continuous delivery is the ability to automate your configuration. This configuration-as-code DevOps practice ensures consistency in your CD process, clearing away problems that could result from rebuilding your configuration – potentially inconsistently – every time you want to push a release to production.

    • Define a process
    • Ensure a blameless culture
    • Set metrics and measure your success
    • Adopt configuration as code (Ansible+Docker?)
    • Orchestrating a process

http://www.infoq.com/articles/

  • Orchestrating Pipelines Jenkins example project’s delivery pipeline

    Setting up Continuous Delivery pipelines in Jenkins that are secure, efficient, and easy to use and manage can quickly become challenging. We've discussed important prerequisites, made a number of recommendations and introduced a set of freely available plugins which can make the process a whole lot easier. Hopefully, you are now in a better position to identify whether Jenkins is the right orchestrator for your current process, to build pipelines painlessly and to quickly start making life better for your teams and delivering business value to your customers!

http://technologyconversations.com

  • Continuous Delivery Introduction to Concepts and Tools

    Continuous Deployment means that every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day. Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment. In order to do Continuous Deployment you must be doing Continuous Delivery. Continuous Integration usually refers to integrating, building, and testing code within the development environment. Continuous Delivery builds on this, dealing with the final stages required for production deployment.

https://en.wikipedia.org

  • Continuous delivery
  • Artifact software development
  • Build automation
  • Distributed version control
  • List of version control software
  • Smoke testing (software)

https://www.safaribooksonline.com

  • Jenkins the Definitive Guide

https://wiki.jenkins-ci.org

Contains a table of terms used in Jenkins..

Just a goofy page about communicating build status with lamps

I set up a test slave node in one of our Test VMs

  • Remoting issue
  • Remote access API
  • Matrix based security
  • Securing Jenkins
  • Quick and Simple Security

http://docs.openstack.org

  • Jenkins job builder

https://www.simple-talk.com

  • Branching and merging

http://stackoverflow.com

  • What is unit test ,integration test, smoke test, regression test?

https://www.cloudbees.com

  • Notifications

http://searchsecurity.techtarget.com/

  • Authentication authorization and accounting