Skip to content

Commit 7179d27

Browse files
vitess-bot[bot]vitess-bot
authored andcommitted
Cherry-pick 885917d with conflicts
1 parent a6d792f commit 7179d27

File tree

95 files changed

+1343
-290
lines changed

Some content is hidden

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

95 files changed

+1343
-290
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: 'Setup MySQL'
2+
description: 'Set up MySQL server for use in GitHub Actions workflows'
3+
inputs:
4+
flavor:
5+
description: 'The flavor of MySQL to use (e.g. mysql-5.7, mysql-8.0, mysql-8.4)'
6+
required: true
7+
runs:
8+
using: "composite"
9+
steps:
10+
- name: Setup MySQL
11+
shell: bash
12+
run: |
13+
export DEBIAN_FRONTEND="noninteractive"
14+
sudo apt-get update
15+
16+
# Uninstall any previously installed MySQL first
17+
# sudo systemctl stop apparmor
18+
sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common
19+
sudo apt-get -y autoremove
20+
sudo apt-get -y autoclean
21+
# sudo deluser mysql
22+
sudo rm -rf /var/lib/mysql
23+
sudo rm -rf /etc/mysql
24+
25+
# We have to install this old version of libaio1. See also:
26+
# https://bugs.launchpad.net/ubuntu/+source/libaio/+bug/2067501
27+
wget http://mirrors.kernel.org/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-13build1_amd64.deb && \
28+
sudo dpkg -i libaio1_0.3.112-13build1_amd64.deb && \
29+
rm libaio1_0.3.112-13build1_amd64.deb
30+
31+
# Get key to latest MySQL repo
32+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
33+
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.35-1_all.deb
34+
35+
if [[ "${{ inputs.flavor }}" == "mysql-5.7" ]]; then
36+
# Bionic packages are still compatible for Jammy since there's no MySQL 5.7
37+
# packages for Jammy.
38+
echo mysql-apt-config mysql-apt-config/repo-codename select bionic | sudo debconf-set-selections
39+
echo mysql-apt-config mysql-apt-config/select-server select mysql-5.7 | sudo debconf-set-selections
40+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
41+
sudo apt-get update
42+
# libtinfo5 is also needed for older MySQL 5.7 builds.
43+
curl -L -O http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
44+
sudo dpkg -i libtinfo5_6.3-2ubuntu0.1_amd64.deb
45+
sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7* libncurses6
46+
elif [[ "${{ inputs.flavor }}" == "mysql-8.0" ]]; then
47+
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | sudo debconf-set-selections
48+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
49+
sudo apt-get update
50+
sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-server mysql-client
51+
elif [[ "${{ inputs.flavor }}" == "mysql-8.4" ]]; then
52+
echo mysql-apt-config mysql-apt-config/select-server select mysql-8.4-lts | sudo debconf-set-selections
53+
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i mysql-apt-config*
54+
sudo apt-get update
55+
sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-server mysql-client
56+
else
57+
echo "Unsupported MySQL flavor: ${{ inputs.flavor }}"
58+
exit 1
59+
fi
60+
61+
sudo service mysql stop
62+
sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld" # https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263
63+
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
64+
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"

.github/workflows/cluster_endtoend_12.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,18 @@ jobs:
8686
echo "set man-db/auto-update false" | sudo debconf-communicate
8787
sudo dpkg-reconfigure man-db
8888
89+
- name: Setup MySQL
90+
if: steps.changes.outputs.end_to_end == 'true'
91+
uses: ./.github/actions/setup-mysql
92+
with:
93+
flavor: mysql-8.4
94+
8995
- name: Get dependencies
9096
if: steps.changes.outputs.end_to_end == 'true'
9197
timeout-minutes: 10
9298
run: |
9399
100+
<<<<<<< HEAD
94101
# Get key to latest MySQL repo
95102
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96103
# Setup MySQL 8.0
@@ -109,11 +116,15 @@ jobs:
109116

110117
# Install everything else we need, and configure
111118
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
119+
=======
120+
sudo apt-get -qq install -y mysql-shell
121+
122+
# Install everything else we need, and configure
123+
sudo apt-get -qq install -y make unzip g++ etcd-client etcd-server curl git wget xz-utils libncurses6
124+
>>>>>>> 885917d5cb (ci: DRY up MySQL Setup (#18815))
112125

113-
sudo service mysql stop
114126
sudo service etcd stop
115-
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
127+
117128
go mod download
118129

119130
# install JUnit report formatter

.github/workflows/cluster_endtoend_13.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,18 @@ jobs:
8686
echo "set man-db/auto-update false" | sudo debconf-communicate
8787
sudo dpkg-reconfigure man-db
8888
89+
- name: Setup MySQL
90+
if: steps.changes.outputs.end_to_end == 'true'
91+
uses: ./.github/actions/setup-mysql
92+
with:
93+
flavor: mysql-8.4
94+
8995
- name: Get dependencies
9096
if: steps.changes.outputs.end_to_end == 'true'
9197
timeout-minutes: 10
9298
run: |
9399
100+
<<<<<<< HEAD
94101
# Get key to latest MySQL repo
95102
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96103
# Setup MySQL 8.0
@@ -109,11 +116,15 @@ jobs:
109116

110117
# Install everything else we need, and configure
111118
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
119+
=======
120+
sudo apt-get -qq install -y mysql-shell
121+
122+
# Install everything else we need, and configure
123+
sudo apt-get -qq install -y make unzip g++ etcd-client etcd-server curl git wget xz-utils libncurses6
124+
>>>>>>> 885917d5cb (ci: DRY up MySQL Setup (#18815))
112125

113-
sudo service mysql stop
114126
sudo service etcd stop
115-
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
127+
117128
go mod download
118129

119130
# install JUnit report formatter

.github/workflows/cluster_endtoend_15.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,18 @@ jobs:
8686
echo "set man-db/auto-update false" | sudo debconf-communicate
8787
sudo dpkg-reconfigure man-db
8888
89+
- name: Setup MySQL
90+
if: steps.changes.outputs.end_to_end == 'true'
91+
uses: ./.github/actions/setup-mysql
92+
with:
93+
flavor: mysql-8.4
94+
8995
- name: Get dependencies
9096
if: steps.changes.outputs.end_to_end == 'true'
9197
timeout-minutes: 10
9298
run: |
9399
100+
<<<<<<< HEAD
94101
# Get key to latest MySQL repo
95102
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96103
# Setup MySQL 8.0
@@ -109,11 +116,15 @@ jobs:
109116

110117
# Install everything else we need, and configure
111118
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
119+
=======
120+
sudo apt-get -qq install -y mysql-shell
121+
122+
# Install everything else we need, and configure
123+
sudo apt-get -qq install -y make unzip g++ etcd-client etcd-server curl git wget xz-utils libncurses6
124+
>>>>>>> 885917d5cb (ci: DRY up MySQL Setup (#18815))
112125

113-
sudo service mysql stop
114126
sudo service etcd stop
115-
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
127+
117128
go mod download
118129

119130
# install JUnit report formatter

.github/workflows/cluster_endtoend_18.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,18 @@ jobs:
8686
echo "set man-db/auto-update false" | sudo debconf-communicate
8787
sudo dpkg-reconfigure man-db
8888
89+
- name: Setup MySQL
90+
if: steps.changes.outputs.end_to_end == 'true'
91+
uses: ./.github/actions/setup-mysql
92+
with:
93+
flavor: mysql-8.4
94+
8995
- name: Get dependencies
9096
if: steps.changes.outputs.end_to_end == 'true'
9197
timeout-minutes: 10
9298
run: |
9399
100+
<<<<<<< HEAD
94101
# Get key to latest MySQL repo
95102
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96103
# Setup MySQL 8.0
@@ -109,11 +116,15 @@ jobs:
109116

110117
# Install everything else we need, and configure
111118
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
119+
=======
120+
sudo apt-get -qq install -y mysql-shell
121+
122+
# Install everything else we need, and configure
123+
sudo apt-get -qq install -y make unzip g++ etcd-client etcd-server curl git wget xz-utils libncurses6
124+
>>>>>>> 885917d5cb (ci: DRY up MySQL Setup (#18815))
112125

113-
sudo service mysql stop
114126
sudo service etcd stop
115-
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
127+
117128
go mod download
118129

119130
# install JUnit report formatter

.github/workflows/cluster_endtoend_21.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,18 @@ jobs:
8686
echo "set man-db/auto-update false" | sudo debconf-communicate
8787
sudo dpkg-reconfigure man-db
8888
89+
- name: Setup MySQL
90+
if: steps.changes.outputs.end_to_end == 'true'
91+
uses: ./.github/actions/setup-mysql
92+
with:
93+
flavor: mysql-8.4
94+
8995
- name: Get dependencies
9096
if: steps.changes.outputs.end_to_end == 'true'
9197
timeout-minutes: 10
9298
run: |
9399
100+
<<<<<<< HEAD
94101
# Get key to latest MySQL repo
95102
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96103
# Setup MySQL 8.0
@@ -109,11 +116,15 @@ jobs:
109116

110117
# Install everything else we need, and configure
111118
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
119+
=======
120+
sudo apt-get -qq install -y mysql-shell
121+
122+
# Install everything else we need, and configure
123+
sudo apt-get -qq install -y make unzip g++ etcd-client etcd-server curl git wget xz-utils libncurses6
124+
>>>>>>> 885917d5cb (ci: DRY up MySQL Setup (#18815))
112125

113-
sudo service mysql stop
114126
sudo service etcd stop
115-
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
127+
117128
go mod download
118129

119130
# install JUnit report formatter

.github/workflows/cluster_endtoend_backup_pitr.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,18 @@ jobs:
8686
echo "set man-db/auto-update false" | sudo debconf-communicate
8787
sudo dpkg-reconfigure man-db
8888
89+
- name: Setup MySQL
90+
if: steps.changes.outputs.end_to_end == 'true'
91+
uses: ./.github/actions/setup-mysql
92+
with:
93+
flavor: mysql-8.4
94+
8995
- name: Get dependencies
9096
if: steps.changes.outputs.end_to_end == 'true'
9197
timeout-minutes: 10
9298
run: |
9399
100+
<<<<<<< HEAD
94101
# Get key to latest MySQL repo
95102
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96103
# Setup MySQL 8.0
@@ -109,11 +116,15 @@ jobs:
109116

110117
# Install everything else we need, and configure
111118
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
119+
=======
120+
sudo apt-get -qq install -y mysql-shell
121+
122+
# Install everything else we need, and configure
123+
sudo apt-get -qq install -y make unzip g++ etcd-client etcd-server curl git wget xz-utils libncurses6
124+
>>>>>>> 885917d5cb (ci: DRY up MySQL Setup (#18815))
112125

113-
sudo service mysql stop
114126
sudo service etcd stop
115-
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
127+
117128
go mod download
118129

119130
# install JUnit report formatter

.github/workflows/cluster_endtoend_backup_pitr_mysqlshell.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,18 @@ jobs:
8686
echo "set man-db/auto-update false" | sudo debconf-communicate
8787
sudo dpkg-reconfigure man-db
8888
89+
- name: Setup MySQL
90+
if: steps.changes.outputs.end_to_end == 'true'
91+
uses: ./.github/actions/setup-mysql
92+
with:
93+
flavor: mysql-8.4
94+
8995
- name: Get dependencies
9096
if: steps.changes.outputs.end_to_end == 'true'
9197
timeout-minutes: 10
9298
run: |
9399
100+
<<<<<<< HEAD
94101
# Get key to latest MySQL repo
95102
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A8D3785C
96103
# Setup MySQL 8.0
@@ -109,11 +116,15 @@ jobs:
109116

110117
# Install everything else we need, and configure
111118
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
119+
=======
120+
sudo apt-get -qq install -y mysql-shell
121+
122+
# Install everything else we need, and configure
123+
sudo apt-get -qq install -y make unzip g++ etcd-client etcd-server curl git wget xz-utils libncurses6
124+
>>>>>>> 885917d5cb (ci: DRY up MySQL Setup (#18815))
112125

113-
sudo service mysql stop
114126
sudo service etcd stop
115-
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
116-
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
127+
117128
go mod download
118129

119130
# install JUnit report formatter

.github/workflows/cluster_endtoend_backup_pitr_xtrabackup.yml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,26 +93,36 @@ jobs:
9393
9494
# Setup Percona Server for MySQL 8.0
9595
sudo apt-get -qq update
96-
sudo apt-get -qq install -y lsb-release gnupg2 curl
96+
sudo apt-get -qq install -y lsb-release gnupg2
9797
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
9898
sudo DEBIAN_FRONTEND="noninteractive" dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
9999
sudo percona-release setup ps80
100100
sudo apt-get -qq update
101101
102+
<<<<<<< HEAD
102103
# Install everything else we need, and configure
103104
sudo apt-get -qq install -y percona-server-server percona-server-client make unzip g++ etcd-client etcd-server git wget eatmydata xz-utils libncurses6
105+
=======
106+
sudo apt-get -qq install -y percona-server-server percona-server-client
107+
>>>>>>> 885917d5cb (ci: DRY up MySQL Setup (#18815))
104108

105109
sudo service mysql stop
106-
sudo service etcd stop
110+
107111
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
108112
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
113+
114+
sudo apt-get -qq install -y percona-xtrabackup-80 lz4
115+
116+
# Install everything else we need, and configure
117+
sudo apt-get -qq install -y make unzip g++ etcd-client etcd-server curl git wget xz-utils libncurses6
118+
119+
sudo service etcd stop
120+
109121
go mod download
110122

111123
# install JUnit report formatter
112124
go install github.com/vitessio/go-junit-report@HEAD
113125

114-
sudo apt-get -qq install -y percona-xtrabackup-80 lz4
115-
116126
- name: Setup launchable dependencies
117127
if: github.event_name == 'pull_request' && github.event.pull_request.draft == 'false' && steps.changes.outputs.end_to_end == 'true' && github.base_ref == 'main'
118128
run: |

0 commit comments

Comments
 (0)