Feature/27 implement cicd#42
Conversation
…t-Stage-Academy/Smart-Event-Booking into feature/27-implement-cicd
There was a problem hiding this comment.
Missing Client-Side Tests: In pr-validation.yml, the build-and-test-client job installs dependencies and builds the project, but it never runs npm test. Regressions in UI logic will not be caught during PR reviews.
There was a problem hiding this comment.
The release-to-prod.yml workflow builds and deploys immediately upon a push to main. It does not run any unit or integration tests. If a merge to main introduces an integration issue not caught in the PR, it will be deployed directly to production.
|
There are no steps for linting or formatting validation (e.g., dotnet format --verify-no-changes or npm run lint). This allows inconsistent code styles to enter the codebase. |
|
The release workflow considers a deployment successful as soon as Azure accepts the image. It doesn't verify if the app is actually "Alive" (e.g., by hitting a /health or /api/status endpoint). |
| run: npm run build -- --configuration production | ||
|
|
||
| - name: Verify Client Dockerfile builds | ||
| working-directory: . | ||
| run: docker build -t smarteventbooking-client:test src/client/ |
There was a problem hiding this comment.
In pr-validation.yml, the job runs npm run build and then immediately runs docker build. Since the Dockerfile also performs a build, you are effectively building the Angular app twice, which significantly increases CI time.
Didn't add this on purpose. I'm not sure whether code is consistent now, so to avoid delays before demo I decided not to add it |
|
Unlike the release workflow, the PR validation workflow does not use |
Summary
ConfigServiceloadsconfig.jsonat startup, injected viaenvsubstin Docker so API URL is environment-driven without rebuilding.nvmrcpinning Node 24 LTS; document setup withfnmor direct install in READMEWARNING
Now we use Node 24 LTS, so make sure it is installed on your system before runing locally. You can either set it default for this project, or follow steps in
README