From b8132b2a68fc73766923ed12ff5880b9f64592fd Mon Sep 17 00:00:00 2001 From: Josral04 Date: Sun, 16 Mar 2025 20:02:14 -0600 Subject: [PATCH 1/7] Add files via upload Read Me File --- Description.md | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 Description.md diff --git a/Description.md b/Description.md new file mode 100644 index 00000000..1afc653a --- /dev/null +++ b/Description.md @@ -0,0 +1,108 @@ +# ENSF 400 - Winter 2025 - Course Project + +## Project Overview + +In this project, you will work based on a software project by incorporating/extending a complete CI/CD (Continuous Integration/Continuous Deployment) pipeline. This is based on an open-source sample application: https://github.com/7ep/demo + +This project can also be any application that requires the project of build, test, and deployment. +You will leverage GitHub for source control, Docker for containerizing your application, and a CI/CD tool (Jenkins) to automate the build, testing, and verification process. The goal is to validate every code change automatically through container builds, unit tests, code quality checks, and end-to-end functional tests. + + +## Project Requirements + +By the end of this project, your group must deliver the following: + +1. Manage your project on GitHub and follow proper Git workflows (branching, pull requests, code reviews). Document the process of how you use Git workflows to collaborate with your team members. + +1. Containerize your application for builds and deployments. Upload and download your container images to a public or private image repository (e.g., Docker Hub or GitHub Container Registry). Ensure a container image is built with unique build tag(s) matching the triggering commit from any branch. + +1. Set up an automated CI/CD with Jenkins in a Codespace environment. Configure the pipeline to trigger upon pull requests merging changes into the main branch. + +1. Document the CI/CD process and provide clear instructions on replicating your environment. Submit a video demo at the end of the project. + +### Existing Pipelines +You will also demonstrate the delivery of the following process and artifacts that come with the project. + +1. Run static analysis quality-gating using SonarQube +1. Performance testing with Jmeter +1. Security analysis with OWASP's "DependencyCheck" +1. Build Javadocs + + +## Evaluation Criteria + +Your project will be assessed on the following criteria: + +### GitHub Repository & Git Workflow (15%) +1. Project on GitHub in a public repository with all team members participating in the development and maintenance of the project (5%). +1. Demonstrate the process practicing Git workflows (branching, pull requests, code reviews) (10%). + +### Containerization (20%) +1. Dockerfile to containerize the project (5%). +1. Use of container image repository to upload and download images (5%). +1. Effective tagging mechanism for each building matching the commits/branches/pull requests (10%). + +### CI/CD Pipeline Automation (40%) +1. Jenkins integration with GitHub in Codespace (10%). +1. Triggering automated checks upon pull request to the main branch (10%). +1. Deployment process to automatically deploy the application in the Codespace environment upon a build (10%). +1. Be able to run items 5-8 in **Existing Pipelines** (10%). + +### Testing & Code Quality (10%) +1. Generate test coverage reports upon each automated build (5%). +1. Generate code quality report using SonarQube reports upon each automated build (5%). + +### Documentation & Demo (15%) +1. Clarity and completeness of README and other documentation. The documentation must demonstrate the team’s collaboration process (5%). +1. Demonstration video with a length not exceeding 10 minutes, showing a clear understanding of the pipeline and its benefits. The documentation must demonstrate the team’s collaboration process (10%). + +_______________________________________________________________________________________________________________________________________________________________________________________________________________ + +# Organization of our ENSF 400 CI/CD Project + +## Team Members +- Josral Frederick UCID: 30195360 +- Muhammad Aun Raza UCID: 30172183 +- Natnael Tekli UCID: 30171167 +- Jaden Chow UCID: 30173676 + + +## Project Description +The main objective in this project is to create software that incorporates/extends a complete CI/CD +(Continuous Integration/Continuous Deployment) pipeline. + +## Git Workflow +- **Branching Strategy**: +We will use a Feature Branching Strategy, where each new feature or bug fix is developed in its own branch. +- The main branch will be called ‘main' +- Development branches will follow the naming convention ‘feature/[feature-name]’ for features +- Finally ‘bugfix/[bug-name]’ for bug fixes. + +- **Pull Requests**: + Upon completion of a feature, developers will create a pull request (PR) from their `feature` branch + to the `main' branch. Each PR will contain a description of the changes made and link to any relevant issues. + The PR will be reviewed by at least one team member before merging. + +- **Code Reviews**: + The code review will take place within the Github interface. Each PR will be reviewed by atleast one team member before being merged to the main branch. The reviewer will + make sure the PR is in accordance with the project requirements and necessary discussions will take place within the request. + +## Containerization +- **Dockerfile**: + A Dockerfile is a set of instructions to automate the creation of a Docker Image. The Dockerfile helps containerize the application, ensuring it is built, tested and deployed. + This is done by packaging the application into a container, works with Kubernetes and enables automation in the CI/CD pipeline. + +- **Image Repository**: Instructions for pushing/pulling images and how tagging works. +Container images will be pushed to **Docker Hub**. To push an image, use the following command: + ```bash + docker push /task-manager-app: + +## CI/CD Setup +- **Jenkins Configuration**: Explain the integration with GitHub and how the pipeline is set up. + +## Running the Project +Instructions for running the application locally, including prerequisites. + +## Testing +- **Testing Framework**: Briefly describe tools used for testing. +- **Code Quality Reports**: Link to generated SonarQube reports. From 61d5faea1e35d6a6fe9fb72841d268172c08934d Mon Sep 17 00:00:00 2001 From: Jaden Chow Date: Sun, 16 Mar 2025 20:04:11 -0600 Subject: [PATCH 2/7] Fixed BDD_video.mp4 bug fix with change committed --- docs/BDD_video.mp4 | Bin 12191007 -> 12191004 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/BDD_video.mp4 b/docs/BDD_video.mp4 index 27c4646cf01956f75756fca4569d3aedbc1417d6..571239ede95cfe30e98aab42f099e7dc7eba9064 100644 GIT binary patch delta 665 zcmWN=*;$oTM0_k9wjMRd$n&N#bVm6W(xQ701wha zD-ZE7Q+b4GOlJl&d6dVP#cbyAI8X2-b9st+Jk2va%X2)>d|qGyFY*!#S;S(Nu#{yi z=Ve}D1+TKwu$ooQ5WCw|Ww>3{|GeyurD|T|b=L3(Ygxy7-sCOb<{dWhF7L6C_u0f| zK41%5`H+wJm`~Wor?l}I+xeVg2Vc<6m+WL0yV=8D_VE?_`I>L|mhbqU1N^{24snGpG55U-^yS`GY?>!(W`GgTFb)Kb+?Rom`~BzlLMUY=~b5bj@Sp delta 671 zcmWO1*)|ja0Eh827)vOHqD7I&(qgGbo61fhlvF~9HcM2tGV*7bN~J7ig!UMfqG_&r z2Y2%Z-OM}mUHs1ZZaLbXww z6sB-())sBmHbrQ=b|_L&+No&mQjB7?TXBk4f)ceyd$mvdm84{)ET@{BhCqwSnTi8A zh(ji!EK`F{`4(Cyh3#hf5QbsJV?4oAjNlob;{`_X60b0ZaZF$m zuki*`uwfc+F@ssm;T_)N13uytKI03%Vjc^yV-er*9Y3&ypZJAktl&2s_~Wp Date: Sun, 16 Mar 2025 20:08:01 -0600 Subject: [PATCH 3/7] Update Description.md Remove Testing --- Description.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/Description.md b/Description.md index 1afc653a..b651971e 100644 --- a/Description.md +++ b/Description.md @@ -103,6 +103,3 @@ Container images will be pushed to **Docker Hub**. To push an image, use the fol ## Running the Project Instructions for running the application locally, including prerequisites. -## Testing -- **Testing Framework**: Briefly describe tools used for testing. -- **Code Quality Reports**: Link to generated SonarQube reports. From 9ff342261b3bd7863ff7510f31c134b0a5fb1a89 Mon Sep 17 00:00:00 2001 From: Natnael Tekli Date: Sun, 16 Mar 2025 20:18:05 -0600 Subject: [PATCH 4/7] updated the file --- Description.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Description.md b/Description.md index b651971e..6b2b7489 100644 --- a/Description.md +++ b/Description.md @@ -103,3 +103,11 @@ Container images will be pushed to **Docker Hub**. To push an image, use the fol ## Running the Project Instructions for running the application locally, including prerequisites. + + + +Instructions for running the application locally, including prerequisites. + +## Testing +- **Testing Framework**: Briefly describe tools used for testing. +- **Code Quality Reports**: Link to generated SonarQube reports. From ea22cd5885e0569e233d86b7663fdcec284d7fc9 Mon Sep 17 00:00:00 2001 From: Jaden Chow Date: Sun, 16 Mar 2025 20:26:53 -0600 Subject: [PATCH 5/7] Updated Testing Description Added brief description --- Description.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Description.md b/Description.md index 6b2b7489..045f8397 100644 --- a/Description.md +++ b/Description.md @@ -110,4 +110,6 @@ Instructions for running the application locally, including prerequisites. ## Testing - **Testing Framework**: Briefly describe tools used for testing. + We have access to automated testing tools integrated into the CI/CD pipeline (Jenkins), these will help with unit, integration, security, and performance + - **Code Quality Reports**: Link to generated SonarQube reports. From 25d2cfda524a9ff4c7bebe2c2dfce01e13f1a30e Mon Sep 17 00:00:00 2001 From: Josral04 Date: Mon, 17 Mar 2025 08:10:59 -0600 Subject: [PATCH 6/7] Rename Description.md to README(2).md --- Description.md => README(2).md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Description.md => README(2).md (100%) diff --git a/Description.md b/README(2).md similarity index 100% rename from Description.md rename to README(2).md From d6b59cc8654e2885305be720c6ab7fc4d0d11445 Mon Sep 17 00:00:00 2001 From: MAunRaza Date: Mon, 17 Mar 2025 12:48:33 -0600 Subject: [PATCH 7/7] Raza Update README(2).md --- README(2).md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README(2).md b/README(2).md index 045f8397..4e96506c 100644 --- a/README(2).md +++ b/README(2).md @@ -62,7 +62,7 @@ ________________________________________________________________________________ ## Team Members - Josral Frederick UCID: 30195360 -- Muhammad Aun Raza UCID: 30172183 +- Muhammad Aun Raza My UCID: 30172183 - Natnael Tekli UCID: 30171167 - Jaden Chow UCID: 30173676