Continuous Integration Workflow

Get Started. It's Free
or sign up with your email address
Continuous Integration Workflow by Mind Map: Continuous Integration Workflow

1. Use case

1.1. Developers

1.1.1. wrap test and build actions in docker

1.1.2. your applications work on any machine

1.1.3. run production-like environment locally

1.1.4. fast track your changes to production

1.2. Operations

1.2.1. build continuous delivery pipelines

1.2.2. automate test, build, release and deploy

1.2.3. set continuous delivery systems

1.2.4. infrastructure as code

1.3. architects

1.3.1. application agnostic methodology

1.3.2. run on any continuous delivery system

1.3.3. immutable infrastructure

1.3.4. infrastructure as code

2. prerequisites

2.1. Docker

2.1.1. Docker Engine

2.1.2. Docker Compose

2.2. Ansible

2.2.1. Configuration management

2.3. Application delivery

2.3.1. continuous integration

2.3.2. application testing

3. create the sample application

3.1. Sample application

3.1.1. Why a python sample application easy to develop develop from text editor functionality within minutes test driven Django REST RESTful services model driven web interface difficult to deploy dependency management packaging virtual environments

3.1.2. Django REST Framework web service Based up architecture Untitled front end interface back end interface differences

3.1.3. create the todobackend web service initial setup virtual environments creating models creating serializers serialization creating views views configuring routing routing test driving the application

3.2. unit tests

3.3. Integration tests

3.3.1. Unit tests vs Integration tests Untitled

3.3.2. configure integration tests settings configuration settings settings for different env change default settings layout Untitled

3.4. Acceptance tests

3.4.1. initial setup

3.4.2. writing acceptance tests

3.4.3. running acceptance tests

3.5. test the user interface

3.5.1. install the todobackend client

3.5.2. verify the user interface

3.6. summary

3.6.1. sample application how to configure how to run how to test

3.6.2. testing unit and integration tests acceptance tests using node.js manual testing

4. Unit/Integration testing using Docker

4.1. test stage

4.1.1. Unit and integration testing

4.1.2. use docker to wrap test runners e.g. maven, gradle (Java) e.g. ( python Django )

4.2. docker images

4.3. docker and docker compose building blocks

4.4. test workflow using Docker

4.4.1. Untitled

4.5. docker image hierarchy

4.5.1. base, release image Untitled

4.5.2. base, development, release image Untitled

4.5.3. organizational image Untitled

4.6. create a base image

4.6.1. establish application runtime environment

4.6.2. demo initial setup folder structure separate the base image choose parent image describe operating system packages establish/activate the virtual environment Untitled docker and the parent process (PID 1) build the base image

4.7. create a development image

4.7.1. add test and build dependencies

4.7.2. run tests

4.7.3. demo: create the development image build the development image folder structure rebuild the development image create application requirements files Untitled develop image review Untitled Untitled Untitled test the development image docker build context reduce testing time volume containers use different test settings connect to MySQL - Single Container connect to MySQL - Docker Host connect to MySQL - Multi Container

4.7.4. demo: create a multi-container env using docker compose docker compose file Untitled Untitled Untitled Untitled create a docker compose file running tests using docker compose Untitled solving how to wait for a dependent service to initialize Untitled Untitled

4.8. docker compose

4.8.1. create a complex test environment

4.8.2. orchestrate unit and integration tests

4.9. others

4.9.1. course folder structure Untitled

4.9.2. ansible playbook Untitled

4.9.3. test environment Untitled

4.10. summary

4.10.1. unit and integration test infrastructure base image development image running tests using docker

4.10.2. docker compose multi-container environment integration testing between multiple containers agent services to help orchestrate testing

5. Build artifacts using docker

5.1. build stage

5.1.1. application artifacts Python Wheels Java JAR files

5.1.2. must represent as tested application state

5.1.3. creates a deployable artifact

5.2. build workflow

5.2.1. Untitled

5.3. build stage

5.3.1. application artifact types source distribution vs built distribution Untitled

5.3.2. add package metadata to application package metadata Untitled Untitled Untitled

5.3.3. test and build consistency Untitled Untitled

5.3.4. build cache Untitled

5.3.5. create a builder service

5.3.6. build and publish python wheels build process Untitled publish application artifacts Untitled

5.4. summary

5.4.1. builds application artifacts

5.4.2. source vs built distributions

5.4.3. python wheels

5.4.4. builds using test environment

5.4.5. test and build consistency

5.4.6. publishes locally for later stages

6. create releases using Docker

6.1. release workflow

6.1.1. Untitled

6.2. serve the application

6.2.1. Untitled

6.2.2. Untitled

6.3. release stage

6.3.1. create application release settings Untitled

6.3.2. create a release image Untitled

6.3.3. describe the release environment release env design Untitled release env folder structure Untitled Untitled

6.3.4. test the release image release env issues Untitled bootstrap the application initialization tasks start the application review

6.3.5. demo: acceptance testing create the test service release environment design acceptance tests folder structure run acceptance tests publish the release image

6.4. workflow review

6.4.1. test environment Untitled

6.4.2. release environment Untitled

6.5. summary

6.5.1. create release image from application build artifacts

6.5.2. verifies application passes acceptance tests in a release environment

6.5.3. runs from a release environment

6.5.4. requires initialization tasks

6.5.5. release image ready to be published and deployed if all tests pass

7. Continuous delivery automation

7.1. test, build and release automation

7.1.1. GUN make build system

7.1.2. automate the workflow

7.2. demo

7.2.1. workflow automation strategy Untitled

7.2.2. why make? designed for the shell simple, imperative format popular installed by default on OS X packaged for all major Linux distributions

7.2.3. create a makefile makefile location Untitled

7.2.4. describe the workflow run docker compose Untitled

7.2.5. test the workflow

7.2.6. parameterizing the workflow docker compose default project naming Untitled

7.3. demo

7.3.1. create github repositories Untitled

7.3.2. create docker hub repositories Untitled

7.3.3. create automated builds

7.4. summary

7.4.1. continuous delivery automation make build system make test, make build, make release makefile variables

7.4.2. workflow infrastructure github docker hub automated image builds

8. Enhance the workflow

8.1. production ready

8.2. error / failure handling

8.3. tag publish

8.4. dangling images and volumes

8.4.1. Untitled

8.4.2. Untitled

8.5. improving user feedback

8.6. making the workflow self-contained

8.6.1. workflow system architecture Untitled

8.6.2. docker machine local environment Untitled

8.6.3. sharing files the problem of volume mapping Untitled sharing files from the docker client Untitled sharing files from the docker host Untitled sharing files using the docker remote API Untitled

8.7. ensure self containment

8.8. producing test reports

8.8.1. accessing test reports Untitled

8.9. handling errors

8.9.1. make error handling Untitled

8.9.2. docker compose error handling Untitled

8.9.3. docker compose strategy for short lived tasks Untitled

8.9.4. docker compose strategy if files are needed Untitled

8.10. ensuring consistency

8.10.1. Untitled

8.10.2. docker image caching Untitled

8.10.3. ensure docker images are up to date Untitled Untitled

8.10.4. build up to date docker images Untitled Untitled Untitled Untitled Untitled Untitled Untitled Untitled Untitled Untitled

8.10.5. docker image consistency Untitled

8.11. tagging the release image

8.11.1. logical tags Untitled Untitled

8.11.2. build tags Untitled

8.11.3. tagging strategy Untitled Untitled Untitled

8.12. publishing the release image

9. Continuous integration using Jenkins

9.1. Untitled

9.2. test, build and release using the pipeline plugin

9.3. jenkins in a container

9.4. configure and test our workflow

9.5. demo: setting up jenkins locally

9.5.1. create a jenkins image docker socket file on docker machine Untitled share the docker socket file Untitled persist jenkins data Untitled Untitled

9.5.2. configure the workflow

9.5.3. test the workflow

9.5.4. create a self-defined workflow Untitled

9.5.5. test failures

9.6. Untitled