From 1694382860c1d262efb310b35687db475cd06959 Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 13:29:59 +0700 Subject: [PATCH 01/16] Add initial Dockerfile for Nginx setup --- Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..1d65dd1d5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:22.04 +RUN apt update -y && apt install nginx -y +ADD index.html /var/www/html/ +CMD nginx -g "daemon off;" From de3502b78974eca33dd04dc6c0987c12adbd0e42 Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 13:39:48 +0700 Subject: [PATCH 02/16] Refactor Dockerfile to use Node.js base image and set up application environment --- Dockerfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1d65dd1d5..6baccdd18 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,7 @@ -FROM ubuntu:22.04 -RUN apt update -y && apt install nginx -y -ADD index.html /var/www/html/ -CMD nginx -g "daemon off;" +FROM node:20-slim +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +EXPOSE 3000 +CMD ["npm", "start"] \ No newline at end of file From c6c6b02fd831b85e8f03a39d8ae327d724687dbe Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 16:48:54 +0700 Subject: [PATCH 03/16] Add initial application structure with HTML, CSS, tests, and Docker configuration - Created index.html with basic structure and linked CSS - Added style.css for basic styling of the application - Implemented unit and integration tests for application routes and database connection - Configured docker-compose for application deployment with volume management --- Dockerfile => app/Dockerfile | 0 README.md => app/README.md | 0 app.js => app/app.js | 0 {database => app/database}/training.sql | 0 {middleware => app/middleware}/db_connect.js | 0 {middleware => app/middleware}/logger.js | 0 package.json => app/package.json | 0 {public => app/public}/images/idn-logo.png | Bin {public => app/public}/index.html | 0 {public => app/public}/stylesheet/style.css | 0 {testing => app/testing}/app.test.js | 0 docker-compose.yaml | 13 +++++++++++++ 12 files changed, 13 insertions(+) rename Dockerfile => app/Dockerfile (100%) rename README.md => app/README.md (100%) rename app.js => app/app.js (100%) rename {database => app/database}/training.sql (100%) rename {middleware => app/middleware}/db_connect.js (100%) rename {middleware => app/middleware}/logger.js (100%) rename package.json => app/package.json (100%) rename {public => app/public}/images/idn-logo.png (100%) rename {public => app/public}/index.html (100%) rename {public => app/public}/stylesheet/style.css (100%) rename {testing => app/testing}/app.test.js (100%) create mode 100644 docker-compose.yaml diff --git a/Dockerfile b/app/Dockerfile similarity index 100% rename from Dockerfile rename to app/Dockerfile diff --git a/README.md b/app/README.md similarity index 100% rename from README.md rename to app/README.md diff --git a/app.js b/app/app.js similarity index 100% rename from app.js rename to app/app.js diff --git a/database/training.sql b/app/database/training.sql similarity index 100% rename from database/training.sql rename to app/database/training.sql diff --git a/middleware/db_connect.js b/app/middleware/db_connect.js similarity index 100% rename from middleware/db_connect.js rename to app/middleware/db_connect.js diff --git a/middleware/logger.js b/app/middleware/logger.js similarity index 100% rename from middleware/logger.js rename to app/middleware/logger.js diff --git a/package.json b/app/package.json similarity index 100% rename from package.json rename to app/package.json diff --git a/public/images/idn-logo.png b/app/public/images/idn-logo.png similarity index 100% rename from public/images/idn-logo.png rename to app/public/images/idn-logo.png diff --git a/public/index.html b/app/public/index.html similarity index 100% rename from public/index.html rename to app/public/index.html diff --git a/public/stylesheet/style.css b/app/public/stylesheet/style.css similarity index 100% rename from public/stylesheet/style.css rename to app/public/stylesheet/style.css diff --git a/testing/app.test.js b/app/testing/app.test.js similarity index 100% rename from testing/app.test.js rename to app/testing/app.test.js diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 000000000..653fd507e --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,13 @@ +name: app + +services: + app: + image: username/image-name + build: ./app + ports: + - "5000:3000" + volumes: + - vol-simple:/app/public/images/ + +volumes: + vol-simple: \ No newline at end of file From 95cc8183f18a0f5e0535e1ce9b9f27ca6ba9a8f4 Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 16:51:06 +0700 Subject: [PATCH 04/16] Update docker-compose.yaml to define application service and volume configuration --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 653fd507e..4ca997747 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,7 +2,7 @@ name: app services: app: - image: username/image-name + image: ryanfitra/simple-app:01 build: ./app ports: - "5000:3000" From 5f95b8c2cdafdb005b8c9dcd32470c124bf49617 Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 16:54:38 +0700 Subject: [PATCH 05/16] Rename application in docker-compose.yaml to simple-apps for clarity --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 4ca997747..34c0a1059 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,4 +1,4 @@ -name: app +name: simple-apps services: app: From 318d1ac06cfd2e19c53e642bb1e76c82c6425504 Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 17:11:12 +0700 Subject: [PATCH 06/16] Update index.html title to reflect application name --- app/public/index.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/public/index.html b/app/public/index.html index d6785c439..2eba96a25 100644 --- a/app/public/index.html +++ b/app/public/index.html @@ -10,5 +10,8 @@

Belajar Devops

+

Rian Fitra Perdana

+
Training DevOps IDN
+

Check Point Docker Compose

\ No newline at end of file From 90711affa021b72005f86002c7bd9f91629e62fd Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 17:12:50 +0700 Subject: [PATCH 07/16] Refactor index.html to improve structure and update language attribute --- app/public/index.html | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/public/index.html b/app/public/index.html index 2eba96a25..9e0f3afa8 100644 --- a/app/public/index.html +++ b/app/public/index.html @@ -1,17 +1,26 @@ - + - Training DevOps - -

Belajar Devops

-

Rian Fitra Perdana

-
Training DevOps IDN
-

Check Point Docker Compose

+
+ + +

Belajar DevOps

+

Rian Fitra Perdana

+

Training DevOps IDN

+ +
+

🚀 Check Point: Docker Compose

+
+ +
+

© 2025 Training DevOps IDN

+
+
- \ No newline at end of file + From c5a17b3dc4f9d56510d717122633da84196c952b Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 17:14:07 +0700 Subject: [PATCH 08/16] Refactor index.html to inline CSS styles and simplify markup --- app/public/index.html | 67 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/app/public/index.html b/app/public/index.html index 9e0f3afa8..d1dd6dcae 100644 --- a/app/public/index.html +++ b/app/public/index.html @@ -4,8 +4,69 @@ Training DevOps - + + +
@@ -15,11 +76,11 @@

Rian Fitra Perdana

Training DevOps IDN

-

🚀 Check Point: Docker Compose

+ 🚀 Check Point: Docker Compose
-

© 2025 Training DevOps IDN

+ © 2025 Training DevOps IDN
From a6db6cc9a3f8a99905175f2bc0feaac938022f45 Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 17:15:16 +0700 Subject: [PATCH 09/16] Update container background color in index.html for improved visibility --- app/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/public/index.html b/app/public/index.html index d1dd6dcae..44626975e 100644 --- a/app/public/index.html +++ b/app/public/index.html @@ -24,7 +24,7 @@ .container { text-align: center; - background: rgba(255, 255, 255, 0.12); + background: rgb(228, 228, 228); padding: 40px; border-radius: 16px; width: 90%; From 2f8c55c774a2e81e7b7cb4fd062f0844207851ef Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sat, 20 Dec 2025 17:16:21 +0700 Subject: [PATCH 10/16] Update container background color in index.html for improved transparency --- app/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/public/index.html b/app/public/index.html index 44626975e..f9d1903b9 100644 --- a/app/public/index.html +++ b/app/public/index.html @@ -24,7 +24,7 @@ .container { text-align: center; - background: rgb(228, 228, 228); + background: rgba(228, 228, 228, 0.463); padding: 40px; border-radius: 16px; width: 90%; From 6927cc86409ac7afb3b475bc18287101ca133a9b Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sun, 21 Dec 2025 13:16:08 +0700 Subject: [PATCH 11/16] Add Jenkinsfile for CI/CD pipeline setup --- Jenkinsfile | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..6e0db6b44 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,57 @@ +pipeline { + agent { label 'server1-ryan' } + + stages { + stage('Pull SCM') { + steps { + git branch: 'main', url: 'https://github.com/ryanfitra/simple-apps.git' + } + } + + stage('Build') { + steps { + sh''' + cd app + npm install + ''' + } + } + + stage('Testing') { + steps { + sh''' + cd app + APP_PORT=5001 npm test + APP_PORT=5001 npm run test:coverage + ''' + } + } + + // stage('Code Review') { + // steps { + // sh''' + // cd app + // sonar-scanner \ + // -Dsonar.projectKey=Simple-Apps \ + // -Dsonar.sources=. \ + // -Dsonar.host.url=http://172.23.x.x:9000 \ + // -Dsonar.login=token-sonar + // ''' + // } + // } + + stage('Deploy') { + steps { + sh''' + docker compose up --build -d + ''' + } + } + + stage('Backup') { + steps { + sh 'docker compose push' + } + } + } +} \ No newline at end of file From d45926a3e9a2115482725d2b65650328351b0a2d Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sun, 21 Dec 2025 13:32:27 +0700 Subject: [PATCH 12/16] Fix test coverage script to ensure forced exit during testing --- app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/package.json b/app/package.json index 098f48be3..6de9fa897 100644 --- a/app/package.json +++ b/app/package.json @@ -7,7 +7,7 @@ "dev": "nodemon app", "start": "node app", "test": "jest --forceExit testing/", - "test:coverage": "jest --coverage testing/" + "test:coverage": "jest --coverage --forceExit testing/" }, "author": "Moch Rafi Riadi", "license": "ISC", From 04b165bf1335e35e39a05b80dc97fb4a4160e345 Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sun, 21 Dec 2025 13:56:41 +0700 Subject: [PATCH 13/16] Update Docker image tag in docker-compose.yaml for consistency --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 34c0a1059..522651b7c 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,7 +2,7 @@ name: simple-apps services: app: - image: ryanfitra/simple-app:01 + image: ryanfitra19/simple-app build: ./app ports: - "5000:3000" From fe53893c2fd596f3da0d83429e0e6c9d1ea6eb0e Mon Sep 17 00:00:00 2001 From: ryan_fitra Date: Sun, 21 Dec 2025 14:05:31 +0700 Subject: [PATCH 14/16] Add additional checkpoint card for Jenkins in index.html --- app/public/index.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/public/index.html b/app/public/index.html index f9d1903b9..e264c9920 100644 --- a/app/public/index.html +++ b/app/public/index.html @@ -78,6 +78,9 @@

Rian Fitra Perdana

🚀 Check Point: Docker Compose
+
+ 🚀 Check Point: Jenkins +