From f9734e8783edb5124fea16b8aa8aec07404587b3 Mon Sep 17 00:00:00 2001 From: dronetea Date: Sun, 19 Dec 2021 00:01:01 +0200 Subject: [PATCH 1/8] added .drone.yml Added .drone.yml to test drone pipeline --- .drone.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..eb160e5 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,21 @@ +--- +kind: pipeline +name: node10 + +steps: +- name: test + image: node:10 + commands: + - npm version + - npx version + +--- +kind: pipeline +name: node12 + +steps: +- name: test + image: node:12 + commands: + - npm version + - npx version \ No newline at end of file -- 2.43.7 From 4e2ce777a2c06007556c8fc80ee471c0ee00481f Mon Sep 17 00:00:00 2001 From: Mpho raf Date: Thu, 22 Dec 2022 00:57:34 +0200 Subject: [PATCH 2/8] Updated to use platform for arch64 and latest node --- .drone.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.drone.yml b/.drone.yml index eb160e5..6faf27c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,21 +1,25 @@ --- kind: pipeline -name: node10 +name: node14 +platform: + - arch: arm64 steps: -- name: test - image: node:10 +- name: test14 + image: node:14 commands: - npm version - npx version --- kind: pipeline -name: node12 +name: node16 +platform: + - arch: arm64 steps: -- name: test - image: node:12 +- name: test16 + image: node:16 commands: - npm version - - npx version \ No newline at end of file + - npx version -- 2.43.7 From b4ed0abadfdb6861cc55316bade54f19ca957fd3 Mon Sep 17 00:00:00 2001 From: Mpho raf Date: Thu, 22 Dec 2022 01:32:13 +0200 Subject: [PATCH 3/8] Added some node functions --- Dockerfile | 6 ++++++ Jenkinsfile | 35 ++++++++++++++++++++++++++--------- index-db.js | 35 +++++++++++++++++++++++++++++++++++ index.js | 13 +++++++++++++ package.json | 22 ++++++++++++++++++++++ test/test.js | 8 ++++++++ 6 files changed, 110 insertions(+), 9 deletions(-) create mode 100644 Dockerfile create mode 100644 index-db.js create mode 100644 index.js create mode 100644 package.json create mode 100644 test/test.js diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..413a305 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM node +WORKDIR /app +ADD . /app +RUN npm install +EXPOSE 3000 +CMD npm start diff --git a/Jenkinsfile b/Jenkinsfile index 686df54..4b7d334 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,12 +1,29 @@ -pipeline { - agent { docker { image 'node:14-alpine' } } - stages { - stage('build') { - steps { - sh 'npm --version' - sh 'npx --version' - sh 'node --version' - } +node { + def commit_id + stage('Preparation') { + checkout scm + commit_id = sh(returnStdout: true, script: "git log -n 1 --pretty=format:'%h'").trim() + } + stage('Test NPM') { + docker.image('node:8').inside { + sh 'npm install --dev' + sh 'npm test' } } + stage('Test with a DB') { + docker.image('mysql:5').withRun('-e MYSQL_ALLOW_EMPTY_PASSWORD=yes --rm') { mdb -> + docker.image('mysql:5').inside("--link ${mdb.id}:db") { + /* Wait until mysql service is up */ + sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done' + } + docker.image('node:8').inside("--link ${mdb.id}:mysql") { + /* + * Run some tests which require MySQL, and assume that it is + * available on the host name `db` + */ + sh 'npm install --dev' + sh 'npm test' + } + } + } } diff --git a/index-db.js b/index-db.js new file mode 100644 index 0000000..d40a13f --- /dev/null +++ b/index-db.js @@ -0,0 +1,35 @@ +var express = require('express'); +var app = express(); +var mysql = require("mysql"); +var con = mysql.createConnection({ host: process.env.MYSQL_HOST, user: process.env.MYSQL_USER, password: process.env.MYSQL_PASSWORD, database: process.env.MYSQL_DATABASE}); + +// mysql code + +con.connect(function(err){ + if(err){ + console.log('Error connecting to db: ', err); + return; + } + console.log('Connection to db established'); + con.query('CREATE TABLE IF NOT EXISTS visits (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, ts BIGINT)',function(err) { + if(err) throw err; + }); +}); + +// Request handling +app.get('/', function (req, res) { + // create table if not exist + con.query('INSERT INTO visits (ts) values (?)', Date.now(),function(err, dbRes) { + if(err) throw err; + res.send('Hello World! You are visitor number '+dbRes.insertId); + }); +}); + + +// server +var server = app.listen(3000, function () { + var host = server.address().address; + var port = server.address().port; + + console.log('Example app listening at http://%s:%s', host, port); +}); diff --git a/index.js b/index.js new file mode 100644 index 0000000..20abd1d --- /dev/null +++ b/index.js @@ -0,0 +1,13 @@ +var express = require('express'); +var app = express(); + +app.get('/', function (req, res) { + res.send('Hello World!'); +}); + +var server = app.listen(3000, function () { + var host = server.address().address; + var port = server.address().port; + + console.log('Example app listening at http://%s:%s', host, port); +}); diff --git a/package.json b/package.json new file mode 100644 index 0000000..8981352 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "myapp", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "node index.js", + "test": "npm install inherits && mocha" + }, + "engines": { + "node": "^4.6.1" + }, + "dependencies": { + "express": "^4.14.0", + "http-errors": "^1.7.0", + "mysql": "^2.10.2" + }, + "devDependencies": { + "inherits": "^2.0.3", + "mocha": "^5.2.0", + "ms": "^2.1.1" + } +} diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..9592531 --- /dev/null +++ b/test/test.js @@ -0,0 +1,8 @@ +var assert = require('assert'); +describe('Array', function() { + describe('#indexOf()', function() { + it('should return -1 when the value is not present', function() { + assert.equal(-1, [1,2,3].indexOf(4)); + }); + }); +}); -- 2.43.7 From ae6abfc381da8697585ab1987a7fbade78cd2235 Mon Sep 17 00:00:00 2001 From: Mpho raf Date: Thu, 22 Dec 2022 01:35:48 +0200 Subject: [PATCH 4/8] fix droneci yaml --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 6faf27c..16ea42f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -2,7 +2,7 @@ kind: pipeline name: node14 platform: - - arch: arm64 + arch: arm64 steps: - name: test14 @@ -15,7 +15,7 @@ steps: kind: pipeline name: node16 platform: - - arch: arm64 + arch: arm64 steps: - name: test16 -- 2.43.7 From 8372a1dd49aab2bd6be656d7f2fa9ca273961a81 Mon Sep 17 00:00:00 2001 From: Mpho raf Date: Thu, 22 Dec 2022 01:41:24 +0200 Subject: [PATCH 5/8] Fixed install warning and arm64 mysql --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4b7d334..0de3254 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -6,13 +6,13 @@ node { } stage('Test NPM') { docker.image('node:8').inside { - sh 'npm install --dev' + sh 'npm install --only=dev' sh 'npm test' } } stage('Test with a DB') { - docker.image('mysql:5').withRun('-e MYSQL_ALLOW_EMPTY_PASSWORD=yes --rm') { mdb -> - docker.image('mysql:5').inside("--link ${mdb.id}:db") { + docker.image('mysql:8-oracle').withRun('-e MYSQL_ALLOW_EMPTY_PASSWORD=yes --rm') { mdb -> + docker.image('mysql:8-oracle').inside("--link ${mdb.id}:db") { /* Wait until mysql service is up */ sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done' } @@ -21,7 +21,7 @@ node { * Run some tests which require MySQL, and assume that it is * available on the host name `db` */ - sh 'npm install --dev' + sh 'npm install --only=dev' sh 'npm test' } } -- 2.43.7 From d4b139bc2cc35937df81bebe4b177c2d8605fee1 Mon Sep 17 00:00:00 2001 From: Mpho raf Date: Thu, 22 Dec 2022 01:47:53 +0200 Subject: [PATCH 6/8] Updated for npx --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 16ea42f..345fcb2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,7 +9,7 @@ steps: image: node:14 commands: - npm version - - npx version + - npx --version --- kind: pipeline @@ -22,4 +22,4 @@ steps: image: node:16 commands: - npm version - - npx version + - npx --version -- 2.43.7 From db4e473ebe2077dab30a52a1bc84b9292e5dba5b Mon Sep 17 00:00:00 2001 From: Mpho raf Date: Sat, 4 Feb 2023 15:28:29 +0200 Subject: [PATCH 7/8] Added the install for dev only --- .drone.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.drone.yml b/.drone.yml index 345fcb2..7f653c9 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,6 +10,7 @@ steps: commands: - npm version - npx --version + - npm install --only=dev --- kind: pipeline @@ -23,3 +24,4 @@ steps: commands: - npm version - npx --version + - npm install --only=dev -- 2.43.7 From 246c4d5ab95831c5ba2953c81d187725413a123b Mon Sep 17 00:00:00 2001 From: Mpho raf Date: Sat, 4 Feb 2023 15:32:08 +0200 Subject: [PATCH 8/8] added the node test for drone --- .drone.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.drone.yml b/.drone.yml index 7f653c9..b8e52d8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -11,6 +11,7 @@ steps: - npm version - npx --version - npm install --only=dev + - npm test --- kind: pipeline @@ -25,3 +26,4 @@ steps: - npm version - npx --version - npm install --only=dev + - npm test -- 2.43.7