Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/app/node_modules
57 changes: 57 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
pipeline {
agent { label 'dev-gerin' }

stages {
stage('Pull SCM') {
steps {
git branch: 'main', url: 'https://github.com/grnbgsln/simple-apps.git'
}
}

stage('Build') {
steps {
sh'''
cd app
npm install
'''
}
}

stage('Testing') {
steps {
sh'''
cd app
npm test
npm run test:coverage
'''
}
}

stage('Code Review') {
steps {
sh'''
cd app
sonar-scanner \
-Dsonar.projectKey=simple-test \
-Dsonar.sources=. \
-Dsonar.host.url=http://172.23.8.121:9000 \
-Dsonar.login=sqp_83246bd5ed691a9b57e588da0d2ad59fc18b7f29
'''
}
}

stage('Deploy') {
steps {
sh'''
docker compose up --build -d
'''
}
}

stage('Backup') {
steps {
sh 'docker compose push'
}
}
}
}
38 changes: 0 additions & 38 deletions app.js

This file was deleted.

5 changes: 5 additions & 0 deletions app/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
DB_NAME=training
DB_HOST=172.23.8.101
DB_USER=peserta
DB_PASS=password
APP_PORT=3000
6 changes: 6 additions & 0 deletions app/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM node:18.20.8-slim

WORKDIR /app
ADD . /app/
RUN npm install
CMD ["npm", "start"]
File renamed without changes.
80 changes: 80 additions & 0 deletions app/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
const express = require('express')
const mysql = require('mysql');
const app = express();
app.disable('x-powered-by');
const path = require('path')
require('dotenv').config();

// Import Middleware
const logger = require('./middleware/logger')
app.use(logger)
const connection = require('./middleware/db_connect');
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// Dashboard
app.use('/', express.static(path.join(__dirname, 'public')));

app.get('/app1', (req, res) => {
res.send('Hello this Apps 1!')
});

app.get('/app2', (req, res) => {
res.send('Hello this App 2!')
});

app.get('/users', (req, res, next) => {
const sql = "SELECT * FROM tb_data ORDER BY id desc"
connection.query(sql, (error, fields) => {
if (error) {
console.log('error', error)
} else {
res.send(fields)
}
})
});


app.get('/users/:id', (req, res, next) => {
const id = req.params.id
const sql = "SELECT * FROM tb_data where id = " + id + " ORDER BY id desc"
connection.query(sql, (error, fields) => {
if (error) {
console.log('error', error)
} else {
res.send(fields)
}
})
});

app.post('/users', (req, res) => {
const { name, email, no_telp } = req.body;
const findLatestId = "SELECT id FROM tb_data ORDER BY id DESC LIMIT 1";
connection.query(findLatestId, (error, results) => {
if (error) {
return res.status(500).send(error);
}

const latestId = results.length > 0 ? parseInt(results[0].id) : 0;
const newId = latestId + 1;

const insertQuery = "INSERT INTO tb_data (id, name, email, no_telp) VALUES (?, ?, ?, ?)";
const values = [newId, name, email, no_telp];

connection.query(insertQuery, values, (error, results) => {
if (error) {
console.error('Insert error:', error);
return res.status(500).send(error);
}

res.send({ message: "User created successfully", data: { id: newId, name, email, no_telp } });
});
});
});


app.listen(process.env.APP_PORT, () => {
console.log(`Example app listening on port ${process.env.APP_PORT}`)
})

module.exports = app
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading