diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 89005b1..8428bbf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ -image: shockrah/freechat:0.4 +image: shockrah/freechat-pipeline:latest stages: + - documentation - build - test @@ -11,6 +12,13 @@ workflow: variables: CARGO_HOME: $CI_PROJECT_DIR/.cargo GIT_SUBMODULE_STRATEGY: recursive + # Not doing strict host checking to avoid writing the host fingerprint anywhere + # This is important because I don't host this gitlab instance, if I did host my + # own gitlab however this wouldn't be here as it would be under my control but + # this isn't the case + # Really we're just trading one security issue for another: + # - keeping fingerprints on someone else's server + # - not verifying the host for my little known service SHOPTS: "-o StrictHostKeyChecking=no" @@ -24,7 +32,7 @@ build-json-api: only: refs: - - master + - broken changes: - json-api/Cargo.* @@ -38,7 +46,7 @@ build-json-api: - json-api/build.sh - json-api/db/Cargo.* - - json-api/db/src/* + - json-api/db/src/*.rs script: - cd json-api/ @@ -61,7 +69,7 @@ test-json-api: - build-json-api only: refs: - - master + - broken changes: - json-api/Cargo.* @@ -116,7 +124,7 @@ build-channer: build-wiki: image: shockrah/website:latest only: [ "master" ] - stage: build + stage: documentation only: refs: diff --git a/scripts/build-db.sh b/scripts/build-db.sh new file mode 100644 index 0000000..837dd86 --- /dev/null +++ b/scripts/build-db.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Points to the folder that contains all pertinent database tables +# Each table directory contains: +# dir/ + # up.sql + # down.sql + + +# First some parameter checks +if [ ! $1 ];then + echo Failure: Insufficient arguments provided + echo ./build-db.sh /migrations/folder/path + exit 1 +fi + +if [ ! $2 ];then + echo Failure: Insufficient arguments provided + echo ./build-db.sh /migrations/folder/path /path/to/.env file + exit 1 +fi + +migration_loc=$1 +env_path=$2 + +source $env_path + +# This is kinda dumb but we have to check and make sure the sample default user +# configuration is all there +if [ ! $DATABASE_NAME ];then + echo No DATABASE_NAME set + exit 1 +fi +if [ ! $DATABASE_PASS ];then + echo No DATABASE_PASS set + exit 1 +fi +if [ ! $DATABASE_USER ];then + echo No DATABASE_USER set + exit 1 +fi +if [ ! $DATABASE_HOST ];then + echo No DATABASE_HOST set + exit 1 +fi +if [ ! $DATABASE_PORT ];then + echo No DATABASE_PORT set + exit 1 +fi + +# Next we setup the database user +mysql -e "CREATE USER '$DATABASE_USER'@'$DATABASE_HOST' IDENTIFIED BY '$DATABASE_PASS';" +# Yet another reason to not use this in prod to setup you're database +mysql -e "GRANT ALL PRIVILEGES ON *.* TO '$DATABASE_USER'@'$DATABASE_HOST';" + +# First we'll setup the databse that we want to use +for dir in $(ls $migration_loc);do + # Port field is ignored in this script as its straight up not used in Docker tests + echo Migrating $dir + mysql -u $DATABASE_USER -p $DATABASE_PASS \ + -h $DATABASE_HOST -D $DATABASE_NAME \ + < $dir/up.sql +done + + diff --git a/scripts/git-doc.py b/scripts/git-doc.py deleted file mode 100644 index 07cbc7c..0000000 --- a/scripts/git-doc.py +++ /dev/null @@ -1,34 +0,0 @@ -''' -Additions: + -Modifications: * -Removals: - -Note/Warning ! -''' - -import sys - -TMP_MSG_FILE = 'commit-message.tmp' - -lines = [] - -for line in sys.stdin: - line = line.strip() - if line.startswith('+'): - line = '➕' + line[1:] - - elif line.startswith('-'): - line = '➖' + line[1:] - - elif line.startswith('*'): - line = '✨' + line[1:] - - elif line.startswith('!'): - line = '❗' + line[1:] - - lines.append(line) - -with open(TMP_MSG_FILE, 'w') as target: - for line in lines: - print(line, file=target) - - diff --git a/scripts/start-all.sh b/scripts/start-all.sh deleted file mode 100644 index 1184e25..0000000 --- a/scripts/start-all.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -# This script assumes that everything has been built already -export DATABASE_URL=mysql://freechat_dev:password@localhost:3306/freechat -json-api/target/release/json-api -s & -pushd rtc-server -npm start -popd -kill $(pgrep json-api)