You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
chore(build): better build pipeline
This commit is contained in:
committed by
Leonid Fedorov
parent
ddfbeb192f
commit
2d8e16f08e
@ -97,7 +97,7 @@ install_deps() {
|
|||||||
bison cmake libncurses5-dev python3 libaio-dev libsystemd-dev libpcre2-dev libperl-dev libssl-dev libxml2-dev \
|
bison cmake libncurses5-dev python3 libaio-dev libsystemd-dev libpcre2-dev libperl-dev libssl-dev libxml2-dev \
|
||||||
libkrb5-dev flex libpam-dev git libsnappy-dev libcurl4-openssl-dev libgtest-dev libcppunit-dev googletest \
|
libkrb5-dev flex libpam-dev git libsnappy-dev libcurl4-openssl-dev libgtest-dev libcppunit-dev googletest \
|
||||||
libjemalloc-dev liblz-dev liblzo2-dev liblzma-dev liblz4-dev libbz2-dev libbenchmark-dev libdistro-info-perl \
|
libjemalloc-dev liblz-dev liblzo2-dev liblzma-dev liblz4-dev libbz2-dev libbenchmark-dev libdistro-info-perl \
|
||||||
graphviz devscripts ccache equivs eatmydata curl"
|
graphviz devscripts ccache equivs eatmydata curl python3"
|
||||||
|
|
||||||
if [[ "$OS" == *"rockylinux:8"* || "$OS" == *"rocky:8"* ]]; then
|
if [[ "$OS" == *"rockylinux:8"* || "$OS" == *"rocky:8"* ]]; then
|
||||||
command="dnf install -y curl 'dnf-command(config-manager)' && dnf config-manager --set-enabled powertools && \
|
command="dnf install -y curl 'dnf-command(config-manager)' && dnf config-manager --set-enabled powertools && \
|
||||||
@ -144,6 +144,9 @@ if [[ ${BRANCH_NAME_TO_OUTDIR} = true ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
disable_git_restore_frozen_revision() {
|
disable_git_restore_frozen_revision() {
|
||||||
|
if [[ $DO_NOT_FREEZE_REVISION = true ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
cd $MDB_SOURCE_PATH
|
cd $MDB_SOURCE_PATH
|
||||||
git config submodule.storage/columnstore/columnstore.update none
|
git config submodule.storage/columnstore/columnstore.update none
|
||||||
cd - >/dev/null
|
cd - >/dev/null
|
||||||
@ -152,6 +155,15 @@ disable_git_restore_frozen_revision() {
|
|||||||
DEP_GRAPH_PATH="$MARIA_BUILD_PATH/dependency_graph/mariadb.dot"
|
DEP_GRAPH_PATH="$MARIA_BUILD_PATH/dependency_graph/mariadb.dot"
|
||||||
|
|
||||||
stop_service() {
|
stop_service() {
|
||||||
|
if [[ $RESTART_SERVICES = false || $RECOMPILE_ONLY = true ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
error "Please run script as root to be able to manage services"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
message_split
|
message_split
|
||||||
message "Stopping MariaDB services"
|
message "Stopping MariaDB services"
|
||||||
systemctl stop mariadb
|
systemctl stop mariadb
|
||||||
@ -169,6 +181,15 @@ check_service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
|
if [[ $RESTART_SERVICES = false || $RECOMPILE_ONLY = true ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
error "Please run script as root to be able to manage services"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
message_split
|
message_split
|
||||||
message "Starting MariaDB services"
|
message "Starting MariaDB services"
|
||||||
systemctl start mariadb-columnstore
|
systemctl start mariadb-columnstore
|
||||||
@ -185,16 +206,26 @@ start_service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
start_storage_manager_if_needed() {
|
start_storage_manager_if_needed() {
|
||||||
if [[ $CLOUD_STORAGE_ENABLED = true ]]; then
|
if [[ $CLOUD_STORAGE_ENABLED = false ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
export MCS_USE_S3_STORAGE=1
|
export MCS_USE_S3_STORAGE=1
|
||||||
message_split
|
message_split
|
||||||
message "Starting Storage Manager service"
|
message "Starting Storage Manager service"
|
||||||
systemctl start mcs-storagemanager
|
systemctl start mcs-storagemanager
|
||||||
check_service mcs-storagemanager
|
check_service mcs-storagemanager
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clean_old_installation() {
|
clean_old_installation() {
|
||||||
|
if [[ $NO_CLEAN = true || $RECOMPILE_ONLY = true ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
error "Please run script as root to be able to clean installations"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
message_split
|
message_split
|
||||||
message "Cleaning old installation"
|
message "Cleaning old installation"
|
||||||
rm -rf /var/lib/columnstore/data1/*
|
rm -rf /var/lib/columnstore/data1/*
|
||||||
@ -479,19 +510,28 @@ build_binary() {
|
|||||||
message "Configuring cmake silently"
|
message "Configuring cmake silently"
|
||||||
${CMAKE_BIN_NAME} "${MDB_CMAKE_FLAGS[@]}" -S"$MDB_SOURCE_PATH" -B"$MARIA_BUILD_PATH" | spinner
|
${CMAKE_BIN_NAME} "${MDB_CMAKE_FLAGS[@]}" -S"$MDB_SOURCE_PATH" -B"$MARIA_BUILD_PATH" | spinner
|
||||||
message_split
|
message_split
|
||||||
check_debian_install_file
|
# check_debian_install_file // will be uncommented later
|
||||||
generate_svgs
|
generate_svgs
|
||||||
|
|
||||||
${CMAKE_BIN_NAME} --build "$MARIA_BUILD_PATH" -j "$CPUS" | onelinearizator &&
|
${CMAKE_BIN_NAME} --build "$MARIA_BUILD_PATH" -j "$CPUS" | onelinearizator
|
||||||
message "Installing silently" &&
|
|
||||||
${CMAKE_BIN_NAME} --install "$MARIA_BUILD_PATH" | spinner 30
|
|
||||||
|
|
||||||
check_errorcode
|
check_errorcode
|
||||||
|
|
||||||
message "Adding symbol link to compile_commands.json to the source root"
|
message "Adding symbol link to compile_commands.json to the source root"
|
||||||
ln -sf "$MARIA_BUILD_PATH/compile_commands.json" "$MDB_SOURCE_PATH"
|
ln -sf "$MARIA_BUILD_PATH/compile_commands.json" "$MDB_SOURCE_PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
install_binary() {
|
||||||
|
if [[ $RECOMPILE_ONLY = true ]]; then
|
||||||
|
warn "No binary installation done"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
message "Installing silently"
|
||||||
|
cd $MDB_SOURCE_PATH
|
||||||
|
${CMAKE_BIN_NAME} --install "$MARIA_BUILD_PATH" | spinner 30
|
||||||
|
check_errorcode
|
||||||
|
}
|
||||||
|
|
||||||
check_user_and_group() {
|
check_user_and_group() {
|
||||||
user=$1
|
user=$1
|
||||||
if [ -z "$(grep "$user" /etc/passwd)" ]; then
|
if [ -z "$(grep "$user" /etc/passwd)" ]; then
|
||||||
@ -510,24 +550,26 @@ run_unit_tests() {
|
|||||||
message_split
|
message_split
|
||||||
if [[ $SKIP_UNIT_TESTS = true ]]; then
|
if [[ $SKIP_UNIT_TESTS = true ]]; then
|
||||||
warn "Skipping unittests"
|
warn "Skipping unittests"
|
||||||
else
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
message "Running unittests"
|
message "Running unittests"
|
||||||
cd $MARIA_BUILD_PATH
|
cd $MARIA_BUILD_PATH
|
||||||
${CTEST_BIN_NAME} . -R columnstore: -j $(nproc) --progress --output-on-failure
|
${CTEST_BIN_NAME} . -R columnstore: -j $(nproc) --progress --output-on-failure
|
||||||
cd - >/dev/null
|
cd - >/dev/null
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
run_microbenchmarks_tests() {
|
run_microbenchmarks_tests() {
|
||||||
message_split
|
message_split
|
||||||
if [[ $RUN_BENCHMARKS = false ]]; then
|
if [[ $RUN_BENCHMARKS = false ]]; then
|
||||||
warn "Skipping microbenchmarks"
|
warn "Skipping microbenchmarks"
|
||||||
else
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
message "Runnning microbenchmarks"
|
message "Runnning microbenchmarks"
|
||||||
cd $MARIA_BUILD_PATH
|
cd $MARIA_BUILD_PATH
|
||||||
${CTEST_BIN_NAME} . -V -R columnstore_microbenchmarks: -j $(nproc) --progress
|
${CTEST_BIN_NAME} . -V -R columnstore_microbenchmarks: -j $(nproc) --progress
|
||||||
cd - >/dev/null
|
cd - >/dev/null
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_plugins_for_bootstrap() {
|
disable_plugins_for_bootstrap() {
|
||||||
@ -593,7 +635,10 @@ make_dir() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
if [[ $RECOMPILE_ONLY = false ]]; then
|
if [[ $RECOMPILE_ONLY = true ]]; then
|
||||||
|
warn "No install configuration done"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$EUID" -ne 0 ]; then
|
if [ "$EUID" -ne 0 ]; then
|
||||||
error "Please run script as root to install MariaDb to system paths"
|
error "Please run script as root to install MariaDb to system paths"
|
||||||
@ -617,8 +662,8 @@ install() {
|
|||||||
|
|
||||||
make_dir /var/lib/mysql
|
make_dir /var/lib/mysql
|
||||||
|
|
||||||
message "Running mysql_install_db"
|
message "Running mariadb-install-db"
|
||||||
sudo -u mysql mysql_install_db --rpm --user=mysql >/dev/null
|
sudo -u mysql mariadb-install-db --rpm --user=mysql >/dev/null
|
||||||
|
|
||||||
enable_columnstore_back
|
enable_columnstore_back
|
||||||
|
|
||||||
@ -663,7 +708,6 @@ install() {
|
|||||||
columnstore-post-install --rpmmode=install
|
columnstore-post-install --rpmmode=install
|
||||||
message "Running install_mcs_mysql"
|
message "Running install_mcs_mysql"
|
||||||
install_mcs_mysql.sh
|
install_mcs_mysql.sh
|
||||||
fi
|
|
||||||
|
|
||||||
chown -R syslog:syslog /var/log/mariadb/
|
chown -R syslog:syslog /var/log/mariadb/
|
||||||
chmod 777 /var/log/mariadb/
|
chmod 777 /var/log/mariadb/
|
||||||
@ -671,18 +715,20 @@ install() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
smoke() {
|
smoke() {
|
||||||
if [[ $SKIP_SMOKE = false ]]; then
|
if [[ $RECOMPILE_ONLY = true || $SKIP_SMOKE = true || $RESTART_SERVICES = false ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
message_split
|
message_split
|
||||||
message "Creating test database"
|
message "Creating test database"
|
||||||
mariadb -e "create database if not exists test;"
|
mariadb -e "create database if not exists test;"
|
||||||
message "Selecting magic numbers"
|
message "Selecting magic numbers"
|
||||||
MAGIC=$(mysql -N test <"$MDB_SOURCE_PATH"/storage/columnstore/columnstore/tests/scripts/smoke.sql)
|
MAGIC=$(mariadb -N test <"$MDB_SOURCE_PATH"/storage/columnstore/columnstore/tests/scripts/smoke.sql)
|
||||||
if [[ $MAGIC == '42' ]]; then
|
if [[ $MAGIC == '42' ]]; then
|
||||||
message "Great answer correct!"
|
message "Great answer correct!"
|
||||||
else
|
else
|
||||||
warn "Smoke failed, answer is '$MAGIC'"
|
warn "Smoke failed, answer is '$MAGIC'"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ $DO_NOT_FREEZE_REVISION = false ]]; then
|
if [[ $DO_NOT_FREEZE_REVISION = false ]]; then
|
||||||
@ -692,23 +738,22 @@ fi
|
|||||||
construct_cmake_flags
|
construct_cmake_flags
|
||||||
init_submodules
|
init_submodules
|
||||||
|
|
||||||
if [[ $BUILD_PACKAGES = false ]]; then
|
if [[ $BUILD_PACKAGES = true ]]; then
|
||||||
stop_service
|
modify_packaging
|
||||||
|
build_package
|
||||||
|
message_splitted "PACKAGES BUILD FINISHED"
|
||||||
|
|
||||||
if [[ $NO_CLEAN = false ]]; then
|
return 0
|
||||||
clean_old_installation
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
stop_service
|
||||||
|
clean_old_installation
|
||||||
build_binary
|
build_binary
|
||||||
|
install_binary
|
||||||
run_unit_tests
|
run_unit_tests
|
||||||
run_microbenchmarks_tests
|
run_microbenchmarks_tests
|
||||||
install
|
install
|
||||||
if [[ $RESTART_SERVICES = true ]]; then
|
|
||||||
start_service
|
start_service
|
||||||
smoke
|
smoke
|
||||||
fi
|
|
||||||
else
|
|
||||||
modify_packaging
|
|
||||||
build_package
|
|
||||||
fi
|
|
||||||
|
|
||||||
message_splitted "FINISHED"
|
message_splitted "FINISHED"
|
||||||
|
Reference in New Issue
Block a user