A sample Spring-based application
Find a file
2024-06-28 17:45:46 +02:00
.devcontainer Latest Java version 2023-05-09 10:35:25 +01:00
.github/workflows Bump actions version to latest one (checkout * setup-java) 2024-01-23 12:22:42 +00:00
.mvn/wrapper Update dependency 2023-11-26 09:08:45 +00:00
config/checksyle Add checkstyle plugin with example style guides 2024-04-28 13:37:25 +02:00
gradle/wrapper Bump gradle from 8.4 to 8.6 2024-02-29 14:35:20 +00:00
metrics Add Prometheus JMX exporter 2024-06-14 11:44:08 +02:00
Notes Capstone changes README 2024-06-28 17:45:46 +02:00
src new stuff 2024-04-07 11:30:47 +02:00
.dockerignore Rest docker init files 2024-04-16 17:24:26 +02:00
.editorconfig Add Gradle files indentation to .editorconfig 2024-02-20 17:14:43 +00:00
.gitattributes Gradle wrapper files should have correct line endings 2024-02-29 14:35:20 +00:00
.gitignore .gitignore update 2024-04-11 12:03:21 +02:00
.gitpod.yml Docker init 2024-04-16 17:23:16 +02:00
build.gradle Fixup in syntax 2024-04-28 13:44:32 +02:00
compose.yaml Docker compose assesment 2024-04-17 13:38:59 +02:00
docker-compose-orginal.yml Docker init 2024-04-16 17:23:16 +02:00
Dockerfile Parameter fix (spring profiles) 2024-06-28 16:37:10 +02:00
Dockerfile-docker-init Rest docker init files 2024-04-16 17:24:26 +02:00
gradlew Update dependency 2023-11-26 09:08:45 +00:00
gradlew.bat Bump gradle from 8.4 to 8.6 2024-02-29 14:35:20 +00:00
Jenkinsfile Update conditions in pipeline - MR pipeline when "changerequest"; Main when "branch main" 2024-05-18 10:50:30 +02:00
LICENSE.txt Add license file 2021-10-05 16:49:36 +01:00
mvnw Upgrade for Spring Boot 3.1 (#1253) 2023-05-26 18:56:00 +01:00
mvnw.cmd Upgrade for Spring Boot 3.1 (#1253) 2023-05-26 18:56:00 +01:00
new_important_feature.txt Even more text 2024-05-18 10:56:45 +02:00
pom.xml [maven-release-plugin] prepare for next development iteration 2024-05-02 18:24:32 +02:00
prepare_aws_enviroment.sh Fixup: Tags for internet gateway added at creation, changed reads order, fixed security group id fetch 2024-05-21 14:46:53 +02:00
readme.md README.md update 2024-05-21 14:53:24 +02:00
remove_aws_enviroment.sh Fixup of order in removing VPC 2024-05-22 16:31:25 +02:00
run_container_on_EC2.sh Minor read prompt fix 2024-05-21 13:19:29 +02:00
send_image_to_aws.sh Comm update 2024-05-18 09:53:05 +02:00
settings.gradle Make build work with Gradle 2021-12-16 11:25:09 +00:00

DevOps excercises

This repository contains sample spring-boot app - spring-petclinic. It is a starting point for excercises with:

  • Gradle/Maven - build tools
  • Nexus - artifact management, private repositories
  • Docker - containerisation
  • Jenkins - CI + CD
  • AWS - cloud

Build tools

  1. Getting familiar with wrappers
  2. Setting up with build.gradle/pom.xml
  3. Getting familiar with test/build/package/checkstyle/install/cleanup processes
  4. Adding source control management (SCM)
  5. Versioning with release plugin
  6. Plugin management
  7. Custom jobs (Gradle)
  8. Adding custom repositories

Nexus

  1. Setting up proxy and private repositories
  2. Releasing artifacts to private repository
  3. Integration with maven via Nexus Repository Maven Plugin

Docker

  1. Containers vs VM
  2. How container works
  3. Dockerfile and its (best practices)[https://docs.docker.com/develop/develop-images/dockerfile_best-practices/]
  4. Multi-stage builds
  5. Usage in (local development)[https://docs.docker.com/language/java/develop/]
  6. (How to make images smaller)[https://learnk8s.io/blog/smaller-docker-images] - distroless/slim base images + multi-stage + less layers
  7. (Vulnerability scanning)[https://docs.docker.com/scout/]
  8. Basics of docker compose

Jenkins

  1. Core principals of CI/CD
  2. Credentials management
  3. Plugins
  4. Distributed builds using agents
  5. Integrate source code management, build tools, and test reports in Jenkins. (>Tools)
  6. Manage builds
  7. Enviroment variables and parametrised builds
  8. Integration with docker
  9. Creating basic pipeline

AWS

  1. Console + CLI operations
  2. Credential management for CLI
  3. Creation and usage of basic components: S3, EC2, VPC, ECR, Security Groups, IAM.
  4. Some automation with bash scripts

Note: run scripts using source command, eg. source prepare_aws_enviroment.sh