JAVAX-CIP
Implementing CI/CD in a Java project with optional tools
Description
DevOps and Continuous Delivery are a set of practices and processes designed to improve the efficiency and quality of software development.
DevOps is a way of working that brings together software design, development and operations. This approach is based on collaboration, communication and automation.
The objective of the training is to introduce the concepts of DevOps and Continuous Delivery. As a practical exercise, a pipeline will be created for a web-based Spring Boot Java project.
An interesting feature of the course is that the participant is free to choose which tool he/she wants to use for the practical task:
- Version Tracking: GitHub or GitLab
- Build tool: Maven or Gradle
- Containerization: Docker
- CI tool: Jenkins or GitLab
- Repository: Nexus or Artifactory
- Static code review: SonarQube
- Infrastructure as a code: Ansible
- Running environment: AWS EC2 or Kubernetes
- Monitoring: Prometheus and Graphana
- Tracing: Zipkin
- Logging: ElasticSearch/Fluentd/Kibana (EFK stack)
Outline
- DevOps basics
- Introduction to Continuous Integration and the problems it solves
- Introduction to Continuous Delivery and the problems it solves
- Introduction to Continuous Deployment
- Pipeline concepts
- Maven project architecture, wrapper, build lifecycle, phase, plugins and goals, dependency management
- Gradle project architecture, wrapper, tasks, dependency management
- Running unit tests, test coverage (Jacoco)
- Packaging
- Docker
- Nexus and Artifactory repository manager, proxy and hosted repositories, deploying Java artifacts and Docker images
- Integration tests
- Docker image creation, layers
- Docker Compose
- Running E2E UI tests with Selenium
- Running E2E API tests using Postman/Newman
- Static code analysis using SonarQube, test coverage, Quality Profile, Quality Gate, SonarLint
- DevSecOps basics
- Deploying to AWS EC2 using Ansible as a Linux service
- Deployment to Kubernetes environment
- Version management, trunk based development, feature flags, feature branching, branching strategies
- Jenkins architecture, pipeline (Jenkinsfile), stages, steps, cache, versioning, containerization, credentials, artifacts, parallel execution, manual step
- GitLab architecture, GitLab Runner, pipeline (.gitlab-ci.yml), cache, versioning, containerization, variables, artifacts, parallel execution, manual step
- Helm
- Telemetry
- Monitoring using Prometheus and Graphana
- Tracing using Zipkin
- Logging using ElasticSearch/Fluentd/Kibana (EFK stack)
Prerequisites
Secure operating system, command line and word processor use. Participation in development projects. No programming knowledge required.
As some of the course material is in English, a basic knowledge of English at document reading level is required. The training is in Hungarian, based on Hungarian slides.