mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-20 23:05:49 +00:00
A sample Spring-based application
.devcontainer | ||
.github/workflows | ||
.mvn/wrapper | ||
gradle/wrapper | ||
metrics | ||
Notes | ||
src | ||
.dockerignore | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitpod.yml | ||
build.gradle | ||
compose-test.yaml | ||
compose.yaml | ||
Dockerfile | ||
gradlew | ||
gradlew.bat | ||
Jenkinsfile | ||
LICENSE.txt | ||
mvnw | ||
mvnw.cmd | ||
pom.xml | ||
prepare_aws_enviroment.sh | ||
readme.md | ||
remove_aws_enviroment.sh | ||
run_container_on_EC2.sh | ||
send_image_to_aws.sh | ||
settings.gradle | ||
test.txt |
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
- Getting familiar with wrappers
- Setting up with build.gradle/pom.xml
- Getting familiar with test/build/package/checkstyle/install/cleanup processes
- Adding source control management (SCM)
- Versioning with release plugin
- Plugin management
- Custom jobs (Gradle)
- Adding custom repositories
Nexus
- Setting up proxy and private repositories
- Releasing artifacts to private repository
- Integration with maven via Nexus Repository Maven Plugin
Docker
- Containers vs VM
- How container works
- Dockerfile and its (best practices)[https://docs.docker.com/develop/develop-images/dockerfile_best-practices/]
- Multi-stage builds
- Usage in (local development)[https://docs.docker.com/language/java/develop/]
- (How to make images smaller)[https://learnk8s.io/blog/smaller-docker-images] - distroless/slim base images + multi-stage + less layers
- (Vulnerability scanning)[https://docs.docker.com/scout/]
- Basics of docker compose
Jenkins
- Core principals of CI/CD
- Credentials management
- Plugins
- Distributed builds using agents
- Integrate source code management, build tools, and test reports in Jenkins. (>Tools)
- Manage builds
- Enviroment variables and parametrised builds
- Integration with docker
- Creating basic pipeline
AWS
- Console + CLI operations
- Credential management for CLI
- Creation and usage of basic components: S3, EC2, VPC, ECR, Security Groups, IAM.
- Some automation with bash scripts
Note: run scripts using source
command, eg. source prepare_aws_enviroment.sh