Skip to content

Commit e37e180

Browse files
authored
Merge pull request #1387 from sodabrew/ci-ruby-3.4
CI: Add Ruby 3.4, MySQL 8.4, MariaDB 11.4, Ubuntu 24.04 and other updates
2 parents 58f8d00 + 078067a commit e37e180

File tree

9 files changed

+136
-15
lines changed

9 files changed

+136
-15
lines changed

.github/workflows/build.yml

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ jobs:
99
strategy:
1010
matrix:
1111
include:
12-
# Ruby 3.x on Ubuntu 22.04 LTS (latest at this time)
13-
- {os: ubuntu-22.04, ruby: 'head', db: mysql80}
12+
# Ruby 3.x on Ubuntu 24.04 LTS
13+
- {os: ubuntu-24.04, ruby: 'head', db: mysql84}
14+
- {os: ubuntu-24.04, ruby: '3.4', db: mysql84}
15+
16+
# Ruby 3.x on Ubuntu 22.04 LTS
17+
- {os: ubuntu-22.04, ruby: '3.4', db: mysql80}
1418
- {os: ubuntu-22.04, ruby: '3.3', db: mysql80}
1519
- {os: ubuntu-22.04, ruby: '3.2', db: mysql80}
1620
- {os: ubuntu-22.04, ruby: '3.1', db: mysql80}
@@ -26,24 +30,29 @@ jobs:
2630
- {os: ubuntu-20.04, ruby: '2.1', db: mysql80}
2731
- {os: ubuntu-20.04, ruby: '2.0', db: mysql80}
2832

33+
# MySQL 5.7 packages stopped after Ubuntu 18.04 Bionic
34+
# - {os: ubuntu-18.04, ruby: '2.7', db: mysql57}
35+
36+
# MariaDB LTS versions
2937
# db: on Linux, ci/setup.sh installs the specified packages
3038
# db: on MacOS, installs a Homebrew package use "[email protected]" to specify a version
3139

40+
- {os: ubuntu-24.04, ruby: '3.4', db: mariadb11.4}
3241
- {os: ubuntu-22.04, ruby: '3.0', db: mariadb10.11}
3342
- {os: ubuntu-22.04, ruby: '2.7', db: mariadb10.11}
3443
- {os: ubuntu-22.04, ruby: '3.0', db: mariadb10.6}
3544
- {os: ubuntu-20.04, ruby: '2.7', db: mariadb10.6}
36-
- {os: ubuntu-20.04, ruby: '2.7', db: mysql80}
37-
- {os: ubuntu-20.04, ruby: '2.7', db: mysql57}
3845

3946
# TODO - Windows CI
4047
# - {os: windows-2022, ruby: '3.2', db: mysql80}
4148
# - {os: windows-2022, ruby: '2.7', db: mysql80}
4249

4350
# Allow failure due to this issue:
4451
# https://github.com/brianmario/mysql2/issues/1194
45-
- {os: macos-latest, ruby: '2.6', db: mariadb, ssl: [email protected], allow-failure: true}
46-
- {os: macos-latest, ruby: '2.6', db: mysql, ssl: [email protected], allow-failure: true}
52+
- {os: macos-latest, ruby: '3.4', db: [email protected], ssl: openssl@3, allow-failure: true}
53+
- {os: macos-latest, ruby: '3.4', db: [email protected], ssl: openssl@3, allow-failure: true}
54+
- {os: macos-latest, ruby: '2.6', db: [email protected], ssl: [email protected], allow-failure: true}
55+
4756
# On the fail-fast: true, it cancels all in-progress jobs
4857
# if any matrix job fails, which we don't want.
4958
fail-fast: false

ci/mariadb114.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/env bash
2+
set -eux
3+
4+
apt purge -qq '^mysql*' '^libmysql*'
5+
rm -fr /etc/mysql
6+
rm -fr /var/lib/mysql
7+
8+
apt-key add support/C74CD1D8.asc
9+
add-apt-repository "deb https://deb.mariadb.org/11.4/ubuntu $(lsb_release -cs) main"
10+
apt install -y -o Dpkg::Options::='--force-confnew' mariadb-server libmariadb-dev

ci/mysql57.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ rm -fr /etc/mysql
77
rm -fr /var/lib/mysql
88
apt-key add support/5072E1F5.asc # old signing key
99
apt-key add support/3A79BD29.asc # 5.7.37 and higher
10-
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C
10+
apt-key add support/B7B3B788A8D3785C.asc # 8.1 and higher
1111
# Verify the repository as add-apt-repository does not.
1212
wget -q --spider http://repo.mysql.com/apt/ubuntu/dists/$(lsb_release -cs)/mysql-5.7
1313
add-apt-repository 'http://repo.mysql.com/apt/ubuntu mysql-5.7'

ci/mysql80.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ rm -fr /etc/mysql
77
rm -fr /var/lib/mysql
88
apt-key add support/5072E1F5.asc # old signing key
99
apt-key add support/3A79BD29.asc # 8.0.28 and higher
10-
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C
10+
apt-key add support/B7B3B788A8D3785C.asc # 8.1 and higher
1111
# Verify the repository as add-apt-repository does not.
1212
wget -q --spider http://repo.mysql.com/apt/ubuntu/dists/$(lsb_release -cs)/mysql-8.0
1313
add-apt-repository 'http://repo.mysql.com/apt/ubuntu mysql-8.0'

ci/mysql84.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
3+
set -eux
4+
5+
apt-get purge -qq '^mysql*' '^libmysql*'
6+
rm -fr /etc/mysql
7+
rm -fr /var/lib/mysql
8+
apt-key add support/B7B3B788A8D3785C.asc # 8.1 and higher
9+
# Verify the repository as add-apt-repository does not.
10+
wget -q --spider http://repo.mysql.com/apt/ubuntu/dists/$(lsb_release -cs)/mysql-8.4-lts
11+
add-apt-repository 'http://repo.mysql.com/apt/ubuntu mysql-8.4-lts'
12+
apt-get update -qq
13+
apt-get install -qq mysql-server libmysqlclient-dev

ci/setup.sh

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ set -eux
44

55
# Change the password to be empty.
66
CHANGED_PASSWORD=false
7+
CHANGED_PASSWORD_SHA2=false
78
# Change the password to be empty, recreating the root user on mariadb < 10.2
89
# where ALTER USER is not available.
910
# https://stackoverflow.com/questions/56052177/
@@ -45,7 +46,13 @@ fi
4546
# Install MySQL 8.0 if DB=mysql80
4647
if [[ -n ${DB-} && x$DB =~ ^xmysql80 ]]; then
4748
sudo bash ci/mysql80.sh
48-
CHANGED_PASSWORD=true
49+
CHANGED_PASSWORD_SHA2=true
50+
fi
51+
52+
# Install MySQL 8.4 if DB=mysql84
53+
if [[ -n ${DB-} && x$DB =~ ^xmysql84 ]]; then
54+
sudo bash ci/mysql84.sh
55+
CHANGED_PASSWORD_SHA2=true
4956
fi
5057

5158
# Install MariaDB 10.6 if DB=mariadb10.6
@@ -60,6 +67,12 @@ if [[ -n ${GITHUB_ACTIONS-} && -n ${DB-} && x$DB =~ ^xmariadb10.11 ]]; then
6067
CHANGED_PASSWORD_BY_RECREATE=true
6168
fi
6269

70+
# Install MariaDB 11.4 if DB=mariadb11.4
71+
if [[ -n ${GITHUB_ACTIONS-} && -n ${DB-} && x$DB =~ ^xmariadb11.4 ]]; then
72+
sudo bash ci/mariadb114.sh
73+
CHANGED_PASSWORD_BY_RECREATE=true
74+
fi
75+
6376
# Install MySQL/MariaDB if OS=darwin
6477
if [[ x$OSTYPE =~ ^xdarwin ]]; then
6578
brew update > /dev/null
@@ -71,6 +84,7 @@ if [[ x$OSTYPE =~ ^xdarwin ]]; then
7184

7285
brew info "$DB"
7386
brew install "$DB" zstd
87+
brew link "$DB" # explicitly activate in case of kegged LTS versions
7488
DB_PREFIX="$(brew --prefix "${DB}")"
7589
export PATH="${DB_PREFIX}/bin:${PATH}"
7690
export LDFLAGS="-L${DB_PREFIX}/lib"
@@ -108,6 +122,11 @@ if [ "${CHANGED_PASSWORD}" = true ]; then
108122
# https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/
109123
sudo mysql ${MYSQL_OPTS} -u "${DB_SYS_USER}" \
110124
-e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''"
125+
elif [ "${CHANGED_PASSWORD_SHA2}" = true ]; then
126+
# In MySQL 5.7, the default authentication plugin is mysql_native_password.
127+
# As of MySQL 8.0, the default authentication plugin is changed to caching_sha2_password.
128+
sudo mysql ${MYSQL_OPTS} -u "${DB_SYS_USER}" \
129+
-e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY ''"
111130
elif [ "${CHANGED_PASSWORD_BY_RECREATE}" = true ]; then
112131
sudo mysql ${MYSQL_OPTS} -u "${DB_SYS_USER}" <<SQL
113132
DROP USER 'root'@'localhost';

spec/mysql2/result_spec.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
it "should return correct types" do
134134
expected_types = %w[
135135
mediumint(9)
136-
varchar(10)
136+
varchar(13)
137137
bit(64)
138138
bit(1)
139139
tinyint(4)
@@ -152,16 +152,16 @@
152152
timestamp
153153
time
154154
year(4)
155-
char(10)
156-
varchar(10)
155+
char(13)
156+
varchar(13)
157157
binary(10)
158158
varbinary(10)
159159
tinyblob
160-
tinytext
160+
text(1020)
161161
blob
162-
text
162+
text(262140)
163163
mediumblob
164-
mediumtext
164+
text(67108860)
165165
longblob
166166
longtext
167167
enum

spec/spec_helper.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
RSpec.configure do |config|
2020
config.disable_monkey_patching!
2121

22+
config.expect_with :rspec do |expectations|
23+
expectations.max_formatted_output_length = 1200
24+
end
25+
2226
def with_internal_encoding(encoding)
2327
old_enc = Encoding.default_internal
2428
old_verbose = $VERBOSE

support/B7B3B788A8D3785C.asc

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
Comment: Hostname:
3+
Version: Hockeypuck 2.2
4+
5+
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
64+
73BwBlSVqPeJ3dPGq4CW53iVYPM=
65+
=mheB
66+
-----END PGP PUBLIC KEY BLOCK-----

0 commit comments

Comments
 (0)