Skip to content

Commit e243d9f

Browse files
authored
Merge pull request #17731 from hakman/automated-cherry-pick-of-#17709-upstream-release-1.34
Automated cherry pick of #17709: tests: free up disk space on github actions runner
2 parents 616dcf3 + 15f9080 commit e243d9f

File tree

3 files changed

+83
-6
lines changed

3 files changed

+83
-6
lines changed

.github/workflows/e2e.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,17 @@ jobs:
2727
with:
2828
go-version-file: '${{ env.GOPATH }}/src/k8s.io/kops/go.mod'
2929

30+
- name: dev/tasks/free-disk-space-on-github-actions-runner
31+
working-directory: ${{ env.GOPATH }}/src/k8s.io/kops
32+
run: |
33+
dev/tasks/free-disk-space-on-github-actions-runner
34+
3035
- name: tests/e2e/scenarios/bare-metal/run-test
3136
working-directory: ${{ env.GOPATH }}/src/k8s.io/kops
3237
run: |
3338
CHANGED_VERSION=$(git diff --name-only HEAD~2 | grep -E '^kops-version\.go$' || true)
3439
if [ -z "${CHANGED_VERSION}" ]
35-
then
40+
then
3641
timeout 60m tests/e2e/scenarios/bare-metal/run-test
3742
else
3843
echo "kops-version.go has been modified, skipping test"
@@ -61,12 +66,17 @@ jobs:
6166
with:
6267
go-version-file: '${{ env.GOPATH }}/src/k8s.io/kops/go.mod'
6368

69+
- name: dev/tasks/free-disk-space-on-github-actions-runner
70+
working-directory: ${{ env.GOPATH }}/src/k8s.io/kops
71+
run: |
72+
dev/tasks/free-disk-space-on-github-actions-runner
73+
6474
- name: tests/e2e/scenarios/bare-metal/run-test
6575
working-directory: ${{ env.GOPATH }}/src/k8s.io/kops
6676
run: |
6777
CHANGED_VERSION=$(git diff --name-only HEAD~2 | grep -E '^kops-version\.go$' || true)
6878
if [ -z "${CHANGED_VERSION}" ]
69-
then
79+
then
7080
timeout 60m tests/e2e/scenarios/bare-metal/scenario-ipv6
7181
else
7282
echo "kops-version.go has been modified, skipping test"
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright 2025 The Kubernetes Authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
set -o errexit
18+
set -o nounset
19+
set -o pipefail
20+
21+
REPO_ROOT=$(git rev-parse --show-toplevel)
22+
cd "${REPO_ROOT}"
23+
24+
# Free up disk space on GitHub Actions runners
25+
# Based on https://github.com/apache/flink/blob/02d30ace69dc18555a5085eccf70ee884e73a16e/tools/azure-pipelines/free_disk_space.sh
26+
27+
if [[ -z "${GITHUB_ACTIONS:-}" ]]; then
28+
echo "Not running on GitHub Actions; skipping disk space cleanup (for safety)"
29+
exit 1
30+
fi
31+
32+
echo "=============================================================================="
33+
echo "Freeing up disk space on CI system"
34+
echo "=============================================================================="
35+
36+
echo "Before cleanup:"
37+
echo "** 100 largest packages:"
38+
dpkg-query -Wf '${Installed-Size}\t${Status;1}\t${Package}\n' | sort -n | tail -n 100
39+
echo "** Disk usage:"
40+
df -h
41+
42+
echo "Removing man-db (to speed up further removals)"
43+
sudo apt-get remove -y man-db || true
44+
45+
echo "Removing large packages"
46+
sudo apt-get remove -y '^mysql-server-.*' || true
47+
sudo apt-get remove -y '^dotnet-.*' || true
48+
sudo apt-get remove -y '^llvm-.*' '^libllvm.*' '^libclang.*' || true
49+
# Hard to remove gcc because it is a dependency for many things
50+
#sudo apt-get remove -y '^gcc-.*' '^g\+\+.*' '^gfortran-.*' '^cpp-.*' || true
51+
sudo apt-get remove -y '^openjdk.*' '^temurin-.*' ca-certificates-java || true
52+
sudo apt-get remove -y 'php.*' || true
53+
sudo apt-get remove -y '^ruby.*' || true
54+
sudo apt-get remove -y microsoft-edge-stable google-chrome-stable firefox powershell mercurial-common
55+
sudo apt-get autoremove -y
56+
sudo apt-get clean
57+
58+
echo "Removing large directories"
59+
# deleting 15GB
60+
rm -rf /usr/share/dotnet/
61+
62+
63+
echo "After cleanup:"
64+
echo "** 100 largest packages:"
65+
dpkg-query -Wf '${Installed-Size}\t${Status;1}\t${Package}\n' | sort -n | tail -n 100
66+
echo "** Disk usage:"
67+
df -h

tests/e2e/scenarios/bare-metal/start-vms

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ if ! qemu-img --version; then
5353
fi
5454
if ! qemu-system-x86_64 --version; then
5555
echo "Installing qemu-system-x86_64 (via qemu-system-x86)"
56-
sudo apt-get install --yes qemu-system-x86
56+
sudo apt-get install --yes --no-install-recommends qemu-system-x86
5757
fi
5858

5959
# Enable KVM on github actions
@@ -95,7 +95,7 @@ if (! ip link show ${bridge_name}); then
9595
sudo iptables -t nat -A POSTROUTING -s 10.123.45.0/24 ! -o ${bridge_name} -j MASQUERADE
9696
sudo iptables -A FORWARD -o ${bridge_name} -m state --state RELATED,ESTABLISHED -j ACCEPT
9797
sudo iptables -A FORWARD -i ${bridge_name} ! -o ${bridge_name} -j ACCEPT
98-
98+
9999
# Bring up the bridge
100100
sudo ip link set dev ${bridge_name} up
101101
fi
@@ -158,7 +158,7 @@ function run_vm() {
158158
cat <<EOF > user-data
159159
#cloud-config
160160
users:
161-
- name: my_user
161+
- name: my_user
162162
groups: adm, cdrom, sudo, dip, plugdev, lxd
163163
shell: /bin/bash
164164
sudo: ALL=(ALL) NOPASSWD:ALL
@@ -189,7 +189,7 @@ EOF
189189
sudo ip tuntap add dev tap-${vm_name} mode tap
190190
sudo ip link set dev tap-${vm_name} master ${bridge_name}
191191
sudo ip link set dev tap-${vm_name} up
192-
192+
193193
# Create a per-user systemd unit file to run this VM
194194
# Great guide to qemu options here: https://wiki.gentoo.org/wiki/QEMU/Options
195195
mkdir -p ~/.config/systemd/user

0 commit comments

Comments
 (0)