1
Introduction
- Different types of environments: Development, acceptance, production.
- Configuration management: System and application.
- Role of application containers: Docker.
- Configuration centralization: puppet, Ansible.
- Scaling up deployments.
- Setting up a continuous integration platform.
2
Version management
- Features.
- Different source managers: Centralized or distributed.
- Problems integrating changes.
- The role of branches and tags.
Hands-on work
Handling a Git repository.
3
Automating builds
- What is a software build?
- Builds: Project lifecycle.
- Build tools with Maven.
- Plug-ins, profiles, and modules.
Hands-on work
Setting up a simple project build (Maven).
4
Repository management
- Roles of repository managers.
- Types of repositories: public, internal.
- Deliverable management (artifacts): releases, snapshots, deployment.
- Organizing repositories: Development, testing, production.
- Integrating repository managers with build tools and task management tools.
- Example solutions: Nexus, Artifactory, etc.
Hands-on work
Publishing artifacts in Nexus.
5
Automating tests.
- What tests, and to do what?
- Testing environments.
- Overview of testing tools.
- Implementing and automating tests.
Hands-on work
Setting up automated tests with JUnit.
6
Continuous integration server
- Role of the continuous integration server.
- Major features.
- Job management.
- Dependency between jobs.
- Servers: Hudson/Jenkins, CruiseControle, Bamboo, etc.
Hands-on work
Configuring the project on a Jenkins continuous integration server.
7
Setting up metrics
- Generating reports.
- Analysis and reporting tools (PMD, Findbugs, Cobertura, Emma, Checkstyle, etc.).
- Publishing results.
Hands-on work
Setting up metric tools.
8
Feedback management
- Managing a complete cycle.
- Traceability of changes.
Hands-on work
Using Sonar.