Import SQL changes
This commit is contained in:
parent
21c1b8f56f
commit
1f3117e7e5
|
@ -6,11 +6,13 @@ pipeline {
|
|||
disableConcurrentBuilds()
|
||||
}
|
||||
environment {
|
||||
PROJECT_NAME = 'salix'
|
||||
REGISTRY = 'registry.verdnatura.es'
|
||||
DOCKER_HOST_1 = 'vch1.verdnatura.es'
|
||||
DOCKER_HOST_2 = 'vch2.verdnatura.es'
|
||||
TAG = "${env.BRANCH_NAME}"
|
||||
PROJECT_NAME = 'salix'
|
||||
REGISTRY = 'registry.verdnatura.es'
|
||||
DOCKER_HOST_1 = 'vch1.verdnatura.es'
|
||||
DOCKER_HOST_2 = 'vch2.verdnatura.es'
|
||||
PORT_MASTER = '5002'
|
||||
PORT_TEST = '5001'
|
||||
TAG = "${env.BRANCH_NAME}"
|
||||
}
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
|
@ -29,10 +31,10 @@ pipeline {
|
|||
|
||||
switch (env.BRANCH_NAME) {
|
||||
case 'master':
|
||||
env.PORT = 5002
|
||||
env.PORT = PORT_MASTER
|
||||
break
|
||||
case 'test':
|
||||
env.PORT = 5001
|
||||
env.PORT = PORT_TEST
|
||||
break
|
||||
}
|
||||
switch (env.BRANCH_NAME) {
|
||||
|
@ -126,6 +128,21 @@ pipeline {
|
|||
}
|
||||
}
|
||||
}
|
||||
stage('Database') {
|
||||
when { anyOf {
|
||||
branch 'test'
|
||||
}}
|
||||
steps {
|
||||
configFileProvider([
|
||||
configFile(fileId: "config.${env.NODE_ENV}.ini",
|
||||
variable: 'MYSQL_CONFIG')
|
||||
]) {
|
||||
sh 'cp $MYSQL_CONFIG db/config.$NODE_ENV.ini'
|
||||
}
|
||||
|
||||
sh 'db/import-changes.sh -f $NODE_ENV'
|
||||
}
|
||||
}
|
||||
stage('Cleanup') {
|
||||
when { anyOf {
|
||||
branch 'test'
|
||||
|
|
|
@ -1 +1 @@
|
|||
connect.ini
|
||||
config.*.ini
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
const mysql = require('mysql2/promise');
|
||||
const fs = require('fs-extra');
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
const connection = await mysql.createConnection({
|
||||
host: 'localhost',
|
||||
user: 'root',
|
||||
multipleStatements: true
|
||||
});
|
||||
let changesDir = './install/changes';
|
||||
let results = await connection.query("SELECT dbVersion FROM util.config");
|
||||
if (results[0].length != 1)
|
||||
throw new Error('There must be exactly one row in the configuration table');
|
||||
let version = results[0][0].dbVersion;
|
||||
if (!version)
|
||||
throw new Error('Database version not defined');
|
||||
let dirs = await fs.readdir(changesDir);
|
||||
dirs.sort(compareVersions);
|
||||
let lastVersion;
|
||||
|
||||
for (let dir of dirs) {
|
||||
if (compareVersions(dir, version) <= 0) continue;
|
||||
if (/^\./.test(dir)) continue;
|
||||
let path = `${changesDir}/${dir}`;
|
||||
let files = await fs.readdir(path);
|
||||
files.sort();
|
||||
console.log(dir);
|
||||
for (let file of files) {
|
||||
let sql = await fs.readFile(`${path}/${file}`, 'utf8');
|
||||
if (/^\s*$/.test(sql)) continue;
|
||||
await connection.query(sql);
|
||||
console.log(` - ${file}`);
|
||||
}
|
||||
lastVersion = dir;
|
||||
}
|
||||
if (lastVersion) {
|
||||
await connection.query("UPDATE util.config SET dbVersion = ?", [lastVersion]);
|
||||
console.log(`Database upgraded successfully to version ${lastVersion}`);
|
||||
} else {
|
||||
console.log("Database is alredy in the last version");
|
||||
}
|
||||
await connection.end();
|
||||
process.exit();
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
|
||||
function compareVersions(ver1, ver2) {
|
||||
let diff;
|
||||
ver1 = ver1.split('.');
|
||||
ver2 = ver2.split('.');
|
||||
|
||||
diff = parseInt(ver1[0]) - parseInt(ver2[0]);
|
||||
if (diff !== 0) return diff;
|
||||
|
||||
diff = parseInt(ver1[1]) - parseInt(ver2[1]);
|
||||
if (diff !== 0) return diff;
|
||||
|
||||
diff = parseInt(ver1[2]) - parseInt(ver2[2]);
|
||||
if (diff !== 0) return diff;
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
#!/bin/bash
|
||||
|
||||
FORCE=FALSE
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 [-f] [environment]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
while getopts ":f" option
|
||||
do
|
||||
case $option in
|
||||
f)
|
||||
FORCE=TRUE
|
||||
;;
|
||||
\?|:)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
ENV=$1
|
||||
|
||||
if [ "$ENV" == "production" ]; then
|
||||
echo ""
|
||||
echo " ( ( ) ( ( ) ) "
|
||||
echo " )\ ))\ ) ( /( )\ ) ( * ))\ ) ( /( ( /( "
|
||||
echo "(()/(()/( )\()|()/( ( )\ ) /(()/( )\()) )\())"
|
||||
echo " /(_))(_)|(_)\ /(_)) )\ (((_) ( )(_))(_)|(_)\ ((_)\ "
|
||||
echo "(_))(_)) ((_|_))_ _ ((_))\___(_(_()|_)) ((_) _((_)"
|
||||
echo "| _ \ _ \ / _ \| \| | | ((/ __|_ _|_ _| / _ \| \| |"
|
||||
echo "| _/ /| (_) | |) | |_| || (__ | | | | | (_) | . |"
|
||||
echo "|_| |_|_\ \___/|___/ \___/ \___| |_| |___| \___/|_|\_|"
|
||||
echo ""
|
||||
|
||||
if [ "$FORCE" != "TRUE" ]; then
|
||||
read -p "Are you sure? (Default: no) [yes|no]: " ANSWER
|
||||
|
||||
if [ "$ANSWER" != "yes" ]; then
|
||||
echo "Aborting"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ -z "$ENV" ]; then
|
||||
ENV="test"
|
||||
fi
|
||||
|
||||
DIR="$(dirname "${BASH_SOURCE[0]}")"
|
||||
INI_FILE="$DIR/config.$ENV.ini"
|
||||
|
||||
if [ ! -f "$INI_FILE" ]; then
|
||||
echo "Config file doesn't exists: $INI_FILE"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "[INFO] Config file: $INI_FILE"
|
||||
echo "[INFO] Applying changes"
|
||||
|
||||
# Import changes
|
||||
for file in $DIR/install/changes/*.sql; do
|
||||
echo "[INFO] -> $file"
|
||||
mysql --defaults-file="$INI_FILE" < $file
|
||||
done
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
const mysql = require('mysql2/promise');
|
||||
const fs = require('fs-extra');
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
const connection = await mysql.createConnection({
|
||||
host: 'localhost',
|
||||
user: 'root',
|
||||
multipleStatements: true
|
||||
});
|
||||
sql = await fs.readFile(`install/dump/fixtures.sql`, 'utf8');
|
||||
await connection.query(sql);
|
||||
await connection.end();
|
||||
process.exit();
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
Loading…
Reference in New Issue