From 22b2303d97f32bf147d3796b8c5c1caac2d3f6e2 Mon Sep 17 00:00:00 2001 From: Yassine Samir Date: Wed, 22 Apr 2026 11:36:36 +0200 Subject: [PATCH 1/2] docs: finalize README for submission --- README.md | 56 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index b345d57..eee3274 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ Small NumPy-inspired Java library for ndarray operations, developed as a DevOps team project. +Authors: see [AUTHORS](AUTHORS). + Repository: https://github.com/sMouaad/DevOps-Project **[Documentation & API Reference](https://smouaad.github.io/DevOps-Project/)** @@ -21,9 +23,7 @@ Repository: https://github.com/sMouaad/DevOps-Project - Keep test quality high and track coverage in CI. - Deliver a clear project report in this README. -## Features Implemented So Far - -Current snapshot date: 2026-04-04. +## Features Implemented - 1D ndarray core with metadata (`ndim`, `shape`, `size`). - 2D ndarray support with matrix validation. @@ -66,7 +66,7 @@ Workflow used by the team: - CI must pass before merge. - We use GitHub Issues to plan work and assign tasks to each teammate. -Branch examples used so far: +Feature branches used during the project: - `feature/ndarray-core-1d` - `feature/array-zeros-arange` @@ -75,6 +75,12 @@ Branch examples used so far: - `feature/ndarray-2d` - `feature/ci-coverage` - `feature/print-display` +- `feature/optional-ndarray-extensions` +- `feature/sonarqube-integration` +- `feature/docker` +- `feature/maven-dist` +- `feature/iac-ansible-terraform` +- `feature/readme-report` PR validation checklist: @@ -177,35 +183,43 @@ cd infrastructure/scripts See [infrastructure/README.md](infrastructure/README.md) for details. -## Current Status vs Mandatory Scope +## Delivered Scope -Implemented: +Mandatory: - 1D and 2D ndarray support. - Creation functions (`array`, `zeros`, `arange`). - Addition operations (`add`, `addInPlace`). -- Scalar addition and `sum()` reduction. - Reshape with validation. -- Docker containerization with CI/CD pipeline. -- Infrastructure as Code for GCP deployment. +- NumPy-like display. -In progress / next: +Optional / bonus (difficulty level in brackets): -- Final quality/readability cleanup. -- Final documentation polishing and report completion. +- Scalar addition and `sum()` reduction — library extensions. +- Maven SNAPSHOT publishing to GitHub Packages, gated by 70% coverage [2]. +- Multi-stage Docker image published to GHCR with semver/sha tags [3]. +- Infrastructure as Code (Terraform + Ansible) for GCP deployment [4]. +- SonarQube static analysis integrated in CI with quality gate [3]. +- CI/coverage badges and GitHub Pages documentation site [1]. -## Feedback and Retrospective (Living Section) +## Feedback and Retrospective -What worked well so far: +What worked well: -- Small PR scope reduced merge risk. +- Small, single-purpose PRs kept reviews fast and merge risk low. - Review-first workflow caught shape/metadata issues early. -- CI + tests made refactoring safer. +- Enforced coverage threshold (70%) prevented silent regressions. +- CI + tests made refactoring and bonus work safe. + +What we would do differently: -What to improve next: +- Rebase feature branches on `main` more aggressively to reduce merge conflicts on long-lived branches (IaC, maven-dist). +- Introduce SonarQube earlier — we addressed several code smells late in the project that could have been avoided. +- Write Docker and IaC tests (smoke tests beyond build) earlier in the pipeline to catch integration issues. -- Add more explicit edge-case tests for some 2D operations. -- Keep branch updates synchronized with `main` to reduce conflict churn. -- Start working on bonus options once mandatory scope is fully stable. +Tool feedback: -This section will be updated at each milestone. +- **GitHub Actions** — great ergonomics, but the Sonar + Maven publish combination required careful secret/permissions tuning. +- **JaCoCo** — simple to plug into Maven; the `check` goal is a clean way to fail the build below a threshold. +- **Terraform + Ansible** — the split (provision vs configure) is clean on paper but adds moving parts; for a tiny deployment a single tool would have been enough. +- **GHCR** — seamless integration with GitHub Actions and free for public repos. From 9edb7c393d00b574cff5b1e935afe7ca2bc8ba65 Mon Sep 17 00:00:00 2001 From: sMouaad <93816869+sMouaad@users.noreply.github.com> Date: Wed, 22 Apr 2026 12:49:46 +0200 Subject: [PATCH 2/2] chore: improve feedback --- README.md | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index eee3274..905f386 100644 --- a/README.md +++ b/README.md @@ -202,24 +202,25 @@ Optional / bonus (difficulty level in brackets): - SonarQube static analysis integrated in CI with quality gate [3]. - CI/coverage badges and GitHub Pages documentation site [1]. -## Feedback and Retrospective +## Feedback -What worked well: +This project was a good learning experience for us. We learned that having a working pipeline early saves a lot of time later, and we learned how the use tools such as terraform & ansible along the way. -- Small, single-purpose PRs kept reviews fast and merge risk low. -- Review-first workflow caught shape/metadata issues early. -- Enforced coverage threshold (70%) prevented silent regressions. -- CI + tests made refactoring and bonus work safe. +What went well: -What we would do differently: +- CI + tests helped us avoid regressions. +- Small PRs made reviews easier. +- Docker made demo execution consistent across machines. +- Terraform + Ansible split infra creation and app deployment clearly. -- Rebase feature branches on `main` more aggressively to reduce merge conflicts on long-lived branches (IaC, maven-dist). -- Introduce SonarQube earlier — we addressed several code smells late in the project that could have been avoided. -- Write Docker and IaC tests (smoke tests beyond build) earlier in the pipeline to catch integration issues. +What was harder: -Tool feedback: +- Covering edge cases (2D behavior, reshape validation) with clean tests. +- Keeping feature branches up to date with `main`. +- Initial cloud setup (credentials, IAM roles, SSH keys). -- **GitHub Actions** — great ergonomics, but the Sonar + Maven publish combination required careful secret/permissions tuning. -- **JaCoCo** — simple to plug into Maven; the `check` goal is a clean way to fail the build below a threshold. -- **Terraform + Ansible** — the split (provision vs configure) is clean on paper but adds moving parts; for a tiny deployment a single tool would have been enough. -- **GHCR** — seamless integration with GitHub Actions and free for public repos. +What we can improve next: + +- Add moretests (edgecases) for 2D operations +- Add an automatic changelog for releases. +- Add a PR template... \ No newline at end of file