Repository: vitessio/vitess
Pull request #9234 (2021-11-15 15:40:10)

Delete `go/cmd/automation_{client,server}`
Signed-off-by: Andrew Mason <amason@slack-corp.com>

## Description

Just a `git rm -rf ./go/cmd/automation_{client,server}`. I've never actually deleted a binary from vitess so I'm not sure if this is the right process (i.e. should we "deprecate" the binary by having it print a warning whenever you try to run it?)

## Related Issue(s)

#9222 


## Checklist
- [x] Should this PR be backported? **no**
- [x] Tests were added or are not required **n/a**
- [x] Documentation was added or is not required **n/a**

## Deployment Notes
<!-- Notes regarding deployment of the contained body of work. These should note any db migrations, etc. -->


Patch:
diff --git a/.github/workflows/cluster_endtoend_11.yml b/.github/workflows/cluster_endtoend_11.yml
index 2e45cfdf11..36446697fc 100644
--- a/.github/workflows/cluster_endtoend_11.yml
+++ b/.github/workflows/cluster_endtoend_11.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_12.yml b/.github/workflows/cluster_endtoend_12.yml
index cc16b95383..a55f4b8864 100644
--- a/.github/workflows/cluster_endtoend_12.yml
+++ b/.github/workflows/cluster_endtoend_12.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_13.yml b/.github/workflows/cluster_endtoend_13.yml
index 75667ccec3..ff94599dd0 100644
--- a/.github/workflows/cluster_endtoend_13.yml
+++ b/.github/workflows/cluster_endtoend_13.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_14.yml b/.github/workflows/cluster_endtoend_14.yml
index 7e9a792916..b71762776f 100644
--- a/.github/workflows/cluster_endtoend_14.yml
+++ b/.github/workflows/cluster_endtoend_14.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_15.yml b/.github/workflows/cluster_endtoend_15.yml
index 3d3e3b6d33..e67660bf87 100644
--- a/.github/workflows/cluster_endtoend_15.yml
+++ b/.github/workflows/cluster_endtoend_15.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_16.yml b/.github/workflows/cluster_endtoend_16.yml
index 58b860da1d..0fba841b0a 100644
--- a/.github/workflows/cluster_endtoend_16.yml
+++ b/.github/workflows/cluster_endtoend_16.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_17.yml b/.github/workflows/cluster_endtoend_17.yml
index 0efc2ad267..c0e7c57fb7 100644
--- a/.github/workflows/cluster_endtoend_17.yml
+++ b/.github/workflows/cluster_endtoend_17.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_18.yml b/.github/workflows/cluster_endtoend_18.yml
index 989fd34d73..25543255b7 100644
--- a/.github/workflows/cluster_endtoend_18.yml
+++ b/.github/workflows/cluster_endtoend_18.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_19.yml b/.github/workflows/cluster_endtoend_19.yml
index a05ce57a29..8abdd44a71 100644
--- a/.github/workflows/cluster_endtoend_19.yml
+++ b/.github/workflows/cluster_endtoend_19.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_20.yml b/.github/workflows/cluster_endtoend_20.yml
index 057a646438..bbc51f5391 100644
--- a/.github/workflows/cluster_endtoend_20.yml
+++ b/.github/workflows/cluster_endtoend_20.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_21.yml b/.github/workflows/cluster_endtoend_21.yml
index 267df9c8a6..c95ccb2322 100644
--- a/.github/workflows/cluster_endtoend_21.yml
+++ b/.github/workflows/cluster_endtoend_21.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_22.yml b/.github/workflows/cluster_endtoend_22.yml
index 19fadb0f8c..a3e359d156 100644
--- a/.github/workflows/cluster_endtoend_22.yml
+++ b/.github/workflows/cluster_endtoend_22.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_23.yml b/.github/workflows/cluster_endtoend_23.yml
index f562233227..25269db663 100644
--- a/.github/workflows/cluster_endtoend_23.yml
+++ b/.github/workflows/cluster_endtoend_23.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_24.yml b/.github/workflows/cluster_endtoend_24.yml
index e1674d9aad..bcb85cc4e5 100644
--- a/.github/workflows/cluster_endtoend_24.yml
+++ b/.github/workflows/cluster_endtoend_24.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_26.yml b/.github/workflows/cluster_endtoend_26.yml
index d7882a18e0..48126235e5 100644
--- a/.github/workflows/cluster_endtoend_26.yml
+++ b/.github/workflows/cluster_endtoend_26.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_mysql80.yml b/.github/workflows/cluster_endtoend_mysql80.yml
index 43b9355f14..b93edb06c5 100644
--- a/.github/workflows/cluster_endtoend_mysql80.yml
+++ b/.github/workflows/cluster_endtoend_mysql80.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_onlineddl_declarative.yml b/.github/workflows/cluster_endtoend_onlineddl_declarative.yml
index 8c7a04e442..a0351fbe9f 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_declarative.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_declarative.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_onlineddl_ghost.yml b/.github/workflows/cluster_endtoend_onlineddl_ghost.yml
index 2c278ded3b..097037b7a6 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_ghost.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_ghost.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_onlineddl_revert.yml b/.github/workflows/cluster_endtoend_onlineddl_revert.yml
index 43c0488f36..2061317037 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_revert.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_revert.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_onlineddl_singleton.yml b/.github/workflows/cluster_endtoend_onlineddl_singleton.yml
index 005f203d76..96ec634b8a 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_singleton.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_singleton.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_onlineddl_vrepl.yml b/.github/workflows/cluster_endtoend_onlineddl_vrepl.yml
index 6719f9f139..d78ebfb25f 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_vrepl.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_vrepl.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress.yml b/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress.yml
index c25136f512..e0033c6eb8 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress_suite.yml b/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress_suite.yml
index 4de9c8315b..29f7825ebe 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress_suite.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress_suite.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_onlineddl_vrepl_suite.yml b/.github/workflows/cluster_endtoend_onlineddl_vrepl_suite.yml
index 501c00ae1d..a40bf0803b 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_vrepl_suite.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_vrepl_suite.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_resharding.yml b/.github/workflows/cluster_endtoend_resharding.yml
index 0c1111644f..f7060a473c 100644
--- a/.github/workflows/cluster_endtoend_resharding.yml
+++ b/.github/workflows/cluster_endtoend_resharding.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_resharding_bytes.yml b/.github/workflows/cluster_endtoend_resharding_bytes.yml
index a17786caf2..614b950839 100644
--- a/.github/workflows/cluster_endtoend_resharding_bytes.yml
+++ b/.github/workflows/cluster_endtoend_resharding_bytes.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_tabletmanager_consul.yml b/.github/workflows/cluster_endtoend_tabletmanager_consul.yml
index 6ce9eed661..7b85bfa05d 100644
--- a/.github/workflows/cluster_endtoend_tabletmanager_consul.yml
+++ b/.github/workflows/cluster_endtoend_tabletmanager_consul.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_tabletmanager_tablegc.yml b/.github/workflows/cluster_endtoend_tabletmanager_tablegc.yml
index 645780e6d7..9b19b9f91b 100644
--- a/.github/workflows/cluster_endtoend_tabletmanager_tablegc.yml
+++ b/.github/workflows/cluster_endtoend_tabletmanager_tablegc.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_tabletmanager_throttler.yml b/.github/workflows/cluster_endtoend_tabletmanager_throttler.yml
index 41d3ee5801..ed56206b8c 100644
--- a/.github/workflows/cluster_endtoend_tabletmanager_throttler.yml
+++ b/.github/workflows/cluster_endtoend_tabletmanager_throttler.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_tabletmanager_throttler_custom_config.yml b/.github/workflows/cluster_endtoend_tabletmanager_throttler_custom_config.yml
index ecb013d888..c4918176fb 100644
--- a/.github/workflows/cluster_endtoend_tabletmanager_throttler_custom_config.yml
+++ b/.github/workflows/cluster_endtoend_tabletmanager_throttler_custom_config.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vreplication_basic.yml b/.github/workflows/cluster_endtoend_vreplication_basic.yml
index b73f9e4e36..9a33774ed5 100644
--- a/.github/workflows/cluster_endtoend_vreplication_basic.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_basic.yml
@@ -6,77 +6,36 @@ concurrency:
   group: format('{0}-{1}', ${{ github.ref }}, 'Cluster (vreplication_basic)')
   cancel-in-progress: true
 
-env:
-  LAUNCHABLE_ORGANIZATION: "vitess"
-  LAUNCHABLE_WORKSPACE: "vitess-app"
-  GITHUB_PR_HEAD_SHA: "${{ github.event.pull_request.head.sha }}"
-
 jobs:
   build:
     name: Run endtoend tests on Cluster (vreplication_basic)
-    runs-on: ubuntu-18.04
+    runs-on: self-hosted
 
     steps:
-    - name: Set up Go
-      uses: actions/setup-go@v2
-      with:
-        go-version: 1.17
-
-    - name: Set up python
-      uses: actions/setup-python@v2
-
-    - name: Tune the OS
-      run: |
-        echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
-
-    - name: Check out code
-      uses: actions/checkout@v2
-
-    - name: Get dependencies
-      run: |
-        sudo apt-get update
-        sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata
-        sudo service mysql stop
-        sudo service etcd stop
-        sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
-        sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
-        go mod download
-
-        # install JUnit report formatter
-        go get -u github.com/vitessio/go-junit-report@HEAD
-
-        wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
-        sudo apt-get install -y gnupg2
-        sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
-        sudo apt-get update
-        sudo apt-get install percona-xtrabackup-24
-
-    - name: Setup launchable dependencies
-      run: |
-        # Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up
-        pip3 install --user launchable~=1.0 > /dev/null
-
-        # verify that launchable setup is all correct.
-        launchable verify || true
+      - name: Check out code
+        uses: actions/checkout@v2
 
-        # Tell Launchable about the build you are producing and testing
-        launchable record build --name "$GITHUB_RUN_ID" --source .
+      - name: Build Docker Image
+        run: docker build -f ./.github/docker/cluster_test_vreplication_basic/Dockerfile -t cluster_test_vreplication_basic:$GITHUB_SHA  .
 
-    - name: Run cluster endtoend test
-      timeout-minutes: 30
-      run: |
-        source build.env
+      - name: Run test
+        timeout-minutes: 30
+        run: docker run --name "cluster_test_vreplication_basic_$GITHUB_SHA" cluster_test_vreplication_basic:$GITHUB_SHA /bin/bash -c 'source build.env && go run test.go -keep-data=true -docker=false -print-log -follow -shard vreplication_basic -- -- --keep-data=true'
 
-        set -x
+      - name: Print Volume Used
+        if: ${{ always() }}
+        run: |
+          docker inspect -f '{{ (index .Mounts 0).Name }}' cluster_test_vreplication_basic_$GITHUB_SHA
 
-        # run the tests however you normally do, then produce a JUnit XML file
-        eatmydata -- go run test.go -docker=false -follow -shard vreplication_basic | tee -a output.txt | go-junit-report -set-exit-code > report.xml
+      - name: Cleanup Docker Volume
+        run: |
+          docker rm -v cluster_test_vreplication_basic_$GITHUB_SHA
 
-    - name: Print test output and Record test result in launchable
-      run: |
-        # send recorded tests to launchable
-        launchable record tests --build "$GITHUB_RUN_ID" go-test . || true
+      - name: Cleanup Docker Container
+        if: ${{ always() }}
+        run: |
+          docker rm -f cluster_test_vreplication_basic_$GITHUB_SHA
 
-        # print test output
-        cat output.txt
-      if: always()
+      - name: Cleanup Docker Image
+        run: |
+          docker image rm cluster_test_vreplication_basic:$GITHUB_SHA
diff --git a/.github/workflows/cluster_endtoend_vreplication_cellalias.yml b/.github/workflows/cluster_endtoend_vreplication_cellalias.yml
index f3f0e64b00..0551469904 100644
--- a/.github/workflows/cluster_endtoend_vreplication_cellalias.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_cellalias.yml
@@ -6,77 +6,36 @@ concurrency:
   group: format('{0}-{1}', ${{ github.ref }}, 'Cluster (vreplication_cellalias)')
   cancel-in-progress: true
 
-env:
-  LAUNCHABLE_ORGANIZATION: "vitess"
-  LAUNCHABLE_WORKSPACE: "vitess-app"
-  GITHUB_PR_HEAD_SHA: "${{ github.event.pull_request.head.sha }}"
-
 jobs:
   build:
     name: Run endtoend tests on Cluster (vreplication_cellalias)
-    runs-on: ubuntu-18.04
+    runs-on: self-hosted
 
     steps:
-    - name: Set up Go
-      uses: actions/setup-go@v2
-      with:
-        go-version: 1.17
-
-    - name: Set up python
-      uses: actions/setup-python@v2
-
-    - name: Tune the OS
-      run: |
-        echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
-
-    - name: Check out code
-      uses: actions/checkout@v2
-
-    - name: Get dependencies
-      run: |
-        sudo apt-get update
-        sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata
-        sudo service mysql stop
-        sudo service etcd stop
-        sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
-        sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
-        go mod download
-
-        # install JUnit report formatter
-        go get -u github.com/vitessio/go-junit-report@HEAD
-
-        wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
-        sudo apt-get install -y gnupg2
-        sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
-        sudo apt-get update
-        sudo apt-get install percona-xtrabackup-24
-
-    - name: Setup launchable dependencies
-      run: |
-        # Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up
-        pip3 install --user launchable~=1.0 > /dev/null
-
-        # verify that launchable setup is all correct.
-        launchable verify || true
+      - name: Check out code
+        uses: actions/checkout@v2
 
-        # Tell Launchable about the build you are producing and testing
-        launchable record build --name "$GITHUB_RUN_ID" --source .
+      - name: Build Docker Image
+        run: docker build -f ./.github/docker/cluster_test_vreplication_cellalias/Dockerfile -t cluster_test_vreplication_cellalias:$GITHUB_SHA  .
 
-    - name: Run cluster endtoend test
-      timeout-minutes: 30
-      run: |
-        source build.env
+      - name: Run test
+        timeout-minutes: 30
+        run: docker run --name "cluster_test_vreplication_cellalias_$GITHUB_SHA" cluster_test_vreplication_cellalias:$GITHUB_SHA /bin/bash -c 'source build.env && go run test.go -keep-data=true -docker=false -print-log -follow -shard vreplication_cellalias -- -- --keep-data=true'
 
-        set -x
+      - name: Print Volume Used
+        if: ${{ always() }}
+        run: |
+          docker inspect -f '{{ (index .Mounts 0).Name }}' cluster_test_vreplication_cellalias_$GITHUB_SHA
 
-        # run the tests however you normally do, then produce a JUnit XML file
-        eatmydata -- go run test.go -docker=false -follow -shard vreplication_cellalias | tee -a output.txt | go-junit-report -set-exit-code > report.xml
+      - name: Cleanup Docker Volume
+        run: |
+          docker rm -v cluster_test_vreplication_cellalias_$GITHUB_SHA
 
-    - name: Print test output and Record test result in launchable
-      run: |
-        # send recorded tests to launchable
-        launchable record tests --build "$GITHUB_RUN_ID" go-test . || true
+      - name: Cleanup Docker Container
+        if: ${{ always() }}
+        run: |
+          docker rm -f cluster_test_vreplication_cellalias_$GITHUB_SHA
 
-        # print test output
-        cat output.txt
-      if: always()
+      - name: Cleanup Docker Image
+        run: |
+          docker image rm cluster_test_vreplication_cellalias:$GITHUB_SHA
diff --git a/.github/workflows/cluster_endtoend_vreplication_migrate.yml b/.github/workflows/cluster_endtoend_vreplication_migrate.yml
index 0978465ae0..3af6cee155 100644
--- a/.github/workflows/cluster_endtoend_vreplication_migrate.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_migrate.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vreplication_multicell.yml b/.github/workflows/cluster_endtoend_vreplication_multicell.yml
index c8618d85ee..8714f4ec90 100644
--- a/.github/workflows/cluster_endtoend_vreplication_multicell.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_multicell.yml
@@ -6,77 +6,36 @@ concurrency:
   group: format('{0}-{1}', ${{ github.ref }}, 'Cluster (vreplication_multicell)')
   cancel-in-progress: true
 
-env:
-  LAUNCHABLE_ORGANIZATION: "vitess"
-  LAUNCHABLE_WORKSPACE: "vitess-app"
-  GITHUB_PR_HEAD_SHA: "${{ github.event.pull_request.head.sha }}"
-
 jobs:
   build:
     name: Run endtoend tests on Cluster (vreplication_multicell)
-    runs-on: ubuntu-18.04
+    runs-on: self-hosted
 
     steps:
-    - name: Set up Go
-      uses: actions/setup-go@v2
-      with:
-        go-version: 1.17
-
-    - name: Set up python
-      uses: actions/setup-python@v2
-
-    - name: Tune the OS
-      run: |
-        echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
-
-    - name: Check out code
-      uses: actions/checkout@v2
-
-    - name: Get dependencies
-      run: |
-        sudo apt-get update
-        sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata
-        sudo service mysql stop
-        sudo service etcd stop
-        sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
-        sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
-        go mod download
-
-        # install JUnit report formatter
-        go get -u github.com/vitessio/go-junit-report@HEAD
-
-        wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
-        sudo apt-get install -y gnupg2
-        sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
-        sudo apt-get update
-        sudo apt-get install percona-xtrabackup-24
-
-    - name: Setup launchable dependencies
-      run: |
-        # Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up
-        pip3 install --user launchable~=1.0 > /dev/null
-
-        # verify that launchable setup is all correct.
-        launchable verify || true
+      - name: Check out code
+        uses: actions/checkout@v2
 
-        # Tell Launchable about the build you are producing and testing
-        launchable record build --name "$GITHUB_RUN_ID" --source .
+      - name: Build Docker Image
+        run: docker build -f ./.github/docker/cluster_test_vreplication_multicell/Dockerfile -t cluster_test_vreplication_multicell:$GITHUB_SHA  .
 
-    - name: Run cluster endtoend test
-      timeout-minutes: 30
-      run: |
-        source build.env
+      - name: Run test
+        timeout-minutes: 30
+        run: docker run --name "cluster_test_vreplication_multicell_$GITHUB_SHA" cluster_test_vreplication_multicell:$GITHUB_SHA /bin/bash -c 'source build.env && go run test.go -keep-data=true -docker=false -print-log -follow -shard vreplication_multicell -- -- --keep-data=true'
 
-        set -x
+      - name: Print Volume Used
+        if: ${{ always() }}
+        run: |
+          docker inspect -f '{{ (index .Mounts 0).Name }}' cluster_test_vreplication_multicell_$GITHUB_SHA
 
-        # run the tests however you normally do, then produce a JUnit XML file
-        eatmydata -- go run test.go -docker=false -follow -shard vreplication_multicell | tee -a output.txt | go-junit-report -set-exit-code > report.xml
+      - name: Cleanup Docker Volume
+        run: |
+          docker rm -v cluster_test_vreplication_multicell_$GITHUB_SHA
 
-    - name: Print test output and Record test result in launchable
-      run: |
-        # send recorded tests to launchable
-        launchable record tests --build "$GITHUB_RUN_ID" go-test . || true
+      - name: Cleanup Docker Container
+        if: ${{ always() }}
+        run: |
+          docker rm -f cluster_test_vreplication_multicell_$GITHUB_SHA
 
-        # print test output
-        cat output.txt
-      if: always()
+      - name: Cleanup Docker Image
+        run: |
+          docker image rm cluster_test_vreplication_multicell:$GITHUB_SHA
diff --git a/.github/workflows/cluster_endtoend_vreplication_v2.yml b/.github/workflows/cluster_endtoend_vreplication_v2.yml
index e00f62473c..3ab8d2bb2a 100644
--- a/.github/workflows/cluster_endtoend_vreplication_v2.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_v2.yml
@@ -6,77 +6,36 @@ concurrency:
   group: format('{0}-{1}', ${{ github.ref }}, 'Cluster (vreplication_v2)')
   cancel-in-progress: true
 
-env:
-  LAUNCHABLE_ORGANIZATION: "vitess"
-  LAUNCHABLE_WORKSPACE: "vitess-app"
-  GITHUB_PR_HEAD_SHA: "${{ github.event.pull_request.head.sha }}"
-
 jobs:
   build:
     name: Run endtoend tests on Cluster (vreplication_v2)
-    runs-on: ubuntu-18.04
+    runs-on: self-hosted
 
     steps:
-    - name: Set up Go
-      uses: actions/setup-go@v2
-      with:
-        go-version: 1.17
-
-    - name: Set up python
-      uses: actions/setup-python@v2
-
-    - name: Tune the OS
-      run: |
-        echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
-
-    - name: Check out code
-      uses: actions/checkout@v2
-
-    - name: Get dependencies
-      run: |
-        sudo apt-get update
-        sudo apt-get install -y mysql-server mysql-client make unzip g++ etcd curl git wget eatmydata
-        sudo service mysql stop
-        sudo service etcd stop
-        sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
-        sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
-        go mod download
-
-        # install JUnit report formatter
-        go get -u github.com/vitessio/go-junit-report@HEAD
-
-        wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
-        sudo apt-get install -y gnupg2
-        sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
-        sudo apt-get update
-        sudo apt-get install percona-xtrabackup-24
-
-    - name: Setup launchable dependencies
-      run: |
-        # Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up
-        pip3 install --user launchable~=1.0 > /dev/null
-
-        # verify that launchable setup is all correct.
-        launchable verify || true
+      - name: Check out code
+        uses: actions/checkout@v2
 
-        # Tell Launchable about the build you are producing and testing
-        launchable record build --name "$GITHUB_RUN_ID" --source .
+      - name: Build Docker Image
+        run: docker build -f ./.github/docker/cluster_test_vreplication_v2/Dockerfile -t cluster_test_vreplication_v2:$GITHUB_SHA  .
 
-    - name: Run cluster endtoend test
-      timeout-minutes: 30
-      run: |
-        source build.env
+      - name: Run test
+        timeout-minutes: 30
+        run: docker run --name "cluster_test_vreplication_v2_$GITHUB_SHA" cluster_test_vreplication_v2:$GITHUB_SHA /bin/bash -c 'source build.env && go run test.go -keep-data=true -docker=false -print-log -follow -shard vreplication_v2 -- -- --keep-data=true'
 
-        set -x
+      - name: Print Volume Used
+        if: ${{ always() }}
+        run: |
+          docker inspect -f '{{ (index .Mounts 0).Name }}' cluster_test_vreplication_v2_$GITHUB_SHA
 
-        # run the tests however you normally do, then produce a JUnit XML file
-        eatmydata -- go run test.go -docker=false -follow -shard vreplication_v2 | tee -a output.txt | go-junit-report -set-exit-code > report.xml
+      - name: Cleanup Docker Volume
+        run: |
+          docker rm -v cluster_test_vreplication_v2_$GITHUB_SHA
 
-    - name: Print test output and Record test result in launchable
-      run: |
-        # send recorded tests to launchable
-        launchable record tests --build "$GITHUB_RUN_ID" go-test . || true
+      - name: Cleanup Docker Container
+        if: ${{ always() }}
+        run: |
+          docker rm -f cluster_test_vreplication_v2_$GITHUB_SHA
 
-        # print test output
-        cat output.txt
-      if: always()
+      - name: Cleanup Docker Image
+        run: |
+          docker image rm cluster_test_vreplication_v2:$GITHUB_SHA
diff --git a/.github/workflows/cluster_endtoend_vstream_failover.yml b/.github/workflows/cluster_endtoend_vstream_failover.yml
index 57d22e37a5..5900730499 100644
--- a/.github/workflows/cluster_endtoend_vstream_failover.yml
+++ b/.github/workflows/cluster_endtoend_vstream_failover.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vstream_stoponreshard_false.yml b/.github/workflows/cluster_endtoend_vstream_stoponreshard_false.yml
index 031b041439..b0d2bde05e 100644
--- a/.github/workflows/cluster_endtoend_vstream_stoponreshard_false.yml
+++ b/.github/workflows/cluster_endtoend_vstream_stoponreshard_false.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vstream_stoponreshard_true.yml b/.github/workflows/cluster_endtoend_vstream_stoponreshard_true.yml
index e522e52837..60395fdb06 100644
--- a/.github/workflows/cluster_endtoend_vstream_stoponreshard_true.yml
+++ b/.github/workflows/cluster_endtoend_vstream_stoponreshard_true.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vstream_with_keyspaces_to_watch.yml b/.github/workflows/cluster_endtoend_vstream_with_keyspaces_to_watch.yml
index 90c97f9888..f867b8f001 100644
--- a/.github/workflows/cluster_endtoend_vstream_with_keyspaces_to_watch.yml
+++ b/.github/workflows/cluster_endtoend_vstream_with_keyspaces_to_watch.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_buffer.yml b/.github/workflows/cluster_endtoend_vtgate_buffer.yml
index f7bf5d4a86..567cf13838 100644
--- a/.github/workflows/cluster_endtoend_vtgate_buffer.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_buffer.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_concurrentdml.yml b/.github/workflows/cluster_endtoend_vtgate_concurrentdml.yml
index 796efe5660..8909c079cd 100644
--- a/.github/workflows/cluster_endtoend_vtgate_concurrentdml.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_concurrentdml.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_gen4.yml b/.github/workflows/cluster_endtoend_vtgate_gen4.yml
index 65125800ab..6fb21ccdf4 100644
--- a/.github/workflows/cluster_endtoend_vtgate_gen4.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_gen4.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_godriver.yml b/.github/workflows/cluster_endtoend_vtgate_godriver.yml
index b107661cff..715f38d7b0 100644
--- a/.github/workflows/cluster_endtoend_vtgate_godriver.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_godriver.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_queries.yml b/.github/workflows/cluster_endtoend_vtgate_queries.yml
index f529c2953c..251acee62a 100644
--- a/.github/workflows/cluster_endtoend_vtgate_queries.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_queries.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_readafterwrite.yml b/.github/workflows/cluster_endtoend_vtgate_readafterwrite.yml
index 2c6bb3357a..c9e631a09e 100644
--- a/.github/workflows/cluster_endtoend_vtgate_readafterwrite.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_readafterwrite.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_reservedconn.yml b/.github/workflows/cluster_endtoend_vtgate_reservedconn.yml
index c9078f2ead..038690f3a1 100644
--- a/.github/workflows/cluster_endtoend_vtgate_reservedconn.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_reservedconn.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_schema.yml b/.github/workflows/cluster_endtoend_vtgate_schema.yml
index a648a1b561..a2205670ce 100644
--- a/.github/workflows/cluster_endtoend_vtgate_schema.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_schema.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_schema_tracker.yml b/.github/workflows/cluster_endtoend_vtgate_schema_tracker.yml
index 19f6cede73..ea7c0b921e 100644
--- a/.github/workflows/cluster_endtoend_vtgate_schema_tracker.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_schema_tracker.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_topo.yml b/.github/workflows/cluster_endtoend_vtgate_topo.yml
index 178c72c777..a937803c47 100644
--- a/.github/workflows/cluster_endtoend_vtgate_topo.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_topo.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_topo_consul.yml b/.github/workflows/cluster_endtoend_vtgate_topo_consul.yml
index 18db87fd6c..ed1bb2c2fd 100644
--- a/.github/workflows/cluster_endtoend_vtgate_topo_consul.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_topo_consul.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_topo_etcd.yml b/.github/workflows/cluster_endtoend_vtgate_topo_etcd.yml
index de16a8320d..6dd5559275 100644
--- a/.github/workflows/cluster_endtoend_vtgate_topo_etcd.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_topo_etcd.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_transaction.yml b/.github/workflows/cluster_endtoend_vtgate_transaction.yml
index b960d9a4e3..078975ccd7 100644
--- a/.github/workflows/cluster_endtoend_vtgate_transaction.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_transaction.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_unsharded.yml b/.github/workflows/cluster_endtoend_vtgate_unsharded.yml
index b6e64cab23..17c952ac3f 100644
--- a/.github/workflows/cluster_endtoend_vtgate_unsharded.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_unsharded.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_vindex.yml b/.github/workflows/cluster_endtoend_vtgate_vindex.yml
index 2bc9e54ce9..6db6612cde 100644
--- a/.github/workflows/cluster_endtoend_vtgate_vindex.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_vindex.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtgate_vschema.yml b/.github/workflows/cluster_endtoend_vtgate_vschema.yml
index fba1c70a08..65cd5dc25e 100644
--- a/.github/workflows/cluster_endtoend_vtgate_vschema.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_vschema.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_vtorc.yml b/.github/workflows/cluster_endtoend_vtorc.yml
index 5c013eeb2f..ed66b3f534 100644
--- a/.github/workflows/cluster_endtoend_vtorc.yml
+++ b/.github/workflows/cluster_endtoend_vtorc.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/cluster_endtoend_xb_recovery.yml b/.github/workflows/cluster_endtoend_xb_recovery.yml
index a50b1779f6..6a375ab6bf 100644
--- a/.github/workflows/cluster_endtoend_xb_recovery.yml
+++ b/.github/workflows/cluster_endtoend_xb_recovery.yml
@@ -29,6 +29,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/GITHUB_SELF_HOSTED_RUNNERS.md b/GITHUB_SELF_HOSTED_RUNNERS.md
index bde8d658fa..46cd87e5a6 100644
--- a/GITHUB_SELF_HOSTED_RUNNERS.md
+++ b/GITHUB_SELF_HOSTED_RUNNERS.md
@@ -26,13 +26,6 @@ access to Vitess.
    1. `crontab -e`
    2. Within the file add a line `8 5 * * 6 docker system prune -f --volumes --all`
 
-### Moving a test to a self-hosted runner
-Most of the code for running the tests is generated code by `make generate_ci_workflows` which uses the file `ci_workflow_gen.go`
-
-To move a unit test from GitHub runners to self-hosted runners, just move the test from `unitTestDatabases` to `unitTestSelfHostedDatabases` in `ci_workflow_gen.go` and call `make generate_ci_workflows`
-
-To move a cluster test from GitHub runners to self-hosted runners, just move the test from `clusterList` to `clusterSelfHostedList` in `ci_workflow_gen.go` and call `make generate_ci_workflows`
-
 ### Using a self-hosted runner to debug a flaky test
 You will need access to the self-hosted runner machine to be able to connect to it via SSH.
 1. From the output of the run on GitHub Actions, find the `Machine name` in the `Set up job` step 
diff --git a/go/cmd/automation_client/automation_client.go b/go/cmd/automation_client/automation_client.go
deleted file mode 100644
index ebc82a1104..0000000000
--- a/go/cmd/automation_client/automation_client.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
-	"flag"
-	"fmt"
-	"os"
-	"strings"
-	"time"
-
-	"google.golang.org/protobuf/encoding/prototext"
-
-	"context"
-
-	"google.golang.org/grpc"
-
-	"vitess.io/vitess/go/vt/grpcclient"
-	automationpb "vitess.io/vitess/go/vt/proto/automation"
-	automationservicepb "vitess.io/vitess/go/vt/proto/automationservice"
-)
-
-var (
-	automationServer = flag.String("server", "", "Endpoint to Automation Server e.g. localhost:1234.")
-	task             = flag.String("task", "", "Task which should be run.")
-)
-
-// cmdParams implements flag.Value to store key=value pairs.
-type cmdParams struct {
-	parameters map[string]string
-}
-
-// String implements flag.Value to return the default value.
-func (*cmdParams) String() string { return "\"key=value\"" }
-
-func (p *cmdParams) Get() interface{} {
-	return p
-}
-
-func (p *cmdParams) Set(v string) error {
-	if v != "" {
-		keyAndValue := strings.SplitN(v, "=", 2)
-		if len(keyAndValue) < 2 {
-			return fmt.Errorf("no key specified: '%v' Expected format: key=value", v)
-		}
-		if p.parameters == nil {
-			p.parameters = make(map[string]string)
-		}
-		p.parameters[keyAndValue[0]] = keyAndValue[1]
-	}
-	return nil
-}
-
-func main() {
-	var params cmdParams
-	flag.Var(&params, "param", "Task Parameter of the form key=value. May be repeated.")
-	flag.Parse()
-
-	if *task == "" {
-		fmt.Println("Please specify a task using the --task parameter.")
-		os.Exit(1)
-	}
-	if *automationServer == "" {
-		fmt.Println("Please specify the automation server address using the --server parameter.")
-		os.Exit(2)
-	}
-
-	fmt.Println("Connecting to Automation Server:", *automationServer)
-
-	conn, err := grpcclient.Dial(*automationServer, grpcclient.FailFast(false), grpc.WithInsecure())
-	if err != nil {
-		fmt.Println("Cannot create connection:", err)
-		os.Exit(3)
-	}
-	defer conn.Close()
-	client := automationservicepb.NewAutomationClient(conn)
-
-	enqueueRequest := &automationpb.EnqueueClusterOperationRequest{
-		Name:       *task,
-		Parameters: params.parameters,
-	}
-	protoTextReq, _ := prototext.Marshal(enqueueRequest)
-	fmt.Printf("Sending request:\n%s", protoTextReq)
-	enqueueResponse, err := client.EnqueueClusterOperation(context.Background(), enqueueRequest, grpc.WaitForReady(true))
-	if err != nil {
-		fmt.Println("Failed to enqueue ClusterOperation. Error:", err)
-		os.Exit(4)
-	}
-	fmt.Println("Operation was enqueued. Details:", enqueueResponse)
-	resp, errWait := waitForClusterOp(client, enqueueResponse.Id)
-	if errWait != nil {
-		fmt.Println("ERROR:", errWait)
-		os.Exit(5)
-	}
-	protoTextResp, _ := prototext.Marshal(resp)
-	fmt.Printf("SUCCESS: ClusterOperation finished.\n\nDetails:\n%s", protoTextResp)
-}
-
-// waitForClusterOp polls and blocks until the ClusterOperation invocation specified by "id" has finished. If an error occurred, it will be returned.
-func waitForClusterOp(client automationservicepb.AutomationClient, id string) (*automationpb.GetClusterOperationDetailsResponse, error) {
-	for {
-		req := &automationpb.GetClusterOperationDetailsRequest{
-			Id: id,
-		}
-
-		resp, err := client.GetClusterOperationDetails(context.Background(), req, grpc.WaitForReady(true))
-		if err != nil {
-			return nil, fmt.Errorf("failed to get ClusterOperation Details. Request: %v Error: %v", req, err)
-		}
-
-		switch resp.ClusterOp.State {
-		case automationpb.ClusterOperationState_UNKNOWN_CLUSTER_OPERATION_STATE:
-			return resp, fmt.Errorf("ClusterOperation is in an unknown state. Details: %v", resp)
-		case automationpb.ClusterOperationState_CLUSTER_OPERATION_DONE:
-			if resp.ClusterOp.Error != "" {
-				protoTextResp, _ := prototext.Marshal(resp)
-				return resp, fmt.Errorf("ClusterOperation failed. Details:\n%s", protoTextResp)
-			}
-			return resp, nil
-		}
-
-		time.Sleep(50 * time.Millisecond)
-	}
-}
diff --git a/go/cmd/automation_server/automation_server.go b/go/cmd/automation_server/automation_server.go
deleted file mode 100644
index 0d0e3aea84..0000000000
--- a/go/cmd/automation_server/automation_server.go
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
-	"fmt"
-	"net"
-	"os"
-
-	"google.golang.org/grpc"
-
-	"vitess.io/vitess/go/vt/automation"
-	automationservicepb "vitess.io/vitess/go/vt/proto/automationservice"
-	"vitess.io/vitess/go/vt/servenv"
-)
-
-func init() {
-	servenv.RegisterDefaultFlags()
-}
-
-func main() {
-	servenv.ParseFlags("automation_server")
-
-	fmt.Println("Automation Server, listening on:", *servenv.Port)
-
-	if *servenv.Port == 0 {
-		fmt.Println("No port specified using --port.")
-		os.Exit(1)
-	}
-
-	listener, err := net.Listen("tcp", fmt.Sprintf(":%v", *servenv.Port))
-	if err != nil {
-		fmt.Printf("Failed to listen: %v", err)
-		os.Exit(2)
-	}
-
-	grpcServer := grpc.NewServer()
-	scheduler, err := automation.NewScheduler()
-	if err != nil {
-		fmt.Printf("Failed to create scheduler: %v", err)
-		os.Exit(3)
-	}
-	scheduler.Run()
-	automationservicepb.RegisterAutomationServer(grpcServer, scheduler)
-	if err := grpcServer.Serve(listener); err != nil {
-		fmt.Println(err)
-	}
-}
diff --git a/go/cmd/automation_server/plugin_grpcvtctlclient.go b/go/cmd/automation_server/plugin_grpcvtctlclient.go
deleted file mode 100644
index 6ffff52c5b..0000000000
--- a/go/cmd/automation_server/plugin_grpcvtctlclient.go
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-// Imports and register the gRPC vtctl client.
-
-import (
-	_ "vitess.io/vitess/go/vt/vtctl/grpcvtctlclient"
-)
diff --git a/go/cmd/automation_server/plugin_grpcvtworkerclient.go b/go/cmd/automation_server/plugin_grpcvtworkerclient.go
deleted file mode 100644
index 74fa31ef4a..0000000000
--- a/go/cmd/automation_server/plugin_grpcvtworkerclient.go
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-// Imports and registers the gRPC vtworker client.
-
-import (
-	_ "vitess.io/vitess/go/vt/worker/grpcvtworkerclient"
-)
diff --git a/go/vt/vtgate/engine/comparer.go b/go/vt/vtgate/engine/comparer.go
index 0b265bd2c6..767799492a 100644
--- a/go/vt/vtgate/engine/comparer.go
+++ b/go/vt/vtgate/engine/comparer.go
@@ -25,7 +25,6 @@ import (
 // comparer is the struct that has the logic for comparing two rows in the result set
 type comparer struct {
 	orderBy, weightString, starColFixedIndex int
-	collationID                              collations.ID
 	desc                                     bool
 }
 
@@ -40,7 +39,8 @@ func (c *comparer) compare(r1, r2 []sqltypes.Value) (int, error) {
 	} else {
 		colIndex = c.orderBy
 	}
-	cmp, err := evalengine.NullsafeCompare(r1[colIndex], r2[colIndex], c.collationID)
+	// TODO(king-11) make collation aware
+	cmp, err := evalengine.NullsafeCompare(r1[colIndex], r2[colIndex], collations.Unknown)
 	if err != nil {
 		_, isComparisonErr := err.(evalengine.UnsupportedComparisonError)
 		if !(isComparisonErr && c.weightString != -1) {
@@ -49,7 +49,8 @@ func (c *comparer) compare(r1, r2 []sqltypes.Value) (int, error) {
 		// in case of a comparison error switch to using the weight string column for ordering
 		c.orderBy = c.weightString
 		c.weightString = -1
-		cmp, err = evalengine.NullsafeCompare(r1[c.orderBy], r2[c.orderBy], c.collationID)
+		// TODO(king-11) make collation aware
+		cmp, err = evalengine.NullsafeCompare(r1[c.orderBy], r2[c.orderBy], collations.Unknown)
 		if err != nil {
 			return 0, err
 		}
@@ -70,7 +71,6 @@ func extractSlices(input []OrderByParams) []*comparer {
 			weightString:      order.WeightStringCol,
 			desc:              order.Desc,
 			starColFixedIndex: order.StarColFixedIndex,
-			collationID:       order.CollationID,
 		})
 	}
 	return result
diff --git a/go/vt/vtgate/engine/route.go b/go/vt/vtgate/engine/route.go
index 72b686f676..b635d9020e 100644
--- a/go/vt/vtgate/engine/route.go
+++ b/go/vt/vtgate/engine/route.go
@@ -24,7 +24,6 @@ import (
 	"strings"
 	"time"
 
-	"vitess.io/vitess/go/mysql/collations"
 	"vitess.io/vitess/go/vt/log"
 	"vitess.io/vitess/go/vt/sqlparser"
 
@@ -135,8 +134,6 @@ type OrderByParams struct {
 	StarColFixedIndex int
 	// v3 specific boolean. Used to also add weight strings originating from GroupBys to the Group by clause
 	FromGroupBy bool
-	// Collation ID for comparison using collation
-	CollationID collations.ID
 }
 
 // String returns a string. Used for plan descriptions
@@ -153,10 +150,6 @@ func (obp OrderByParams) String() string {
 	} else {
 		val += " ASC"
 	}
-	if obp.CollationID != collations.Unknown {
-		collation := collations.Default().LookupByID(obp.CollationID)
-		val += " COLLATE " + collation.Name()
-	}
 	return val
 }
 
diff --git a/go/vt/vtgate/planbuilder/horizon_planning.go b/go/vt/vtgate/planbuilder/horizon_planning.go
index 444545c1ee..0bfcab946e 100644
--- a/go/vt/vtgate/planbuilder/horizon_planning.go
+++ b/go/vt/vtgate/planbuilder/horizon_planning.go
@@ -17,7 +17,6 @@ limitations under the License.
 package planbuilder
 
 import (
-	"vitess.io/vitess/go/mysql/collations"
 	"vitess.io/vitess/go/sqltypes"
 	"vitess.io/vitess/go/vt/vtgate/planbuilder/abstract"
 
@@ -717,11 +716,11 @@ func planOrderByForRoute(orderExprs []abstract.OrderBy, plan *route, semTable *s
 		if err != nil {
 			return nil, false, err
 		}
+
 		plan.eroute.OrderBy = append(plan.eroute.OrderBy, engine.OrderByParams{
 			Col:             offset,
 			WeightStringCol: weightStringOffset,
 			Desc:            order.Inner.Direction == sqlparser.DescOrder,
-			CollationID:     semTable.CollationFor(order.Inner.Expr),
 		})
 	}
 	return plan, origColCount != plan.Select.GetColumnCount(), nil
@@ -836,38 +835,32 @@ func createMemorySortPlanOnAggregation(plan *orderedAggregate, orderExprs []abst
 	}
 
 	for _, order := range orderExprs {
-		offset, woffset, idx, found := findExprInOrderedAggr(plan, order)
+		offset, woffset, found := findExprInOrderedAggr(plan, order)
 		if !found {
 			return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "expected to find the order by expression (%s) in orderedAggregate", sqlparser.String(order.Inner))
 		}
-
-		collationID := collations.Unknown
-		if woffset != -1 {
-			collationID = plan.eaggr.GroupByKeys[idx].CollationID
-		}
 		ms.eMemorySort.OrderBy = append(ms.eMemorySort.OrderBy, engine.OrderByParams{
 			Col:               offset,
 			WeightStringCol:   woffset,
 			Desc:              order.Inner.Direction == sqlparser.DescOrder,
 			StarColFixedIndex: offset,
-			CollationID:       collationID,
 		})
 	}
 	return ms, nil
 }
 
-func findExprInOrderedAggr(plan *orderedAggregate, order abstract.OrderBy) (keyCol int, weightStringCol int, index int, found bool) {
-	for idx, key := range plan.eaggr.GroupByKeys {
+func findExprInOrderedAggr(plan *orderedAggregate, order abstract.OrderBy) (int, int, bool) {
+	for _, key := range plan.eaggr.GroupByKeys {
 		if sqlparser.EqualsExpr(order.WeightStrExpr, key.Expr) {
-			return key.KeyCol, key.WeightStringCol, idx, true
+			return key.KeyCol, key.WeightStringCol, true
 		}
 	}
-	for idx, aggregate := range plan.eaggr.Aggregates {
+	for _, aggregate := range plan.eaggr.Aggregates {
 		if sqlparser.EqualsExpr(order.WeightStrExpr, aggregate.Expr) {
-			return aggregate.Col, -1, idx, true
+			return aggregate.Col, -1, true
 		}
 	}
-	return 0, 0, 0, false
+	return 0, 0, false
 }
 
 func (hp *horizonPlanning) createMemorySortPlan(ctx *planningContext, plan logicalPlan, orderExprs []abstract.OrderBy, useWeightStr bool) (logicalPlan, error) {
@@ -896,7 +889,6 @@ func (hp *horizonPlanning) createMemorySortPlan(ctx *planningContext, plan logic
 			WeightStringCol:   weightStringOffset,
 			Desc:              order.Inner.Direction == sqlparser.DescOrder,
 			StarColFixedIndex: offset,
-			CollationID:       ctx.semTable.CollationFor(order.Inner.Expr),
 		})
 	}
 	return ms, nil
diff --git a/go/vt/vtgate/planbuilder/memory_sort.go b/go/vt/vtgate/planbuilder/memory_sort.go
index 48ed8a7d35..fda47d05d4 100644
--- a/go/vt/vtgate/planbuilder/memory_sort.go
+++ b/go/vt/vtgate/planbuilder/memory_sort.go
@@ -20,7 +20,6 @@ import (
 	"errors"
 	"fmt"
 
-	"vitess.io/vitess/go/mysql/collations"
 	"vitess.io/vitess/go/vt/vtgate/semantics"
 
 	"vitess.io/vitess/go/sqltypes"
@@ -83,14 +82,13 @@ func newMemorySort(plan logicalPlan, orderBy v3OrderBy) (*memorySort, error) {
 		if colNumber == -1 {
 			return nil, fmt.Errorf("unsupported: memory sort: order by must reference a column in the select list: %s", sqlparser.String(order))
 		}
-		// TODO(king-11) need to pass in collation here
+
 		ob := engine.OrderByParams{
 			Col:               colNumber,
 			WeightStringCol:   -1,
 			Desc:              order.Direction == sqlparser.DescOrder,
 			StarColFixedIndex: colNumber,
 			FromGroupBy:       order.fromGroupBy,
-			CollationID:       collations.Unknown,
 		}
 		ms.eMemorySort.OrderBy = append(ms.eMemorySort.OrderBy, ob)
 	}
diff --git a/go/vt/vtgate/planbuilder/ordering.go b/go/vt/vtgate/planbuilder/ordering.go
index ccf13e4de5..24a2d4231e 100644
--- a/go/vt/vtgate/planbuilder/ordering.go
+++ b/go/vt/vtgate/planbuilder/ordering.go
@@ -16,7 +16,6 @@ package planbuilder
 import (
 	"fmt"
 
-	"vitess.io/vitess/go/mysql/collations"
 	vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc"
 	"vitess.io/vitess/go/vt/sqlparser"
 	"vitess.io/vitess/go/vt/vterrors"
@@ -330,14 +329,12 @@ func planRouteOrdering(orderBy v3OrderBy, node *route) (logicalPlan, error) {
 			}
 		}
 
-		// TODO(king-11) pass in collation here
 		ob := engine.OrderByParams{
 			Col:               colNumber,
 			WeightStringCol:   -1,
 			Desc:              order.Direction == sqlparser.DescOrder,
 			StarColFixedIndex: starColFixedIndex,
 			FromGroupBy:       order.fromGroupBy,
-			CollationID:       collations.Unknown,
 		}
 		node.eroute.OrderBy = append(node.eroute.OrderBy, ob)
 
diff --git a/web/vtadmin/tailwind.config.js b/web/vtadmin/tailwind.config.js
index dc33baf4b6..4b08fb0d68 100644
--- a/web/vtadmin/tailwind.config.js
+++ b/web/vtadmin/tailwind.config.js
@@ -2,12 +2,7 @@ module.exports = {
     purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],
     darkMode: false,
     theme: {
-        extend: {
-            textColor: {
-                primary: '#17171b',
-                secondary: '#718096',
-            },
-        },
+        extend: {},
         fontFamily: {
             mono: ['NotoMono', 'source-code-pro', 'menlo', 'monaco', 'consolas', 'Courier New', 'monospace'],
             sans: [
@@ -25,6 +20,10 @@ module.exports = {
                 'sans-serif',
             ],
         },
+        textColor: {
+            primary: '#17171b',
+            secondary: '#718096',
+        },
     },
     variants: {
         extend: {},


Test patch:
diff --git a/.github/docker/cluster_test_vreplication_basic/Dockerfile b/.github/docker/cluster_test_vreplication_basic/Dockerfile
new file mode 100644
index 0000000000..f246f98016
--- /dev/null
+++ b/.github/docker/cluster_test_vreplication_basic/Dockerfile
@@ -0,0 +1,42 @@
+# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"
+
+ARG bootstrap_version=3
+ARG image="vitess/bootstrap:${bootstrap_version}-mysql57"
+
+FROM "${image}"
+
+USER root
+
+# Re-copy sources from working tree
+RUN rm -rf /vt/src/vitess.io/vitess/*
+COPY . /vt/src/vitess.io/vitess
+
+# install XtraBackup
+RUN wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
+RUN apt-get update
+RUN apt-get install -y gnupg2
+RUN dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
+RUN apt-get update
+RUN apt-get install -y percona-xtrabackup-24
+
+# Set the working directory
+WORKDIR /vt/src/vitess.io/vitess
+
+# Fix permissions
+RUN chown -R vitess:vitess /vt
+
+USER vitess
+
+# Set environment variables
+ENV VTROOT /vt/src/vitess.io/vitess
+# Set the vtdataroot such that it uses the volume mount
+ENV VTDATAROOT /vt/vtdataroot
+
+# create the vtdataroot directory
+RUN mkdir -p $VTDATAROOT
+
+# install goimports
+RUN go install golang.org/x/tools/cmd/goimports@latest
+
+# sleep for 50 minutes
+CMD sleep 3000
\ No newline at end of file
diff --git a/.github/docker/cluster_test_vreplication_cellalias/Dockerfile b/.github/docker/cluster_test_vreplication_cellalias/Dockerfile
new file mode 100644
index 0000000000..f246f98016
--- /dev/null
+++ b/.github/docker/cluster_test_vreplication_cellalias/Dockerfile
@@ -0,0 +1,42 @@
+# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"
+
+ARG bootstrap_version=3
+ARG image="vitess/bootstrap:${bootstrap_version}-mysql57"
+
+FROM "${image}"
+
+USER root
+
+# Re-copy sources from working tree
+RUN rm -rf /vt/src/vitess.io/vitess/*
+COPY . /vt/src/vitess.io/vitess
+
+# install XtraBackup
+RUN wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
+RUN apt-get update
+RUN apt-get install -y gnupg2
+RUN dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
+RUN apt-get update
+RUN apt-get install -y percona-xtrabackup-24
+
+# Set the working directory
+WORKDIR /vt/src/vitess.io/vitess
+
+# Fix permissions
+RUN chown -R vitess:vitess /vt
+
+USER vitess
+
+# Set environment variables
+ENV VTROOT /vt/src/vitess.io/vitess
+# Set the vtdataroot such that it uses the volume mount
+ENV VTDATAROOT /vt/vtdataroot
+
+# create the vtdataroot directory
+RUN mkdir -p $VTDATAROOT
+
+# install goimports
+RUN go install golang.org/x/tools/cmd/goimports@latest
+
+# sleep for 50 minutes
+CMD sleep 3000
\ No newline at end of file
diff --git a/.github/docker/cluster_test_vreplication_multicell/Dockerfile b/.github/docker/cluster_test_vreplication_multicell/Dockerfile
new file mode 100644
index 0000000000..f246f98016
--- /dev/null
+++ b/.github/docker/cluster_test_vreplication_multicell/Dockerfile
@@ -0,0 +1,42 @@
+# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"
+
+ARG bootstrap_version=3
+ARG image="vitess/bootstrap:${bootstrap_version}-mysql57"
+
+FROM "${image}"
+
+USER root
+
+# Re-copy sources from working tree
+RUN rm -rf /vt/src/vitess.io/vitess/*
+COPY . /vt/src/vitess.io/vitess
+
+# install XtraBackup
+RUN wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
+RUN apt-get update
+RUN apt-get install -y gnupg2
+RUN dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
+RUN apt-get update
+RUN apt-get install -y percona-xtrabackup-24
+
+# Set the working directory
+WORKDIR /vt/src/vitess.io/vitess
+
+# Fix permissions
+RUN chown -R vitess:vitess /vt
+
+USER vitess
+
+# Set environment variables
+ENV VTROOT /vt/src/vitess.io/vitess
+# Set the vtdataroot such that it uses the volume mount
+ENV VTDATAROOT /vt/vtdataroot
+
+# create the vtdataroot directory
+RUN mkdir -p $VTDATAROOT
+
+# install goimports
+RUN go install golang.org/x/tools/cmd/goimports@latest
+
+# sleep for 50 minutes
+CMD sleep 3000
\ No newline at end of file
diff --git a/.github/docker/cluster_test_vreplication_v2/Dockerfile b/.github/docker/cluster_test_vreplication_v2/Dockerfile
new file mode 100644
index 0000000000..f246f98016
--- /dev/null
+++ b/.github/docker/cluster_test_vreplication_v2/Dockerfile
@@ -0,0 +1,42 @@
+# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"
+
+ARG bootstrap_version=3
+ARG image="vitess/bootstrap:${bootstrap_version}-mysql57"
+
+FROM "${image}"
+
+USER root
+
+# Re-copy sources from working tree
+RUN rm -rf /vt/src/vitess.io/vitess/*
+COPY . /vt/src/vitess.io/vitess
+
+# install XtraBackup
+RUN wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
+RUN apt-get update
+RUN apt-get install -y gnupg2
+RUN dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
+RUN apt-get update
+RUN apt-get install -y percona-xtrabackup-24
+
+# Set the working directory
+WORKDIR /vt/src/vitess.io/vitess
+
+# Fix permissions
+RUN chown -R vitess:vitess /vt
+
+USER vitess
+
+# Set environment variables
+ENV VTROOT /vt/src/vitess.io/vitess
+# Set the vtdataroot such that it uses the volume mount
+ENV VTDATAROOT /vt/vtdataroot
+
+# create the vtdataroot directory
+RUN mkdir -p $VTDATAROOT
+
+# install goimports
+RUN go install golang.org/x/tools/cmd/goimports@latest
+
+# sleep for 50 minutes
+CMD sleep 3000
\ No newline at end of file
diff --git a/.github/docker/unit_test_mariadb103/Dockerfile b/.github/docker/unit_test_mariadb103/Dockerfile
new file mode 100644
index 0000000000..e35e4e1415
--- /dev/null
+++ b/.github/docker/unit_test_mariadb103/Dockerfile
@@ -0,0 +1,37 @@
+# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"
+
+ARG bootstrap_version=3
+ARG image="vitess/bootstrap:${bootstrap_version}-mariadb103"
+
+FROM "${image}"
+
+USER root
+
+# Re-copy sources from working tree
+RUN rm -rf /vt/src/vitess.io/vitess/*
+COPY . /vt/src/vitess.io/vitess
+
+# Set the working directory
+WORKDIR /vt/src/vitess.io/vitess
+
+# Fix permissions
+RUN chown -R vitess:vitess /vt
+
+USER vitess
+
+# Set environment variables
+ENV VTROOT /vt/src/vitess.io/vitess
+# Set the vtdataroot such that it uses the volume mount
+ENV VTDATAROOT /vt/vtdataroot
+
+# create the vtdataroot directory
+RUN mkdir -p $VTDATAROOT
+
+# install goimports
+RUN go install golang.org/x/tools/cmd/goimports@latest
+
+# make tools
+RUN make tools
+
+# sleep for 50 minutes
+CMD sleep 3000
\ No newline at end of file
diff --git a/.github/docker/unit_test_mysql57/Dockerfile b/.github/docker/unit_test_mysql57/Dockerfile
new file mode 100644
index 0000000000..15f5d6b202
--- /dev/null
+++ b/.github/docker/unit_test_mysql57/Dockerfile
@@ -0,0 +1,37 @@
+# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"
+
+ARG bootstrap_version=3
+ARG image="vitess/bootstrap:${bootstrap_version}-mysql57"
+
+FROM "${image}"
+
+USER root
+
+# Re-copy sources from working tree
+RUN rm -rf /vt/src/vitess.io/vitess/*
+COPY . /vt/src/vitess.io/vitess
+
+# Set the working directory
+WORKDIR /vt/src/vitess.io/vitess
+
+# Fix permissions
+RUN chown -R vitess:vitess /vt
+
+USER vitess
+
+# Set environment variables
+ENV VTROOT /vt/src/vitess.io/vitess
+# Set the vtdataroot such that it uses the volume mount
+ENV VTDATAROOT /vt/vtdataroot
+
+# create the vtdataroot directory
+RUN mkdir -p $VTDATAROOT
+
+# install goimports
+RUN go install golang.org/x/tools/cmd/goimports@latest
+
+# make tools
+RUN make tools
+
+# sleep for 50 minutes
+CMD sleep 3000
\ No newline at end of file
diff --git a/.github/workflows/unit_test_mariadb102.yml b/.github/workflows/unit_test_mariadb102.yml
index f277c5caa3..616634f1fe 100644
--- a/.github/workflows/unit_test_mariadb102.yml
+++ b/.github/workflows/unit_test_mariadb102.yml
@@ -20,6 +20,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/.github/workflows/unit_test_mariadb103.yml b/.github/workflows/unit_test_mariadb103.yml
index c379f2e3c5..59e0ac8e7a 100644
--- a/.github/workflows/unit_test_mariadb103.yml
+++ b/.github/workflows/unit_test_mariadb103.yml
@@ -8,62 +8,33 @@ concurrency:
 
 jobs:
   test:
-    runs-on: ubuntu-18.04
+    runs-on: self-hosted
 
     steps:
-    - name: Set up Go
-      uses: actions/setup-go@v2
-      with:
-        go-version: 1.17
+      - name: Check out code
+        uses: actions/checkout@v2
 
-    - name: Tune the OS
-      run: |
-        echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
+      - name: Build Docker Image
+        run: docker build -f ./.github/docker/unit_test_mariadb103/Dockerfile -t unit_test_mariadb103:$GITHUB_SHA  .
 
-    - name: Check out code
-      uses: actions/checkout@v2
+      - name: Run test
+        timeout-minutes: 30
+        run: docker run --name "unit_test_mariadb103_$GITHUB_SHA" unit_test_mariadb103:$GITHUB_SHA /bin/bash -c 'make unit_test'
 
-    - name: Get dependencies
-      run: |
-        export DEBIAN_FRONTEND="noninteractive"
-        sudo apt-get update
+      - name: Print Volume Used
+        if: ${{ always() }}
+        run: |
+          docker inspect -f '{{ (index .Mounts 0).Name }}' unit_test_mariadb103_$GITHUB_SHA
 
-        # !mysql57
+      - name: Cleanup Docker Volume
+        run: |
+          docker rm -v unit_test_mariadb103_$GITHUB_SHA
 
-        # Uninstall any previously installed MySQL first
-        sudo systemctl stop apparmor
-        sudo DEBIAN_FRONTEND="noninteractive" apt-get remove -y --purge mysql-server mysql-client mysql-common
-        sudo apt-get -y autoremove
-        sudo apt-get -y autoclean
-        sudo deluser mysql
-        sudo rm -rf /var/lib/mysql
-        sudo rm -rf /etc/mysql
+      - name: Cleanup Docker Container
+        if: ${{ always() }}
+        run: |
+          docker rm -f unit_test_mariadb103_$GITHUB_SHA
 
-        # mariadb103
-        sudo apt-get install -y software-properties-common
-        sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
-        sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.3/ubuntu bionic main'
-        sudo apt update
-        sudo DEBIAN_FRONTEND="noninteractive" apt install -y mariadb-server
-
-        sudo apt-get install -y make unzip g++ curl git wget ant openjdk-8-jdk eatmydata
-        sudo service mysql stop
-        sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld" # https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263
-        sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
-        sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
-
-        mkdir -p dist bin
-        curl -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist
-        mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/
-
-        go mod download
-        go install golang.org/x/tools/cmd/goimports@latest
-
-    - name: Run make tools
-      run: |
-        make tools
-
-    - name: Run test
-      timeout-minutes: 30
-      run: |
-        eatmydata -- make unit_test
+      - name: Cleanup Docker Image
+        run: |
+          docker image rm unit_test_mariadb103:$GITHUB_SHA
diff --git a/.github/workflows/unit_test_mysql57.yml b/.github/workflows/unit_test_mysql57.yml
index e5d3a3d489..2d0e74573a 100644
--- a/.github/workflows/unit_test_mysql57.yml
+++ b/.github/workflows/unit_test_mysql57.yml
@@ -8,47 +8,33 @@ concurrency:
 
 jobs:
   test:
-    runs-on: ubuntu-18.04
+    runs-on: self-hosted
 
     steps:
-    - name: Set up Go
-      uses: actions/setup-go@v2
-      with:
-        go-version: 1.17
-
-    - name: Tune the OS
-      run: |
-        echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
-
-    - name: Check out code
-      uses: actions/checkout@v2
-
-    - name: Get dependencies
-      run: |
-        export DEBIAN_FRONTEND="noninteractive"
-        sudo apt-get update
-
-        # mysql57
-        sudo apt-get install -y mysql-server mysql-client
-
-        sudo apt-get install -y make unzip g++ curl git wget ant openjdk-8-jdk eatmydata
-        sudo service mysql stop
-        sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld" # https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263
-        sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
-        sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"
-
-        mkdir -p dist bin
-        curl -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist
-        mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/
-
-        go mod download
-        go install golang.org/x/tools/cmd/goimports@latest
-
-    - name: Run make tools
-      run: |
-        make tools
-
-    - name: Run test
-      timeout-minutes: 30
-      run: |
-        eatmydata -- make unit_test
+      - name: Check out code
+        uses: actions/checkout@v2
+
+      - name: Build Docker Image
+        run: docker build -f ./.github/docker/unit_test_mysql57/Dockerfile -t unit_test_mysql57:$GITHUB_SHA  .
+
+      - name: Run test
+        timeout-minutes: 30
+        run: docker run --name "unit_test_mysql57_$GITHUB_SHA" unit_test_mysql57:$GITHUB_SHA /bin/bash -c 'make unit_test'
+
+      - name: Print Volume Used
+        if: ${{ always() }}
+        run: |
+          docker inspect -f '{{ (index .Mounts 0).Name }}' unit_test_mysql57_$GITHUB_SHA
+
+      - name: Cleanup Docker Volume
+        run: |
+          docker rm -v unit_test_mysql57_$GITHUB_SHA
+
+      - name: Cleanup Docker Container
+        if: ${{ always() }}
+        run: |
+          docker rm -f unit_test_mysql57_$GITHUB_SHA
+
+      - name: Cleanup Docker Image
+        run: |
+          docker image rm unit_test_mysql57:$GITHUB_SHA
diff --git a/.github/workflows/unit_test_mysql80.yml b/.github/workflows/unit_test_mysql80.yml
index 76dcdfaac1..4e4118cd33 100644
--- a/.github/workflows/unit_test_mysql80.yml
+++ b/.github/workflows/unit_test_mysql80.yml
@@ -20,6 +20,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/go/vt/vtgate/engine/memory_sort_test.go b/go/vt/vtgate/engine/memory_sort_test.go
index 62d3ec5b0e..9ddf3e482c 100644
--- a/go/vt/vtgate/engine/memory_sort_test.go
+++ b/go/vt/vtgate/engine/memory_sort_test.go
@@ -19,7 +19,6 @@ package engine
 import (
 	"testing"
 
-	"vitess.io/vitess/go/mysql/collations"
 	"vitess.io/vitess/go/test/utils"
 
 	"github.com/stretchr/testify/require"
@@ -207,152 +206,6 @@ func TestMemorySortExecuteWeightString(t *testing.T) {
 	utils.MustMatch(t, wantResult, result)
 }
 
-func TestMemorySortStreamExecuteCollation(t *testing.T) {
-	fields := sqltypes.MakeTestFields(
-		"normal",
-		"varchar",
-	)
-	fp := &fakePrimitive{
-		results: []*sqltypes.Result{sqltypes.MakeTestResult(
-			fields,
-			"c",
-			"d",
-			"cs",
-			"cs",
-			"c",
-		)},
-	}
-
-	collationID, _ := collations.Default().LookupID("utf8mb4_hu_0900_ai_ci")
-	ms := &MemorySort{
-		OrderBy: []OrderByParams{{
-			Col:         0,
-			CollationID: collationID,
-		}},
-		Input: fp,
-	}
-
-	var results []*sqltypes.Result
-	t.Run("order by collation", func(t *testing.T) {
-		results = nil
-		err := ms.TryStreamExecute(&noopVCursor{}, nil, true, func(qr *sqltypes.Result) error {
-			results = append(results, qr)
-			return nil
-		})
-		require.NoError(t, err)
-
-		wantResults := sqltypes.MakeTestStreamingResults(
-			fields,
-			"c",
-			"c",
-			"cs",
-			"cs",
-			"d",
-		)
-		utils.MustMatch(t, wantResults, results)
-	})
-
-	t.Run("Descending order by collation", func(t *testing.T) {
-		ms.OrderBy[0].Desc = true
-		fp.rewind()
-		results = nil
-		err := ms.TryStreamExecute(&noopVCursor{}, nil, true, func(qr *sqltypes.Result) error {
-			results = append(results, qr)
-			return nil
-		})
-		require.NoError(t, err)
-
-		wantResults := sqltypes.MakeTestStreamingResults(
-			fields,
-			"d",
-			"cs",
-			"cs",
-			"c",
-			"c",
-		)
-		utils.MustMatch(t, wantResults, results)
-	})
-
-	t.Run("Limit test", func(t *testing.T) {
-		fp.rewind()
-		upperlimit, err := sqlparser.NewPlanValue(sqlparser.NewArgument("__upper_limit"))
-		require.NoError(t, err)
-		ms.UpperLimit = upperlimit
-		bv := map[string]*querypb.BindVariable{"__upper_limit": sqltypes.Int64BindVariable(3)}
-
-		results = nil
-		err = ms.TryStreamExecute(&noopVCursor{}, bv, true, func(qr *sqltypes.Result) error {
-			results = append(results, qr)
-			return nil
-		})
-		require.NoError(t, err)
-
-		wantResults := sqltypes.MakeTestStreamingResults(
-			fields,
-			"d",
-			"cs",
-			"cs",
-		)
-		utils.MustMatch(t, wantResults, results)
-	})
-}
-
-func TestMemorySortExecuteCollation(t *testing.T) {
-	fields := sqltypes.MakeTestFields(
-		"c1",
-		"varchar",
-	)
-	fp := &fakePrimitive{
-		results: []*sqltypes.Result{sqltypes.MakeTestResult(
-			fields,
-			"c",
-			"d",
-			"cs",
-			"cs",
-			"c",
-		)},
-	}
-
-	collationID, _ := collations.Default().LookupID("utf8mb4_hu_0900_ai_ci")
-	ms := &MemorySort{
-		OrderBy: []OrderByParams{{
-			Col:         0,
-			CollationID: collationID,
-		}},
-		Input: fp,
-	}
-
-	result, err := ms.TryExecute(&noopVCursor{}, nil, false)
-	require.NoError(t, err)
-
-	wantResult := sqltypes.MakeTestResult(
-		fields,
-		"c",
-		"c",
-		"cs",
-		"cs",
-		"d",
-	)
-	utils.MustMatch(t, wantResult, result)
-
-	fp.rewind()
-	upperlimit, err := sqlparser.NewPlanValue(sqlparser.NewArgument("__upper_limit"))
-	require.NoError(t, err)
-	ms.UpperLimit = upperlimit
-	bv := map[string]*querypb.BindVariable{"__upper_limit": sqltypes.Int64BindVariable(3)}
-
-	result, err = ms.TryExecute(&noopVCursor{}, bv, false)
-	require.NoError(t, err)
-
-	wantResult = sqltypes.MakeTestResult(
-		fields,
-		"c",
-		"c",
-		"cs",
-	)
-	utils.MustMatch(t, wantResult, result)
-}
-
 func TestMemorySortStreamExecute(t *testing.T) {
 	fields := sqltypes.MakeTestFields(
 		"c1|c2",
diff --git a/go/vt/vtgate/engine/merge_sort_test.go b/go/vt/vtgate/engine/merge_sort_test.go
index b9483afce9..d9872ee044 100644
--- a/go/vt/vtgate/engine/merge_sort_test.go
+++ b/go/vt/vtgate/engine/merge_sort_test.go
@@ -20,7 +20,6 @@ import (
 	"errors"
 	"testing"
 
-	"vitess.io/vitess/go/mysql/collations"
 	"vitess.io/vitess/go/test/utils"
 
 	"github.com/stretchr/testify/require"
@@ -148,68 +147,6 @@ func TestMergeSortWeightString(t *testing.T) {
 	utils.MustMatch(t, wantResults, results)
 }
 
-func TestMergeSortCollation(t *testing.T) {
-	idColFields := sqltypes.MakeTestFields("normal", "varchar")
-	shardResults := []*shardResult{{
-		results: sqltypes.MakeTestStreamingResults(idColFields,
-			"c",
-			"---",
-			"d",
-		),
-	}, {
-		results: sqltypes.MakeTestStreamingResults(idColFields,
-			"cs",
-			"---",
-			"d",
-		),
-	}, {
-		results: sqltypes.MakeTestStreamingResults(idColFields,
-			"cs",
-			"---",
-			"lu",
-		),
-	}, {
-		results: sqltypes.MakeTestStreamingResults(idColFields,
-			"a",
-			"---",
-			"c",
-		),
-	}}
-
-	collationID, _ := collations.Default().LookupID("utf8mb4_hu_0900_ai_ci")
-	orderBy := []OrderByParams{{
-		Col:         0,
-		CollationID: collationID,
-	}}
-
-	var results []*sqltypes.Result
-	err := testMergeSort(shardResults, orderBy, func(qr *sqltypes.Result) error {
-		results = append(results, qr)
-		return nil
-	})
-	require.NoError(t, err)
-
-	// Results are returned one row at a time.
-	wantResults := sqltypes.MakeTestStreamingResults(idColFields,
-		"a",
-		"---",
-		"c",
-		"---",
-		"c",
-		"---",
-		"cs",
-		"---",
-		"cs",
-		"---",
-		"d",
-		"---",
-		"d",
-		"---",
-		"lu",
-	)
-	utils.MustMatch(t, wantResults, results)
-}
-
 // TestMergeSortDescending tests the normal flow of a merge
 // sort where all shards return descending rows.
 func TestMergeSortDescending(t *testing.T) {
diff --git a/go/vt/vtgate/engine/route_test.go b/go/vt/vtgate/engine/route_test.go
index aeb1ffd06f..6cf0b91f96 100644
--- a/go/vt/vtgate/engine/route_test.go
+++ b/go/vt/vtgate/engine/route_test.go
@@ -22,7 +22,6 @@ import (
 
 	"github.com/stretchr/testify/assert"
 
-	"vitess.io/vitess/go/mysql/collations"
 	vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc"
 	"vitess.io/vitess/go/vt/vterrors"
 
@@ -982,137 +981,6 @@ func TestRouteSortWeightStrings(t *testing.T) {
 	})
 }
 
-func TestRouteSortCollation(t *testing.T) {
-	sel := NewRoute(
-		SelectUnsharded,
-		&vindexes.Keyspace{
-			Name:    "ks",
-			Sharded: false,
-		},
-		"dummy_select",
-		"dummy_select_field",
-	)
-
-	collationID, _ := collations.Default().LookupID("utf8mb4_hu_0900_ai_ci")
-
-	sel.OrderBy = []OrderByParams{{
-		Col:         0,
-		CollationID: collationID,
-	}}
-
-	vc := &loggingVCursor{
-		shards: []string{"0"},
-		results: []*sqltypes.Result{
-			sqltypes.MakeTestResult(
-				sqltypes.MakeTestFields(
-					"normal",
-					"varchar",
-				),
-				"c",
-				"d",
-				"cs",
-				"cs",
-				"c",
-			),
-		},
-	}
-
-	var result *sqltypes.Result
-	var wantResult *sqltypes.Result
-	var err error
-	t.Run("Sort using Collation", func(t *testing.T) {
-		result, err = sel.TryExecute(vc, map[string]*querypb.BindVariable{}, false)
-		require.NoError(t, err)
-		vc.ExpectLog(t, []string{
-			`ResolveDestinations ks [] Destinations:DestinationAnyShard()`,
-			`ExecuteMultiShard ks.0: dummy_select {} false false`,
-		})
-		wantResult = sqltypes.MakeTestResult(
-			sqltypes.MakeTestFields(
-				"normal",
-				"varchar",
-			),
-			"c",
-			"c",
-			"cs",
-			"cs",
-			"d",
-		)
-		expectResult(t, "sel.Execute", result, wantResult)
-	})
-
-	t.Run("Descending ordering using Collation", func(t *testing.T) {
-		sel.OrderBy[0].Desc = true
-		vc.Rewind()
-		result, err = sel.TryExecute(vc, map[string]*querypb.BindVariable{}, false)
-		require.NoError(t, err)
-		wantResult = sqltypes.MakeTestResult(
-			sqltypes.MakeTestFields(
-				"normal",
-				"varchar",
-			),
-			"d",
-			"cs",
-			"cs",
-			"c",
-			"c",
-		)
-		expectResult(t, "sel.Execute", result, wantResult)
-	})
-
-	t.Run("Error when Unknown Collation", func(t *testing.T) {
-		sel.OrderBy = []OrderByParams{{
-			Col:         0,
-			CollationID: collations.Unknown,
-		}}
-
-		vc := &loggingVCursor{
-			shards: []string{"0"},
-			results: []*sqltypes.Result{
-				sqltypes.MakeTestResult(
-					sqltypes.MakeTestFields(
-						"normal",
-						"varchar",
-					),
-					"c",
-					"d",
-					"cs",
-					"cs",
-					"c",
-				),
-			},
-		}
-		_, err = sel.TryExecute(vc, map[string]*querypb.BindVariable{}, false)
-		require.EqualError(t, err, "types are not comparable: VARCHAR vs VARCHAR")
-	})
-
-	t.Run("Error when Unsupported Collation", func(t *testing.T) {
-		sel.OrderBy = []OrderByParams{{
-			Col:         0,
-			CollationID: 1111,
-		}}
-
-		vc := &loggingVCursor{
-			shards: []string{"0"},
-			results: []*sqltypes.Result{
-				sqltypes.MakeTestResult(
-					sqltypes.MakeTestFields(
-						"normal",
-						"varchar",
-					),
-					"c",
-					"d",
-					"cs",
-					"cs",
-					"c",
-				),
-			},
-		}
-		_, err = sel.TryExecute(vc, map[string]*querypb.BindVariable{}, false)
-		require.EqualError(t, err, "comparison using collation 1111 isn't possible")
-	})
-}
-
 func TestRouteSortTruncate(t *testing.T) {
 	sel := NewRoute(
 		SelectUnsharded,
diff --git a/go/vt/vtgate/planbuilder/testdata/aggr_cases.txt b/go/vt/vtgate/planbuilder/testdata/aggr_cases.txt
index d70f784453..7b96aadf50 100644
--- a/go/vt/vtgate/planbuilder/testdata/aggr_cases.txt
+++ b/go/vt/vtgate/planbuilder/testdata/aggr_cases.txt
@@ -145,7 +145,7 @@ Gen4 error: Expression of SELECT list is not in GROUP BY clause and contains non
           "Sharded": true
         },
         "FieldQuery": "select count(*), a, textcol1, b, weight_string(a), weight_string(textcol1), weight_string(b) from `user` where 1 != 1 group by a, weight_string(a), textcol1, weight_string(textcol1), b, weight_string(b)",
-        "OrderBy": "(1|4) ASC, (2|5) ASC COLLATE latin1_swedish_ci, (3|6) ASC",
+        "OrderBy": "(1|4) ASC, (2|5) ASC, (3|6) ASC",
         "Query": "select count(*), a, textcol1, b, weight_string(a), weight_string(textcol1), weight_string(b) from `user` group by a, weight_string(a), textcol1, weight_string(textcol1), b, weight_string(b) order by a asc, textcol1 asc, b asc",
         "Table": "`user`"
       }
@@ -246,7 +246,7 @@ Gen4 error: Expression of SELECT list is not in GROUP BY clause and contains non
   "Instructions": {
     "OperatorType": "Sort",
     "Variant": "Memory",
-    "OrderBy": "0 ASC, (2|5) ASC COLLATE latin1_swedish_ci",
+    "OrderBy": "0 ASC, (2|5) ASC",
     "ResultColumns": 4,
     "Inputs": [
       {
@@ -263,7 +263,7 @@ Gen4 error: Expression of SELECT list is not in GROUP BY clause and contains non
               "Sharded": true
             },
             "FieldQuery": "select count(*) as k, a, textcol1, b, weight_string(a), weight_string(textcol1), weight_string(b) from `user` where 1 != 1 group by a, weight_string(a), textcol1, weight_string(textcol1), b, weight_string(b)",
-            "OrderBy": "(1|4) ASC, (2|5) ASC COLLATE latin1_swedish_ci, (3|6) ASC",
+            "OrderBy": "(1|4) ASC, (2|5) ASC, (3|6) ASC",
             "Query": "select count(*) as k, a, textcol1, b, weight_string(a), weight_string(textcol1), weight_string(b) from `user` group by a, weight_string(a), textcol1, weight_string(textcol1), b, weight_string(b) order by a asc, textcol1 asc, b asc",
             "Table": "`user`"
           }
diff --git a/go/vt/vtgate/planbuilder/testdata/from_cases.txt b/go/vt/vtgate/planbuilder/testdata/from_cases.txt
index c50b51f139..82380e2196 100644
--- a/go/vt/vtgate/planbuilder/testdata/from_cases.txt
+++ b/go/vt/vtgate/planbuilder/testdata/from_cases.txt
@@ -493,6 +493,7 @@ Gen4 plan same as above
   }
 }
 
+
 # ',' join
 "select music.col from user, music"
 {
diff --git a/go/vt/vtgate/planbuilder/testdata/memory_sort_cases.txt b/go/vt/vtgate/planbuilder/testdata/memory_sort_cases.txt
index d2050b74ba..d1a32f7f0e 100644
--- a/go/vt/vtgate/planbuilder/testdata/memory_sort_cases.txt
+++ b/go/vt/vtgate/planbuilder/testdata/memory_sort_cases.txt
@@ -234,7 +234,7 @@ Gen4 error: Expression of SELECT list is not in GROUP BY clause and contains non
   "Instructions": {
     "OperatorType": "Sort",
     "Variant": "Memory",
-    "OrderBy": "(2|3) ASC COLLATE latin1_swedish_ci, 1 ASC, (2|3) ASC COLLATE latin1_swedish_ci",
+    "OrderBy": "(2|3) ASC, 1 ASC, (2|3) ASC",
     "ResultColumns": 2,
     "Inputs": [
       {
@@ -251,7 +251,7 @@ Gen4 error: Expression of SELECT list is not in GROUP BY clause and contains non
               "Sharded": true
             },
             "FieldQuery": "select textcol1 as t, count(*) as k, textcol1, weight_string(textcol1) from `user` where 1 != 1 group by textcol1, weight_string(textcol1)",
-            "OrderBy": "(2|3) ASC COLLATE latin1_swedish_ci",
+            "OrderBy": "(2|3) ASC",
             "Query": "select textcol1 as t, count(*) as k, textcol1, weight_string(textcol1) from `user` group by textcol1, weight_string(textcol1) order by textcol1 asc",
             "Table": "`user`"
           }
@@ -627,48 +627,7 @@ Gen4 error: Expression of SELECT list is not in GROUP BY clause and contains non
     ]
   }
 }
-{
-  "QueryType": "SELECT",
-  "Original": "select u.a, u.textcol1, un.col2 from user u join unsharded un order by u.textcol1, un.col2",
-  "Instructions": {
-    "OperatorType": "Sort",
-    "Variant": "Memory",
-    "OrderBy": "(1|3) ASC COLLATE latin1_swedish_ci, (2|4) ASC",
-    "ResultColumns": 3,
-    "Inputs": [
-      {
-        "OperatorType": "Join",
-        "Variant": "Join",
-        "JoinColumnIndexes": "-1,-2,1,-3,2",
-        "TableName": "`user`_unsharded",
-        "Inputs": [
-          {
-            "OperatorType": "Route",
-            "Variant": "SelectScatter",
-            "Keyspace": {
-              "Name": "user",
-              "Sharded": true
-            },
-            "FieldQuery": "select u.a, u.textcol1, weight_string(u.textcol1) from `user` as u where 1 != 1",
-            "Query": "select u.a, u.textcol1, weight_string(u.textcol1) from `user` as u",
-            "Table": "`user`"
-          },
-          {
-            "OperatorType": "Route",
-            "Variant": "SelectUnsharded",
-            "Keyspace": {
-              "Name": "main",
-              "Sharded": false
-            },
-            "FieldQuery": "select un.col2, weight_string(un.col2) from unsharded as un where 1 != 1",
-            "Query": "select un.col2, weight_string(un.col2) from unsharded as un",
-            "Table": "unsharded"
-          }
-        ]
-      }
-    ]
-  }
-}
+Gen4 plan same as above
 
 # Order by for join, on text column in RHS.
 "select u.a, u.textcol1, un.col2 from unsharded un join user u order by u.textcol1, un.col2"
@@ -714,48 +673,7 @@ Gen4 error: Expression of SELECT list is not in GROUP BY clause and contains non
     ]
   }
 }
-{
-  "QueryType": "SELECT",
-  "Original": "select u.a, u.textcol1, un.col2 from unsharded un join user u order by u.textcol1, un.col2",
-  "Instructions": {
-    "OperatorType": "Sort",
-    "Variant": "Memory",
-    "OrderBy": "(1|3) ASC COLLATE latin1_swedish_ci, (2|4) ASC",
-    "ResultColumns": 3,
-    "Inputs": [
-      {
-        "OperatorType": "Join",
-        "Variant": "Join",
-        "JoinColumnIndexes": "1,2,-1,3,-2",
-        "TableName": "unsharded_`user`",
-        "Inputs": [
-          {
-            "OperatorType": "Route",
-            "Variant": "SelectUnsharded",
-            "Keyspace": {
-              "Name": "main",
-              "Sharded": false
-            },
-            "FieldQuery": "select un.col2, weight_string(un.col2) from unsharded as un where 1 != 1",
-            "Query": "select un.col2, weight_string(un.col2) from unsharded as un",
-            "Table": "unsharded"
-          },
-          {
-            "OperatorType": "Route",
-            "Variant": "SelectScatter",
-            "Keyspace": {
-              "Name": "user",
-              "Sharded": true
-            },
-            "FieldQuery": "select u.a, u.textcol1, weight_string(u.textcol1) from `user` as u where 1 != 1",
-            "Query": "select u.a, u.textcol1, weight_string(u.textcol1) from `user` as u",
-            "Table": "`user`"
-          }
-        ]
-      }
-    ]
-  }
-}
+Gen4 plan same as above
 
 # order by for vindex func
 "select id, keyspace_id, range_start, range_end from user_index where id = :id order by range_start"
diff --git a/go/vt/vtgate/planbuilder/testdata/oltp_cases.txt b/go/vt/vtgate/planbuilder/testdata/oltp_cases.txt
index 97d31bdbb1..cf11eb98c6 100644
--- a/go/vt/vtgate/planbuilder/testdata/oltp_cases.txt
+++ b/go/vt/vtgate/planbuilder/testdata/oltp_cases.txt
@@ -106,23 +106,7 @@ Gen4 plan same as above
     "Table": "sbtest1"
   }
 }
-{
-  "QueryType": "SELECT",
-  "Original": "SELECT c FROM sbtest1 WHERE id BETWEEN 50 AND 235 ORDER BY c",
-  "Instructions": {
-    "OperatorType": "Route",
-    "Variant": "SelectScatter",
-    "Keyspace": {
-      "Name": "main",
-      "Sharded": true
-    },
-    "FieldQuery": "select c, weight_string(c) from sbtest1 where 1 != 1",
-    "OrderBy": "(0|1) ASC COLLATE latin1_swedish_ci",
-    "Query": "select c, weight_string(c) from sbtest1 where id between 50 and 235 order by c asc",
-    "ResultColumns": 1,
-    "Table": "sbtest1"
-  }
-}
+Gen4 plan same as above
 
 # OLTP distinct range select
 "SELECT DISTINCT c FROM sbtest30 WHERE id BETWEEN 1 AND 10 ORDER BY c"
@@ -168,7 +152,7 @@ Gen4 plan same as above
           "Sharded": true
         },
         "FieldQuery": "select c, weight_string(c) from sbtest30 where 1 != 1",
-        "OrderBy": "(0|1) ASC COLLATE latin1_swedish_ci, (0|1) ASC COLLATE latin1_swedish_ci",
+        "OrderBy": "(0|1) ASC, (0|1) ASC",
         "Query": "select distinct c, weight_string(c) from sbtest30 where id between 1 and 10 order by c asc, c asc",
         "Table": "sbtest30"
       }
diff --git a/go/vt/vtgate/planbuilder/testdata/postprocess_cases.txt b/go/vt/vtgate/planbuilder/testdata/postprocess_cases.txt
index 9a8fee0479..2bc80f5903 100644
--- a/go/vt/vtgate/planbuilder/testdata/postprocess_cases.txt
+++ b/go/vt/vtgate/planbuilder/testdata/postprocess_cases.txt
@@ -407,23 +407,7 @@ Gen4 plan same as above
     "Table": "authoritative"
   }
 }
-{
-  "QueryType": "SELECT",
-  "Original": "select * from authoritative order by col1",
-  "Instructions": {
-    "OperatorType": "Route",
-    "Variant": "SelectScatter",
-    "Keyspace": {
-      "Name": "user",
-      "Sharded": true
-    },
-    "FieldQuery": "select user_id, col1, col2, weight_string(col1) from authoritative where 1 != 1",
-    "OrderBy": "(1|3) ASC COLLATE latin1_swedish_ci",
-    "Query": "select user_id, col1, col2, weight_string(col1) from authoritative order by col1 asc",
-    "ResultColumns": 3,
-    "Table": "authoritative"
-  }
-}
+Gen4 plan same as above
 
 # ORDER BY on scatter with text column
 "select a, textcol1, b from user order by a, textcol1, b"
@@ -444,23 +428,7 @@ Gen4 plan same as above
     "Table": "`user`"
   }
 }
-{
-  "QueryType": "SELECT",
-  "Original": "select a, textcol1, b from user order by a, textcol1, b",
-  "Instructions": {
-    "OperatorType": "Route",
-    "Variant": "SelectScatter",
-    "Keyspace": {
-      "Name": "user",
-      "Sharded": true
-    },
-    "FieldQuery": "select a, textcol1, b, weight_string(a), weight_string(textcol1), weight_string(b) from `user` where 1 != 1",
-    "OrderBy": "(0|3) ASC, (1|4) ASC COLLATE latin1_swedish_ci, (2|5) ASC",
-    "Query": "select a, textcol1, b, weight_string(a), weight_string(textcol1), weight_string(b) from `user` order by a asc, textcol1 asc, b asc",
-    "ResultColumns": 3,
-    "Table": "`user`"
-  }
-}
+Gen4 plan same as above
 
 # ORDER BY on scatter with text column, qualified name TODO: can plan better
 "select a, user.textcol1, b from user order by a, textcol1, b"
@@ -492,7 +460,7 @@ Gen4 plan same as above
       "Sharded": true
     },
     "FieldQuery": "select a, `user`.textcol1, b, weight_string(a), weight_string(textcol1), weight_string(b) from `user` where 1 != 1",
-    "OrderBy": "(0|3) ASC, (1|4) ASC COLLATE latin1_swedish_ci, (2|5) ASC",
+    "OrderBy": "(0|3) ASC, (1|4) ASC, (2|5) ASC",
     "Query": "select a, `user`.textcol1, b, weight_string(a), weight_string(textcol1), weight_string(b) from `user` order by a asc, textcol1 asc, b asc",
     "ResultColumns": 3,
     "Table": "`user`"
@@ -518,23 +486,7 @@ Gen4 plan same as above
     "Table": "`user`"
   }
 }
-{
-  "QueryType": "SELECT",
-  "Original": "select a, textcol1, b, textcol2 from user order by a, textcol1, b, textcol2",
-  "Instructions": {
-    "OperatorType": "Route",
-    "Variant": "SelectScatter",
-    "Keyspace": {
-      "Name": "user",
-      "Sharded": true
-    },
-    "FieldQuery": "select a, textcol1, b, textcol2, weight_string(a), weight_string(textcol1), weight_string(b), weight_string(textcol2) from `user` where 1 != 1",
-    "OrderBy": "(0|4) ASC, (1|5) ASC COLLATE latin1_swedish_ci, (2|6) ASC, (3|7) ASC COLLATE latin1_swedish_ci",
-    "Query": "select a, textcol1, b, textcol2, weight_string(a), weight_string(textcol1), weight_string(b), weight_string(textcol2) from `user` order by a asc, textcol1 asc, b asc, textcol2 asc",
-    "ResultColumns": 4,
-    "Table": "`user`"
-  }
-}
+Gen4 plan same as above
 
 # ORDER BY invalid col number on scatter
 "select col from user order by 2"
diff --git a/test/ci_workflow_gen.go b/test/ci_workflow_gen.go
index 3d5c65e300..4382fb3977 100644
--- a/test/ci_workflow_gen.go
+++ b/test/ci_workflow_gen.go
@@ -30,12 +30,12 @@ const (
 	workflowConfigDir = "../.github/workflows"
 
 	unitTestTemplate  = "templates/unit_test.tpl"
-	unitTestDatabases = "mysql57, mariadb103, mysql80, mariadb102"
+	unitTestDatabases = "mysql80, mariadb102"
 
 	clusterTestTemplate = "templates/cluster_endtoend_test.tpl"
 
 	unitTestSelfHostedTemplate    = "templates/unit_test_self_hosted.tpl"
-	unitTestSelfHostedDatabases   = ""
+	unitTestSelfHostedDatabases   = "mysql57, mariadb103"
 	dockerFileTemplate            = "templates/dockerfile.tpl"
 	clusterTestSelfHostedTemplate = "templates/cluster_endtoend_test_self_hosted.tpl"
 )
@@ -97,13 +97,14 @@ var (
 		"resharding",
 		"resharding_bytes",
 		"mysql80",
+	}
+
+	clusterSelfHostedList = []string{
 		"vreplication_basic",
 		"vreplication_multicell",
 		"vreplication_cellalias",
 		"vreplication_v2",
 	}
-
-	clusterSelfHostedList = []string{}
 	// TODO: currently some percona tools including xtrabackup are installed on all clusters, we can possibly optimize
 	// this by only installing them in the required clusters
 	clustersRequiringXtraBackup = append(clusterList, clusterSelfHostedList...)
@@ -180,9 +181,7 @@ func canonnizeList(list []string) []string {
 func parseList(csvList string) []string {
 	var list []string
 	for _, item := range strings.Split(csvList, ",") {
-		if item != "" {
-			list = append(list, strings.TrimSpace(item))
-		}
+		list = append(list, strings.TrimSpace(item))
 	}
 	return list
 }
diff --git a/test/templates/cluster_endtoend_test.tpl b/test/templates/cluster_endtoend_test.tpl
index c91915ca24..291643bbb8 100644
--- a/test/templates/cluster_endtoend_test.tpl
+++ b/test/templates/cluster_endtoend_test.tpl
@@ -27,6 +27,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2
 
diff --git a/test/templates/unit_test.tpl b/test/templates/unit_test.tpl
index 20f30254a7..8085d3677d 100644
--- a/test/templates/unit_test.tpl
+++ b/test/templates/unit_test.tpl
@@ -18,6 +18,12 @@ jobs:
       run: |
         echo '1024 65535' | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
 
+    # TEMPORARY WHILE GITHUB FIXES THIS https://github.com/actions/virtual-environments/issues/3185
+    - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
+      run: |
+        echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
+    # DON'T FORGET TO REMOVE CODE ABOVE WHEN ISSUE IS ADRESSED!
+
     - name: Check out code
       uses: actions/checkout@v2