-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathdeb-install.sh
More file actions
executable file
·146 lines (120 loc) · 5.13 KB
/
deb-install.sh
File metadata and controls
executable file
·146 lines (120 loc) · 5.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/usr/bin/env bash
# shellcheck disable=SC2154
set -e
# Buildbot installation test script
# this script can be called manually by providing the build URL as argument:
# ./deb-install.sh "https://buildbot.mariadb.org/#/builders/171/builds/7351"
# load common functions
# shellcheck disable=SC1091
. ./bash_lib.sh
# load OS variables
# shellcheck disable=SC1091
. /etc/os-release
# function to be able to run the script manually (see bash_lib.sh)
manual_run_switch "$1"
bb_print_env
# check that no related packages are present
# this should be a fresh and clean VM
if dpkg -l | grep -iE 'maria|mysql|galera'; then
bb_log_err "This VM should not contain the previous packages"
exit 1
fi
# check for needed commands
for cmd in wget gunzip; do
command -v $cmd >/dev/null || { bb_log_err "$cmd command not found" && exit 1; }
done
# setup repository //TEMP this should not be needed since installation is
# supposed to be done directly from artifacts, but maybe it is for dependencies?
# deb_setup_mariadb_mirror "$master_branch"
# setup galera repository (we need to test mariadb with latest produced galera version)A
deb_setup_bb_galera_artifacts_mirror
# setup repository for BB artifacts
deb_setup_bb_artifacts_mirror
# Once repo are created with aptly, adapt below:
# wget -O - "${artifactsURL}/${tarbuildnum}/${parentbuildername}/dists/${VERSION_CODENAME}/main/binary-$(deb_arch)/Packages.gz" | gunzip >Packages
wget "${artifactsURL}/${tarbuildnum}/${parentbuildername}/debs/Packages"
set -x
# Due to MDEV-14622 and its effect on Spider installation,
# Spider has to be installed separately after the server
package_list=$(grep "^Package:" Packages |
grep -vE 'galera|spider|columnstore' |
awk '{print $2}' | xargs)
if grep -qi spider Packages; then
spider_package_list=$(grep "^Package:" Packages |
grep 'spider' | awk '{print $2}' | xargs)
fi
if grep -qi columnstore Packages; then
if [[ $arch != "amd64" ]] && [[ $arch != "arm64" ]]; then
bb_log_warn "Due to MCOL-4123, Columnstore won't be installed on $arch"
else
columnstore_package_list=$(grep "^Package:" Packages |
grep 'columnstore' | awk '{print $2}' | xargs)
fi
fi
# apt get update may be running in the background (Ubuntu start).
apt_get_update
# set -e already set at start of script
trap save_failure_logs ERR
sudo sh -c "DEBIAN_FRONTEND=noninteractive MYSQLD_STARTUP_TIMEOUT=180 \
apt-get install -y $package_list $columnstore_package_list"
# MDEV-14622: Wait for mysql_upgrade running in the background to finish
wait_for_mariadb_upgrade
# To avoid confusing errors in further logic, do an explicit check whether the
# service is up and running
if [[ $systemdCapability == "yes" ]]; then
if ! sudo systemctl status mariadb --no-pager; then
sudo journalctl -xe --no-pager
bb_log_warn "mariadb service isn't running properly after installation"
bb_log_err "mariadb service didn't start properly after installation"
exit 1
fi
fi
# Due to MDEV-14622 and its effect on Spider installation,
# Spider has to be installed separately after the server
if [[ -n $spider_package_list ]]; then
sudo sh -c "DEBIAN_FRONTEND=noninteractive MYSQLD_STARTUP_TIMEOUT=180 \
apt-get install -y $spider_package_list"
fi
sudo mariadb --verbose -e "create database test; \
use test; \
create table t(a int primary key) engine=innodb; \
insert into t values (1); \
select * from t; \
drop table t; \
drop database test; \
create user galera identified by 'gal3ra123'; \
grant all on *.* to galera;"
sudo mariadb -e "select @@version"
bb_log_info "test for MDEV-18563, MDEV-18526"
# disabling -e so save_failure_logs won't have an effect while having setting up for next test
set +e
control_mariadb_server stop
sleep 1
sudo pkill -9 mysqld
for p in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin; do
if test -x $p/mariadb-install-db; then
sudo $p/mariadb-install-db --no-defaults --user=mysql --plugin-maturity=unknown
else
bb_log_info "$p/mariadb-install-db does not exist"
fi
done
sudo mariadb-install-db --no-defaults --user=mysql --plugin-maturity=unknown
set +e
## Install mariadb-test for further use
# sudo sh -c "DEBIAN_FRONTEND=noninteractive MYSQLD_STARTUP_TIMEOUT=180 apt-get install -y mariadb-test"
if dpkg -l | grep -i spider >/dev/null; then
bb_log_warn "Workaround for MDEV-22979, otherwise server hangs further in SST steps"
sudo sh -c "DEBIAN_FRONTEND=noninteractive MYSQLD_STARTUP_TIMEOUT=180 \
apt-get remove --allow-unauthenticated -y mariadb-plugin-spider" || true
sudo sh -c "DEBIAN_FRONTEND=noninteractive MYSQLD_STARTUP_TIMEOUT=180 \
apt-get purge --allow-unauthenticated -y mariadb-plugin-spider" || true
fi
if dpkg -l | grep -i columnstore >/dev/null; then
bb_log_warn "Workaround for a bunch of Columnstore bugs"
bb_log_warn "otherwise mysqldump in SST steps fails when Columnstore returns errors"
sudo sh -c "DEBIAN_FRONTEND=noninteractive MYSQLD_STARTUP_TIMEOUT=180 \
apt-get remove --allow-unauthenticated -y mariadb-plugin-columnstore" || true
sudo sh -c "DEBIAN_FRONTEND=noninteractive MYSQLD_STARTUP_TIMEOUT=180 \
apt-get purge --allow-unauthenticated -y mariadb-plugin-columnstore" || true
fi
bb_log_ok "all done"