Skip to content

Commit f8186e4

Browse files
committed
[misc] various changes
* test addition 10.6 build server * code simplification * small performance improvement
1 parent bcc40cf commit f8186e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1068
-698
lines changed

.travis.yml

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,59 +8,63 @@ addons:
88

99
before_install:
1010
- chmod +x .travis/script.sh
11+
- chmod +x .travis/build/build.sh
12+
- chmod +x .travis/build/docker-entrypoint.sh
13+
- chmod 777 .travis/build/
1114
- echo "MAVEN_OPTS='-Xmx384m'" > ~/.mavenrc
1215

1316
install:
14-
- wget -qO- 'https://github.com/tianon/pgp-happy-eyeballs/raw/master/hack-my-builds.sh' | bash
1517
- mkdir tmp
1618
- .travis/gen-ssl.sh mariadb.example.com tmp
17-
- export PROJ_PATH=`pwd`
18-
- export SSLCERT=$PROJ_PATH/tmp
19-
- export ENTRYPOINT=$PROJ_PATH/.travis/sql
19+
- export PACKET=8M
2020

2121
cache:
2222
directories:
2323
- $HOME/.m2
2424

2525
matrix:
2626
allow_failures:
27-
- env: DB=mysql:8.0 PACKET=8M ADDITIONAL_CONF=--default-authentication-plugin=mysql_native_password --caching_sha2_password_private_key_path=/etc/sslcert/server.key --caching_sha2_password_public_key_path=/etc/sslcert/public.key
27+
- env: DB=build:10.6
28+
jdk: openjdk11
29+
- env: DB=mysql:8.0 ADDITIONAL_CONF=--default-authentication-plugin=mysql_native_password --caching_sha2_password_private_key_path=/etc/sslcert/server.key --caching_sha2_password_public_key_path=/etc/sslcert/public.key
2830
jdk: openjdk11
2931
include:
30-
- env: SKYSQL=true PACKET=8M
32+
- env: DB=build:10.6
33+
jdk: openjdk11
34+
- env: SKYSQL=true
3135
jdk: openjdk11
32-
- env: SKYSQL_HA=true PACKET=8M
36+
- env: SKYSQL_HA=true
3337
jdk: openjdk11
34-
- env: DB=mysql:5.7 PACKET=8M
38+
- env: DB=mysql:5.7
3539
jdk: openjdk11
36-
- env: DB=mysql:8.0 PACKET=8M ADDITIONAL_CONF=--default-authentication-plugin=mysql_native_password --caching_sha2_password_private_key_path=/etc/sslcert/server.key --caching_sha2_password_public_key_path=/etc/sslcert/public.key
40+
- env: DB=mysql:8.0 ADDITIONAL_CONF=--default-authentication-plugin=mysql_native_password --caching_sha2_password_private_key_path=/etc/sslcert/server.key --caching_sha2_password_public_key_path=/etc/sslcert/public.key
3741
jdk: openjdk11
38-
- env: DB=mariadb:10.2 PACKET=8M
42+
- env: DB=mariadb:10.2
3943
jdk: openjdk11
40-
- env: DB=mariadb:10.3 PACKET=8M
44+
- env: DB=mariadb:10.3
4145
jdk: openjdk11
42-
- env: DB=mariadb:10.4 PACKET=8M
46+
- env: DB=mariadb:10.4
4347
jdk: openjdk11
44-
- env: DB=mariadb:10.5 PACKET=8M
48+
- env: DB=mariadb:10.5
4549
jdk: openjdk11
46-
- env: DB=mariadb:10.5 PACKET=8M
50+
- env: DB=mariadb:10.5
4751
jdk: oraclejdk11
48-
- env: DB=mariadb:10.5 PACKET=8M BENCH=true
52+
- env: DB=mariadb:10.5 BENCH=true
4953
jdk: oraclejdk11
50-
- env: DB=mariadb:10.5 PACKET=8M COMPRESSION=true
54+
- env: DB=mariadb:10.5 COMPRESSION=true
5155
jdk: oraclejdk11
5256
- env: DB=mariadb:10.5 PACKET=20M
5357
jdk: openjdk11
5458
- env: DB=mariadb:10.5 PACKET=40M
5559
jdk: openjdk11
56-
- env: DB=mariadb:10.5 PACKET=8M
60+
- env: DB=mariadb:10.5
5761
jdk: openjdk12
58-
- env: DB=mariadb:10.5 PACKET=8M MAXSCALE_VERSION=2.5.3 MAXSCALE_TEST_DISABLE=true SSLPORT=4009
62+
- env: DB=mariadb:10.5 MAXSCALE_VERSION=2.5.3 MAXSCALE_TEST_DISABLE=true SSLPORT=4009
5963
jdk: openjdk11
6064

6165
script:
62-
- if [ "$DB" = "build" ] ; then .travis/build/build.sh; fi
63-
- if [ "$DB" = "build" ] ; then docker build -t build:latest --label build .travis/build/; fi
66+
- if [[ "$DB" == build* ]] ; then .travis/build/build.sh; fi
67+
- if [[ "$DB" == build* ]] ; then docker build -t build:10.6 --label build .travis/build/; fi
6468
- .travis/script.sh
6569

6670
after_success:

.travis/build/Dockerfile

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# vim:set ft=dockerfile:
2+
FROM ubuntu:xenial
3+
4+
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
5+
RUN groupadd -r mysql && useradd -r -g mysql mysql
6+
7+
# https://bugs.debian.org/830696 (apt uses gpgv by default in newer releases, rather than gpg)
8+
RUN set -ex; \
9+
apt-get update; \
10+
if ! which gpg; then \
11+
apt-get install -y --no-install-recommends gnupg; \
12+
fi; \
13+
# Ubuntu includes "gnupg" (not "gnupg2", but still 2.x), but not dirmngr, and gnupg 2.x requires dirmngr
14+
# so, if we're not running gnupg 1.x, explicitly install dirmngr too
15+
if ! gpg --version | grep -q '^gpg (GnuPG) 1\.'; then \
16+
apt-get install -y --no-install-recommends dirmngr; \
17+
fi; \
18+
rm -rf /var/lib/apt/lists/*
19+
20+
# add gosu for easy step-down from root
21+
ENV GOSU_VERSION 1.10
22+
RUN set -ex; \
23+
\
24+
fetchDeps=' \
25+
ca-certificates \
26+
wget \
27+
'; \
28+
apt-get update; \
29+
apt-get install -y --no-install-recommends $fetchDeps; \
30+
rm -rf /var/lib/apt/lists/*; \
31+
\
32+
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
33+
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
34+
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
35+
\
36+
# verify the signature
37+
export GNUPGHOME="$(mktemp -d)"; \
38+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
39+
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
40+
command -v gpgconf > /dev/null && gpgconf --kill all || :; \
41+
rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \
42+
\
43+
chmod +x /usr/local/bin/gosu; \
44+
# verify that the binary works
45+
gosu nobody true; \
46+
\
47+
apt-get purge -y --auto-remove $fetchDeps
48+
49+
RUN mkdir /docker-entrypoint-initdb.d
50+
51+
# install "pwgen" for randomizing passwords
52+
# install "apt-transport-https" for Percona's repo (switched to https-only)
53+
RUN apt-get update && apt-get install -y --no-install-recommends \
54+
apt-transport-https ca-certificates \
55+
tzdata \
56+
pwgen \
57+
&& rm -rf /var/lib/apt/lists/*
58+
59+
RUN { \
60+
echo "mariadb-server-10.6" mysql-server/root_password password 'unused'; \
61+
echo "mariadb-server-10.6" mysql-server/root_password_again password 'unused'; \
62+
} | debconf-set-selections
63+
64+
RUN apt-get update -y
65+
RUN apt-get install -y software-properties-common wget
66+
#RUN apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
67+
#RUN apt-key adv --recv-keys --keyserver ha.pool.sks-keyservers.net F1656F24C74CD1D8
68+
#RUN echo 'deb http://yum.mariadb.org/galera/repo/deb xenial main' > /etc/apt/sources.list.d/galera-test-repo.list
69+
#RUN apt-get update -y
70+
71+
RUN apt-get install -y curl libdbi-perl rsync socat libnuma1 libaio1 zlib1g-dev libreadline5 libjemalloc1 libsnappy1v5 libcrack2
72+
73+
#RUN apt-get install -y galera3
74+
75+
COPY *.deb /root/
76+
RUN chmod 777 /root/*
77+
78+
RUN dpkg --install /root/mysql-common*
79+
RUN dpkg --install /root/mariadb-common*
80+
RUN dpkg -R --unpack /root/
81+
RUN apt-get install -f -y
82+
RUN ls -lrt /etc/mysql
83+
RUN ls -lrt /etc/mysql/mariadb.conf.d
84+
RUN rm -rf /var/lib/apt/lists/* \
85+
&& sed -ri 's/^user\s/#&/' /etc/mysql/my.cnf /etc/mysql/mariadb.conf.d/*.cnf \
86+
&& rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
87+
&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
88+
&& chmod 777 /var/run/mysqld \
89+
&& find /etc/mysql/ -name '*.cnf' -print0 \
90+
| xargs -0 grep -lZE '^(bind-address|log)' \
91+
| xargs -rt -0 sed -Ei 's/^(bind-address|log)/#&/' \
92+
&& echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/mariadb.conf.d/docker.cnf
93+
94+
VOLUME /var/lib/mysql
95+
96+
COPY docker-entrypoint.sh /usr/local/bin/
97+
RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat
98+
ENTRYPOINT ["docker-entrypoint.sh"]
99+
100+
EXPOSE 3306
101+
CMD ["mysqld"]
102+

.travis/build/build.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env bash
2+
3+
echo "**************************************************************************"
4+
echo "* searching for last complete build"
5+
echo "**************************************************************************"
6+
7+
wget -q -o /dev/null index.html http://hasky.askmonty.org/archive/10.6/
8+
grep -o ">build-[0-9]*" index.html | grep -o "[0-9]*" | tac | while read -r line ; do
9+
10+
curl -s --head http://hasky.askmonty.org/archive/10.6/build-$line/kvm-deb-xenial-amd64/md5sums.txt | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null
11+
if [ $? = "0" ]; then
12+
echo "**************************************************************************"
13+
echo "* Processing $line"
14+
echo "**************************************************************************"
15+
wget -q -o /dev/null -O $line.html http://hasky.askmonty.org/archive/10.6/build-$line/kvm-deb-xenial-amd64/debs/binary/
16+
grep -o ">[^\"]*\.deb" $line.html | grep -o "[^>]*\.deb" | while read -r file ; do
17+
if [[ "$file" =~ ^mariadb-plugin.* ]] ;
18+
then
19+
echo "skipped file: $file"
20+
else
21+
echo "download file: http://hasky.askmonty.org/archive/10.6/build-$line/kvm-deb-xenial-amd64/debs/binary/$file"
22+
wget -q -o /dev/null -O .travis/build/$file http://hasky.askmonty.org/archive/10.6/build-$line/kvm-deb-xenial-amd64/debs/binary/$file
23+
fi
24+
done
25+
26+
exit
27+
else
28+
echo "skip build $line"
29+
fi
30+
done
31+
32+
33+

0 commit comments

Comments
 (0)