Build, Package & Deploy script.

Summary: Build, Packege & Deploy script.

Reviewers: teon.banek, mferencevic, mislav.bradac, dgleich

Reviewed By: dgleich

Subscribers: dgleich, pullbot, buda

Differential Revision: https://phabricator.memgraph.io/D397
This commit is contained in:
Marko Budiselic 2017-05-31 10:26:53 +02:00
parent 2005056cd5
commit fd19f76cba
5 changed files with 167 additions and 46 deletions

39
.gitignore vendored
View File

@ -1,28 +1,29 @@
.DS_Store
.ycm_extra_conf.pyc
*.swp
*.swo
*.out
*.so
*.o
*.dSYM/
memgraph
*~
*.pyc
*.breakpoint
*.dSYM/
*.o
*.out
*.pyc
*.session.yaml
tags
*.so
*.swo
*.swp
*~
.DS_Store
.gdb_history
.idea
.ycm_extra_conf.pyc
Testing/
ve/
ve3/
release/memgraph_*
release/libs/
release/barrier/
release/barrier_*
build/
cmake-build-*
.idea
cmake/DownloadProject/
dist/
memgraph
release/barrier/
release/barrier_*
release/config/
release/libs/
release/memgraph_*
src/query/frontend/opencypher/generated/
tags
ve/
ve3/

View File

@ -1,25 +0,0 @@
#!/bin/bash
# Initial version of script that is going to be used for release builds.
# NOTE: do not run this script as a super user
echo "Memgraph Release Building..."
# compile memgraph
cd ../build
rm -rf ./*
cmake -DCMAKE_BUILD_TYPE:String=debug ..
make -j8
# get the most recent version of memgraph exe
exe_name=`ls -t memgraph_* | head -1`
# create dst directory
mkdir -p ../release/${exe_name}
# copy all relevant files
cp ${exe_name} ../release/${exe_name}/memgraph
cp -r ../config ../release/${exe_name}/config
echo "Memgraph Release Building DONE"

View File

@ -2,10 +2,13 @@
# Initial version of script that is going to be used for release builds.
# NOTE: do not run this script as a super user
echo "Memgraph Release Building..."
if [[ $EUID -eq 0 ]]; then
echo "This script must NOT be run as root!" 1>&2
exit 1
fi
# compile memgraph
cd ../build
rm -rf ./*

66
release/build_interpreter Executable file
View File

@ -0,0 +1,66 @@
#!/bin/bash
# Initial version of script that is going to be used for release builds.
# Build & package (collect all required files in a folder).
function print_help () {
echo "Usage: $0 [--skip-compile]"
}
echo "Memgraph Release Building..."
if [[ $EUID -eq 0 ]]; then
echo "This script must NOT be run as root!" 1>&2
exit 1
fi
release_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
project_dir="${release_dir}/.."
skip_compile=false
while [[ $# -gt 0 ]]
do
case $1 in
-h|--help)
print_help
exit -1
;;
--skip-compile)
skip_compile=true
;;
*)
# unknown option
;;
esac
shift # past argument or value
done
echo "Skip compile: ${skip_compile}"
if [[ "${skip_compile}" == false ]]; then
# init (download libraries)
cd ${project_dir}
./init
# compile memgraph
cd ${project_dir}/build
rm -rf ./*
cmake -DCMAKE_BUILD_TYPE:String=debug ..
make -j8
fi
# get the most recent version of memgraph exe
cd ${project_dir}/build
exe_name=`ls -t memgraph_* | head -1`
release_folder=${release_dir}/${exe_name}
# extract only required files
# create dst directory
cd ${release_dir}
mkdir -p ${release_folder}
echo "Full build name: ${exe_name}" > ${release_folder}/build.info
# copy binary & config
cp ${project_dir}/build/${exe_name} ${release_folder}/memgraph
cp -r ${project_dir}/config ${release_folder}/config
echo "Memgraph Build ${exe_name} DONE"

76
release/package_deploy Executable file
View File

@ -0,0 +1,76 @@
#!/bin/bash
# Build, Package (docker image) & Deploy Memgraph
function print_help () {
echo "Usage: $0 [-h|--help] -s|--server deploy_server_domain -u|--user username -k|--key private_user_key [--skip-compile]"
}
working_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
project_dir="${working_dir}/.."
# argument parsing
required_args_no=0
skip_compile=false
while [[ $# -gt 0 ]]
do
case $1 in
-h|--help)
print_help
exit -1
;;
-s|--server)
deploy_server="$2"
required_args_no=$((required_args_no+1))
shift # past argument
;;
-u|--user)
deploy_user="$2"
required_args_no=$((required_args_no+1))
shift # past argument
;;
-k|--key)
deploy_key="$2"
required_args_no=$((required_args_no+1))
shift # past argument
;;
--skip-compile)
skip_compile=true
;;
*)
# unknown option
;;
esac
shift # past argument or value
done
if [[ ${required_args_no} -ne 3 ]]; then
print_help
exit 1
fi
echo "Deploy server: ${deploy_server}"
echo "Deploy user: ${deploy_user}"
echo "Deploy key: ${deploy_key}"
echo "Skip compile: ${skip_compile}"
## build binary
if [[ "${skip_compile}" == true ]]; then
${working_dir}/build_interpreter --skip-compile
else
${working_dir}/build_interpreter
fi
## build package (docker image)
cd ${working_dir}
package_name=`ls -t -d memgraph_*/ | head -1 | sed 's/.$//'`
docker build -t ${package_name} -f ${working_dir}/alpha_interpreter.dockerfile --build-arg build_name=${package_name} .
docker save ${package_name} > ${package_name}.tar.gz
## deploy
# copy package
scp -i ${deploy_key} ${package_name}.tar.gz ${deploy_user}@${deploy_server}:/home/${deploy_user}
# load package
ssh -i ${deploy_key} ${deploy_user}@${deploy_server} docker load -i /home/${deploy_user}/${package_name}.tar.gz
# spin up the instance
public_port=$(echo ${package_name} | grep -o "memgraph_[0-9]*_" | sed 's/[^0-9]*//g')
ssh -i ${deploy_key} ${deploy_user}@${deploy_server} docker run -d --name ${package_name} -p ${public_port}:7687 ${package_name}