Skip to content

Commit 48921f8

Browse files
arthurschreiberclaudemattlord
authored
[release-21.0] CI: deflakes, fork runner fallback, MySQL install, codecov gating (#20196)
Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Matt Lord <mattalord@gmail.com>
1 parent f7575b5 commit 48921f8

99 files changed

Lines changed: 1511 additions & 652 deletions

File tree

Some content is hidden

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

.github/workflows/cluster_endtoend_12.yml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,30 +90,43 @@ jobs:
9090
if: steps.changes.outputs.end_to_end == 'true'
9191
timeout-minutes: 10
9292
run: |
93-
94-
# Get key to latest MySQL repo
95-
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96-
# Setup MySQL 8.0
97-
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
98-
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
99-
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
93+
export DEBIAN_FRONTEND="noninteractive"
10094
sudo apt-get -qq update
10195
96+
# Uninstall any previously installed MySQL first; the ubuntu-24.04 runner
97+
# image ships with MySQL pre-installed, which conflicts with our install.
98+
sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common
99+
sudo apt-get -y autoremove
100+
sudo apt-get -y autoclean
101+
sudo rm -rf /var/lib/mysql
102+
sudo rm -rf /etc/mysql
103+
102104
# We have to install this old version of libaio1 in case we end up testing with MySQL 5.7. See also:
103105
# https://bugs.launchpad.net/ubuntu/+source/libaio/+bug/2067501
104-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
106+
wget http://archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
105107
sudo dpkg -i libaio1_0.3.112-13build1_amd64.deb
106108
# libtinfo5 is also needed for older MySQL 5.7 builds.
107-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
109+
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
108110
sudo dpkg -i libtinfo5_6.3-2ubuntu0.1_amd64.deb
109111
112+
# Get key to latest MySQL repo
113+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
114+
# Setup MySQL 8.0. 0.8.35-1 ships the current (non-expired) MySQL repo key.
115+
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
116+
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
117+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
118+
sudo apt-get -qq update
119+
110120
# Install everything else we need, and configure
111121
sudo apt-get -qq install -y mysql-server mysql-shell mysql-client make unzip g++ etcd-client etcd-server curl git wget eatmydata xz-utils libncurses6
112122
113123
sudo service mysql stop
114124
sudo service etcd stop
125+
# The apparmor profile is removed when we uninstall the pre-installed MySQL,
126+
# so we recreate an empty one before disabling it.
127+
sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld"
115128
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
129+
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
117130
go mod download
118131
119132
# install JUnit report formatter

.github/workflows/cluster_endtoend_13.yml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,30 +90,43 @@ jobs:
9090
if: steps.changes.outputs.end_to_end == 'true'
9191
timeout-minutes: 10
9292
run: |
93-
94-
# Get key to latest MySQL repo
95-
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96-
# Setup MySQL 8.0
97-
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
98-
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
99-
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
93+
export DEBIAN_FRONTEND="noninteractive"
10094
sudo apt-get -qq update
10195
96+
# Uninstall any previously installed MySQL first; the ubuntu-24.04 runner
97+
# image ships with MySQL pre-installed, which conflicts with our install.
98+
sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common
99+
sudo apt-get -y autoremove
100+
sudo apt-get -y autoclean
101+
sudo rm -rf /var/lib/mysql
102+
sudo rm -rf /etc/mysql
103+
102104
# We have to install this old version of libaio1 in case we end up testing with MySQL 5.7. See also:
103105
# https://bugs.launchpad.net/ubuntu/+source/libaio/+bug/2067501
104-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
106+
wget http://archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
105107
sudo dpkg -i libaio1_0.3.112-13build1_amd64.deb
106108
# libtinfo5 is also needed for older MySQL 5.7 builds.
107-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
109+
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
108110
sudo dpkg -i libtinfo5_6.3-2ubuntu0.1_amd64.deb
109111
112+
# Get key to latest MySQL repo
113+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
114+
# Setup MySQL 8.0. 0.8.35-1 ships the current (non-expired) MySQL repo key.
115+
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
116+
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
117+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
118+
sudo apt-get -qq update
119+
110120
# Install everything else we need, and configure
111121
sudo apt-get -qq install -y mysql-server mysql-shell mysql-client make unzip g++ etcd-client etcd-server curl git wget eatmydata xz-utils libncurses6
112122
113123
sudo service mysql stop
114124
sudo service etcd stop
125+
# The apparmor profile is removed when we uninstall the pre-installed MySQL,
126+
# so we recreate an empty one before disabling it.
127+
sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld"
115128
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
129+
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
117130
go mod download
118131
119132
# install JUnit report formatter

.github/workflows/cluster_endtoend_15.yml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,30 +90,43 @@ jobs:
9090
if: steps.changes.outputs.end_to_end == 'true'
9191
timeout-minutes: 10
9292
run: |
93-
94-
# Get key to latest MySQL repo
95-
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96-
# Setup MySQL 8.0
97-
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
98-
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
99-
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
93+
export DEBIAN_FRONTEND="noninteractive"
10094
sudo apt-get -qq update
10195
96+
# Uninstall any previously installed MySQL first; the ubuntu-24.04 runner
97+
# image ships with MySQL pre-installed, which conflicts with our install.
98+
sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common
99+
sudo apt-get -y autoremove
100+
sudo apt-get -y autoclean
101+
sudo rm -rf /var/lib/mysql
102+
sudo rm -rf /etc/mysql
103+
102104
# We have to install this old version of libaio1 in case we end up testing with MySQL 5.7. See also:
103105
# https://bugs.launchpad.net/ubuntu/+source/libaio/+bug/2067501
104-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
106+
wget http://archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
105107
sudo dpkg -i libaio1_0.3.112-13build1_amd64.deb
106108
# libtinfo5 is also needed for older MySQL 5.7 builds.
107-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
109+
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
108110
sudo dpkg -i libtinfo5_6.3-2ubuntu0.1_amd64.deb
109111
112+
# Get key to latest MySQL repo
113+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
114+
# Setup MySQL 8.0. 0.8.35-1 ships the current (non-expired) MySQL repo key.
115+
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
116+
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
117+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
118+
sudo apt-get -qq update
119+
110120
# Install everything else we need, and configure
111121
sudo apt-get -qq install -y mysql-server mysql-shell mysql-client make unzip g++ etcd-client etcd-server curl git wget eatmydata xz-utils libncurses6
112122
113123
sudo service mysql stop
114124
sudo service etcd stop
125+
# The apparmor profile is removed when we uninstall the pre-installed MySQL,
126+
# so we recreate an empty one before disabling it.
127+
sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld"
115128
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
129+
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
117130
go mod download
118131
119132
# install JUnit report formatter

.github/workflows/cluster_endtoend_18.yml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,30 +90,43 @@ jobs:
9090
if: steps.changes.outputs.end_to_end == 'true'
9191
timeout-minutes: 10
9292
run: |
93-
94-
# Get key to latest MySQL repo
95-
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96-
# Setup MySQL 8.0
97-
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
98-
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
99-
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
93+
export DEBIAN_FRONTEND="noninteractive"
10094
sudo apt-get -qq update
10195
96+
# Uninstall any previously installed MySQL first; the ubuntu-24.04 runner
97+
# image ships with MySQL pre-installed, which conflicts with our install.
98+
sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common
99+
sudo apt-get -y autoremove
100+
sudo apt-get -y autoclean
101+
sudo rm -rf /var/lib/mysql
102+
sudo rm -rf /etc/mysql
103+
102104
# We have to install this old version of libaio1 in case we end up testing with MySQL 5.7. See also:
103105
# https://bugs.launchpad.net/ubuntu/+source/libaio/+bug/2067501
104-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
106+
wget http://archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
105107
sudo dpkg -i libaio1_0.3.112-13build1_amd64.deb
106108
# libtinfo5 is also needed for older MySQL 5.7 builds.
107-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
109+
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
108110
sudo dpkg -i libtinfo5_6.3-2ubuntu0.1_amd64.deb
109111
112+
# Get key to latest MySQL repo
113+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
114+
# Setup MySQL 8.0. 0.8.35-1 ships the current (non-expired) MySQL repo key.
115+
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
116+
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
117+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
118+
sudo apt-get -qq update
119+
110120
# Install everything else we need, and configure
111121
sudo apt-get -qq install -y mysql-server mysql-shell mysql-client make unzip g++ etcd-client etcd-server curl git wget eatmydata xz-utils libncurses6
112122
113123
sudo service mysql stop
114124
sudo service etcd stop
125+
# The apparmor profile is removed when we uninstall the pre-installed MySQL,
126+
# so we recreate an empty one before disabling it.
127+
sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld"
115128
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
129+
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
117130
go mod download
118131
119132
# install JUnit report formatter

.github/workflows/cluster_endtoend_21.yml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,30 +90,43 @@ jobs:
9090
if: steps.changes.outputs.end_to_end == 'true'
9191
timeout-minutes: 10
9292
run: |
93-
94-
# Get key to latest MySQL repo
95-
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96-
# Setup MySQL 8.0
97-
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
98-
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
99-
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
93+
export DEBIAN_FRONTEND="noninteractive"
10094
sudo apt-get -qq update
10195
96+
# Uninstall any previously installed MySQL first; the ubuntu-24.04 runner
97+
# image ships with MySQL pre-installed, which conflicts with our install.
98+
sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common
99+
sudo apt-get -y autoremove
100+
sudo apt-get -y autoclean
101+
sudo rm -rf /var/lib/mysql
102+
sudo rm -rf /etc/mysql
103+
102104
# We have to install this old version of libaio1 in case we end up testing with MySQL 5.7. See also:
103105
# https://bugs.launchpad.net/ubuntu/+source/libaio/+bug/2067501
104-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
106+
wget http://archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
105107
sudo dpkg -i libaio1_0.3.112-13build1_amd64.deb
106108
# libtinfo5 is also needed for older MySQL 5.7 builds.
107-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
109+
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
108110
sudo dpkg -i libtinfo5_6.3-2ubuntu0.1_amd64.deb
109111
112+
# Get key to latest MySQL repo
113+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
114+
# Setup MySQL 8.0. 0.8.35-1 ships the current (non-expired) MySQL repo key.
115+
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
116+
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
117+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
118+
sudo apt-get -qq update
119+
110120
# Install everything else we need, and configure
111121
sudo apt-get -qq install -y mysql-server mysql-shell mysql-client make unzip g++ etcd-client etcd-server curl git wget eatmydata xz-utils libncurses6
112122
113123
sudo service mysql stop
114124
sudo service etcd stop
125+
# The apparmor profile is removed when we uninstall the pre-installed MySQL,
126+
# so we recreate an empty one before disabling it.
127+
sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld"
115128
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
129+
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
117130
go mod download
118131
119132
# install JUnit report formatter

.github/workflows/cluster_endtoend_backup_pitr.yml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,30 +90,43 @@ jobs:
9090
if: steps.changes.outputs.end_to_end == 'true'
9191
timeout-minutes: 10
9292
run: |
93-
94-
# Get key to latest MySQL repo
95-
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96-
# Setup MySQL 8.0
97-
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
98-
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
99-
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
93+
export DEBIAN_FRONTEND="noninteractive"
10094
sudo apt-get -qq update
10195
96+
# Uninstall any previously installed MySQL first; the ubuntu-24.04 runner
97+
# image ships with MySQL pre-installed, which conflicts with our install.
98+
sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common
99+
sudo apt-get -y autoremove
100+
sudo apt-get -y autoclean
101+
sudo rm -rf /var/lib/mysql
102+
sudo rm -rf /etc/mysql
103+
102104
# We have to install this old version of libaio1 in case we end up testing with MySQL 5.7. See also:
103105
# https://bugs.launchpad.net/ubuntu/+source/libaio/+bug/2067501
104-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
106+
wget http://archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb
105107
sudo dpkg -i libaio1_0.3.112-13build1_amd64.deb
106108
# libtinfo5 is also needed for older MySQL 5.7 builds.
107-
curl -L -O http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
109+
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
108110
sudo dpkg -i libtinfo5_6.3-2ubuntu0.1_amd64.deb
109111
112+
# Get key to latest MySQL repo
113+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
114+
# Setup MySQL 8.0. 0.8.35-1 ships the current (non-expired) MySQL repo key.
115+
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
116+
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
117+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
118+
sudo apt-get -qq update
119+
110120
# Install everything else we need, and configure
111121
sudo apt-get -qq install -y mysql-server mysql-shell mysql-client make unzip g++ etcd-client etcd-server curl git wget eatmydata xz-utils libncurses6
112122
113123
sudo service mysql stop
114124
sudo service etcd stop
125+
# The apparmor profile is removed when we uninstall the pre-installed MySQL,
126+
# so we recreate an empty one before disabling it.
127+
sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld"
115128
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
129+
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
117130
go mod download
118131
119132
# install JUnit report formatter

0 commit comments

Comments
 (0)