-
Notifications
You must be signed in to change notification settings - Fork 703
/
verify_packages_install_deb.sh
executable file
·125 lines (90 loc) · 3.48 KB
/
verify_packages_install_deb.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/bash
set -o nounset
set -o pipefail
set -o errexit
# This test installs debian packages that are a result of the CI and release builds.
# It runs '... --version' commands to verify that the binaries are correctly installed
# and finally uninstalls the packages.
# For the release packages it tests all versions in the support skew.
LINE_SEPARATOR="*************************************************"
echo "$LINE_SEPARATOR"
PACKAGES_TO_TEST_K8S=("kubectl" "kubelet" "kubeadm")
PACKAGES_TO_TEST_EXT=("cri-tools" "kubernetes-cni")
PACKAGES_TO_TEST=("${PACKAGES_TO_TEST_EXT[@]}" "${PACKAGES_TO_TEST_K8S[@]}")
# hardcode the LSB release to "xenial" instead of calling "lsb_release -c -s"
LSB_RELEASE="xenial"
# install prerequisites
echo "* installing prerequisites"
apt-get update
apt-get install -y apt-transport-https curl python gnupg
# check if gsutil from the Google Cloud SDK exists and if not install the SDK
if ! gsutil version > /dev/null; then
curl -sSL https://sdk.cloud.google.com > /tmp/gcl && bash /tmp/gcl --install-dir=~/gcloud --disable-prompts
export PATH=$PATH:~/gcloud/google-cloud-sdk/bin
fi
gsutil version
# test CI packages
echo "$LINE_SEPARATOR"
echo "* TESTING CI PACKAGES"
PACKAGE_EXT="deb"
CI_DIR=/tmp/k8s-ci
mkdir -p $CI_DIR
mkdir -p /opt/cni/bin
CI_VERSION=$(curl -sSL https://dl.k8s.io/ci/latest.txt)
CI_URL="gs://kubernetes-release-dev/ci/$CI_VERSION-bazel/bin/linux/amd64"
echo "* testing CI version $CI_VERSION"
for CI_PACKAGE in "${PACKAGES_TO_TEST[@]}"; do
echo "* downloading package: $CI_URL/$CI_PACKAGE.$PACKAGE_EXT"
gsutil cp "$CI_URL/$CI_PACKAGE.$PACKAGE_EXT" "$CI_DIR/$CI_PACKAGE.$PACKAGE_EXT"
dpkg -i "$CI_DIR/$CI_PACKAGE.$PACKAGE_EXT" || echo "* ignoring expected 'dpkg -i' result"
done
echo "* installing"
apt-get install -f -y
echo "* testing binaries"
kubeadm version -o=short
kubectl version --client=true --short=true
kubelet --version
crictl --version
ls /opt/cni/bin/loopback
echo "* removing packages"
apt-get remove -y --purge "${PACKAGES_TO_TEST[@]}"
apt-get autoremove -y
rm -rf $CI_DIR
# test stable packages
# NOTE: MAJOR version bumps are not supported!
echo "$LINE_SEPARATOR"
echo "* TESTING STABLE PACKAGES"
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-$LSB_RELEASE main
EOF
apt-get update
VERSIONS=$(apt-cache madison kubelet | awk '{print $3}')
LATEST_STABLE=$(apt-cache madison kubelet | awk '{print $3}' | head -1)
LATEST_STABLE_MINOR=$(echo "$LATEST_STABLE" | cut -d '.' -f 2)
MIN_SUPPORTED_MINOR=$(("$LATEST_STABLE_MINOR" - 2))
for VER in $VERSIONS; do
echo "$LINE_SEPARATOR"
echo "* testing version: $VER"
MINOR=$(echo "$VER" | cut -d '.' -f 2)
if [[ "$MINOR" -lt "$MIN_SUPPORTED_MINOR" ]]; then
echo "* found version outside of the support skew: $VER; finishing..."
break
fi
# add versions for the k/k originated packages
PACKAGES_TO_TEST_K8S_VER=()
for PKG_K8S in "${PACKAGES_TO_TEST_K8S[@]}"; do
PACKAGES_TO_TEST_K8S_VER+=("$PKG_K8S=$VER")
done
echo "* installing ${PACKAGES_TO_TEST_EXT[*]} ${PACKAGES_TO_TEST_K8S_VER[*]}"
apt-get install -y "${PACKAGES_TO_TEST_EXT[@]}" "${PACKAGES_TO_TEST_K8S_VER[@]}"
echo "* testing binaries"
kubeadm version -o=short
kubectl version --client=true --short=true
kubelet --version
crictl --version
ls /opt/cni/bin/loopback
echo "* removing packages"
apt-get remove -y --purge "${PACKAGES_TO_TEST[@]}"
apt-get autoremove -y
done