DevOps Project Spec
DevOps Project Spec
The aim of the project is to create a DevOps pipeline for a web(Java, nodeJS, Angular, etc)
application.
An application is required for testing the pipeline, however this application should
respect the following requirements:
1. The application used in the project must respect the rules of the 12-Factor
methodology for easy deployment
2. The application must contain unit tests and integration tests.
3. The UI must display the exact version of the app
4. The application must provide CRUD operation and use a database
5. You must use GIT to store and version your application's source code.
Required features
1. Dockerization of the application: the application must be deployed within docker
containers.
2. Use a reverse proxy that enables secure access to the application.
3. The application must contain a docker-compose file that allows the setup and
configuration of services, networks, volumes and other params in one command
4. Pipelines CI/CD: create and configure pipelines using Jenkins or Gitlab CI that rispects
the following requirements:
a. First pipeline:
i. Only triggered when a merge request is created
ii. Stage 1 Build: Compile and build the app
iii. Stage 2 Unit Test: to run the unit tests
iv. Stage 3 Sonar (Optional): use SonarQube to scan the code a generate
reports
v. Stage 4 Integration Test: to run the integration tests
b. Second pipeline:
i. Only triggered when code is merged into the Develop branch.
ii. Stage 1 Build: to compile and build the application
iii. Stage 2 Unit Test: to run the unit tests
iv. Sonar (Optional): use SonarQube to scan the code a generate reports
v. Stage 4 Integration Test: to run the integration tests
c. Third pipeline:
i. Only triggered when a branch with name release-* is created.
ii. Stage 1: Build docker images from the code(version must be the same as
the branch name) and push the image to a registry.
iii. Stage 2: to deploy the application using the docker images already
created
Optional features
1. Use Grafana / Prometheus to monitor the application.
2. Use ELK stack to extract logs, filter them and create useful dashboard.
3. Create Multi-node infrastructure to run the application locally.
Important informations:
1. The project is to be done in groups of 2 or 3.
2. The presentation should start with a diagram explaining the pipelines and the
deployment architecture.
3. The demo must be live:
a. A new feature is created on a new branch than a merge request is created which
triggers the first pipeline that will compile, build and test the code.
b. Once the code is merged on the Develop branch the second pipeline is triggered.
c. Finally create a new release branch, example release-1.0.0, and this should
trigger the final pipeline that builds the docker images and deploys the solution.
4. 15min for each team.
Good Luck 🙂