Skip to content

Commit f68cbd8

Browse files
committed
optimize scripts and add autobuild scripts
1 parent 5adf576 commit f68cbd8

File tree

18 files changed

+414
-343
lines changed

18 files changed

+414
-343
lines changed

.github/workflows/auto-build-main.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Auto build image
2+
on:
3+
issue_comment:
4+
types:
5+
- created
6+
jobs:
7+
issue_comment:
8+
name: Auto build image
9+
if: startswith(github.event.comment.body, '/autobuild')
10+
runs-on: ubuntu-latest
11+
permissions:
12+
issues: write
13+
steps:
14+
15+
- name: Auto build image
16+
id: autobuild
17+
run: |
18+
commentbody="${{github.event.comment.body}}"
19+
commentbody=$(echo $commentbody | sed "s/\/imagebuild//g")
20+
sudo git clone https://github.com/sealerio/basefs.git && cd basefs
21+
sudo touch autobuild.log && sudo chmod 666 autobuild.log && sudo bash auto-build-main.sh --username="${{secrets.REGISTRY_USERNAME}}" --password="${{secrets.REGISTRY_PASSWORD}}" $commentbody > autobuild.log && cat autobuild.log
22+
echo "::set-output name=info::$(grep 'cri:' autobuild.log))"
23+
24+
- name: Success Commit
25+
uses: peter-evans/create-or-update-comment@v1
26+
with:
27+
issue-number: ${{ github.event.issue.number }}
28+
body: |
29+
${{ steps.autobuild.outputs.info }}

auto-build-main.sh

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
for i in "$@"; do
6+
case $i in
7+
-c=* | --cri=*)
8+
cri="${i#*=}"
9+
if [ "$cri" != "docker" ] && [ "$cri" != "containerd" ]; then
10+
echo "Unsupported container runtime: ${cri}"
11+
exit 1
12+
fi
13+
shift # past argument=value
14+
;;
15+
-n=* | --buildName=*)
16+
buildName="${i#*=}"
17+
shift # past argument=value
18+
;;
19+
--platform=*)
20+
platform="${i#*=}"
21+
shift # past argument=value
22+
;;
23+
--push)
24+
push="true"
25+
shift # past argument=value
26+
;;
27+
-p=* | --password=*)
28+
password="${i#*=}"
29+
shift # past argument=value
30+
;;
31+
-u=* | --username=*)
32+
username="${i#*=}"
33+
shift # past argument=value
34+
;;
35+
--k8s-version=*)
36+
k8s_version="${i#*=}"
37+
shift # past argument=value
38+
;;
39+
-h | --help)
40+
echo "
41+
### Options
42+
--k8s-version set the kubernetes k8s_version of the Clusterimage, k8s_version must be greater than 1.13
43+
-c, --cri cri can be set to docker or containerd between kubernetes 1.20-1.24 versions
44+
-n, --buildName set build image name, default is 'registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:${k8s_version}'
45+
--platform set the build mirror platform, the default is linux/amd64,linux/arm64
46+
--push push clusterimage after building the clusterimage. The image name must contain the full name of the repository, and use -u and -p to specify the username and password.
47+
-u, --username specify the user's username for pushing the Clusterimage
48+
-p, --password specify the user's password for pushing the Clusterimage
49+
-d, --debug show all script logs
50+
-h, --help help for auto build shell scripts"
51+
exit 0
52+
;;
53+
-d | --debug)
54+
set -x
55+
shift
56+
;;
57+
-*)
58+
echo "Unknown option $i"
59+
exit 1
60+
;;
61+
*) ;;
62+
63+
esac
64+
done
65+
66+
version_compare() { printf '%s\n%s\n' "$2" "$1" | sort -V -C; } ## version_compare $a $b: a>=b
67+
68+
ARCH=$(case "$(uname -m)" in x86_64) echo -n amd64 ;; aarch64) echo -n arm64 ;; *) echo "unsupported architecture" "$(uname -m)" && exit 1 ;; esac)
69+
70+
if [ "$k8s_version" = "" ]; then echo "pls use --k8s-version to set Clusterimage kubernetes version" && exit 1; else echo "$k8s_version" | grep "v" || k8s_version="v${k8s_version}"; fi
71+
#cri=$([[ -n "$cri" ]] && echo "$cri" || echo docker)
72+
cri=$( (version_compare "$k8s_version" "v1.24.0" && echo "containerd") || ([[ -n "$cri" ]] && echo "$cri" || echo "docker"))
73+
if [[ -z "$buildName" ]]; then
74+
buildName="docker.io/sealerio/kubernetes:${k8s_version}"
75+
if [[ "$cri" == "containerd" ]] && ! version_compare "$k8s_version" "v1.24.0"; then buildName=${buildName}-containerd; fi
76+
fi
77+
platform=$(if [[ -z "$platform" ]]; then echo "linux/arm64,linux/amd64"; else echo "$platform"; fi)
78+
echo "cri: ${cri}, kubernetes version: ${k8s_version}, build image name: ${buildName}"
79+
80+
kubeadmApiVersion=$( (version_compare "$k8s_version" "v1.23.0" && echo 'kubeadm.k8s.io\/v1beta3') || (version_compare "$k8s_version" "v1.15.0" && echo 'kubeadm.k8s.io\/v1beta2') ||
81+
(version_compare "$k8s_version" "v1.13.0" && echo 'kubeadm.k8s.io\/v1beta1') || (echo "Version must be greater than 1.13: ${k8s_version}" && exit 1))
82+
83+
workdir="$(mktemp -d auto-build-XXXXX)" && sudo cp -r context "${workdir}" && cd "${workdir}/context" && sudo cp -rf "${cri}"/* .
84+
85+
# shellcheck disable=SC1091
86+
sudo chmod +x version.sh download.sh && export kube_install_version="$k8s_version" && source version.sh
87+
./download.sh "${cri}"
88+
89+
sudo chmod +x amd64/bin/kube* && sudo chmod +x arm64/bin/kube*
90+
#Download the latest version of sealer
91+
sudo git clone https://github.com/sealerio/sealer && cd sealer && git checkout main && make build-in-docker && cp _output/bin/sealer/linux_amd64/sealer /usr/bin/ && cd ..
92+
sudo sed -i "s/v1.19.8/$k8s_version/g" rootfs/etc/kubeadm.yml ##change k8s_version
93+
if [[ "$cri" == "containerd" ]]; then sudo sed -i "s/\/var\/run\/dockershim.sock/\/run\/containerd\/containerd.sock/g" rootfs/etc/kubeadm.yml; fi
94+
sudo sed -i "s/kubeadm.k8s.io\/v1beta2/$kubeadmApiVersion/g" rootfs/etc/kubeadm.yml
95+
sudo ./"${ARCH}"/bin/kubeadm config images list --config "rootfs/etc/kubeadm.yml"
96+
sudo mkdir manifests
97+
sudo ./"${ARCH}"/bin/kubeadm config images list --config "rootfs/etc/kubeadm.yml" 2>/dev/null | sed "/WARNING/d" >>imageList
98+
if [ "$(sudo ./"${ARCH}"/bin/kubeadm config images list --config rootfs/etc/kubeadm.yml 2>/dev/null | grep -c "coredns/coredns")" -gt 0 ]; then sudo sed -i "s/#imageRepository/imageRepository/g" rootfs/etc/kubeadm.yml; fi
99+
sudo sed -i "s/k8s.gcr.io/sea.hub:5000/g" rootfs/etc/kubeadm.yml
100+
pauseImage=$(./"${ARCH}"/bin/kubeadm config images list --config "rootfs/etc/kubeadm.yml" 2>/dev/null | sed "/WARNING/d" | grep pause)
101+
if [ -f "rootfs/etc/dump-config.toml" ]; then sudo sed -i "s/sea.hub:5000\/pause:3.6/$(echo "$pauseImage" | sed 's/\//\\\//g')/g" rootfs/etc/dump-config.toml; fi
102+
#sudo sed -i "s/v1.19.8/${k8s_version}/g" {arm64,amd64}/etc/Metadata
103+
##linux/arm64,linux/amd64
104+
sudo sealer build -t "docker.io/sealerio/kubernetes:${k8s_version}" -f Kubefile
105+
if [[ "$push" == "true" ]]; then
106+
if [[ -n "$username" ]] && [[ -n "$password" ]]; then
107+
sudo sealer login "$(echo "docker.io" | cut -d "/" -f1)" -u "${username}" -p "${password}"
108+
fi
109+
sudo sealer push "docker.io/sealerio/kubernetes:${k8s_version}"
110+
fi

context/docker/rootfs/etc/daemon.json

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
{
2+
"experimental": true,
3+
"oom-score-adjust": -1000,
24
"max-concurrent-downloads": 20,
35
"log-driver": "json-file",
46
"log-level": "warn",
57
"log-opts": {
68
"max-size": "10m",
79
"max-file": "3"
810
},
9-
"mirror-registries": [
10-
{
11-
"domain": "*",
12-
"mirrors": [
13-
"https://sea.hub:5000"
14-
]
15-
}
16-
],
1711
"exec-opts": [
1812
"native.cgroupdriver=systemd"
1913
],
14+
"insecure-registries": ["0.0.0.0/0", "::/0"],
15+
"storage-driver": "overlay2",
16+
"storage-opts":["overlay2.override_kernel_check=true"],
17+
"live-restore": true,
2018
"data-root": "/var/lib/docker"
21-
}
19+
}

context/docker/rootfs/etc/docker.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
1313
ExecReload=/bin/kill -s HUP $MAINPID
1414
# Having non-zero Limit*s causes performance problems due to accounting overhead
1515
# in the kernel. We recommend using cgroups to do container-local accounting.
16-
LimitNOFILE=infinity
16+
LimitNOFILE={{or .DockerLimitNOFILE "1048576"}}
1717
LimitNPROC=infinity
1818
LimitCORE=infinity
1919
# Uncomment TasksMax if your systemd version supports it.

context/docker/rootfs/scripts/clean.sh

Lines changed: 0 additions & 56 deletions
This file was deleted.

context/rootfs/scripts/docker.sh renamed to context/docker/rootfs/scripts/docker.sh

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616
set -x
1717
set -e
1818

19-
scripts_path=$(cd `dirname $0`; pwd)
19+
# shellcheck disable=SC2046
20+
# shellcheck disable=SC2006
21+
scripts_path=$(cd `dirname "$0"`; pwd)
2022
image_dir="$scripts_path/../images"
21-
DOCKER_VERSION="19.03.14-sealer"
23+
DOCKER_VERSION="19.03.15"
2224

25+
# shellcheck disable=SC1091
2326
get_distribution() {
2427
lsb_dist=""
2528
# Every system that we officially support has /etc/os-release
@@ -31,6 +34,10 @@ get_distribution() {
3134
echo "$lsb_dist"
3235
}
3336

37+
utils_command_exists() {
38+
command -v "$@" > /dev/null 2>&1
39+
}
40+
3441
disable_selinux() {
3542
if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then
3643
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
@@ -46,6 +53,7 @@ load_images() {
4653
done
4754
}
4855

56+
# shellcheck disable=SC2006
4957
check_docker_valid() {
5058
if ! docker info 2>&1; then
5159
panic "docker is not healthy: $(docker info 2>&1), please check"
@@ -58,7 +66,7 @@ check_docker_valid() {
5866
}
5967

6068
storage=${1:-/var/lib/docker}
61-
mkdir -p $storage
69+
mkdir -p "$storage"
6270
if ! utils_command_exists docker; then
6371
lsb_dist=$(get_distribution)
6472
lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"
@@ -101,8 +109,6 @@ if ! utils_command_exists docker; then
101109
systemctl enable docker.service
102110
systemctl restart docker.service
103111
cp "${scripts_path}"/../etc/daemon.json /etc/docker
104-
mkdir -p /root/.docker/
105-
cp "${scripts_path}"/../etc/docker-cli-config.json /root/.docker/config.json
106112
if [[ -n $1 && -n $2 ]]; then
107113
sed -i "s/sea.hub:5000/$2:$3/g" /etc/docker/daemon.json
108114
fi
@@ -113,4 +119,5 @@ systemctl daemon-reload
113119
systemctl restart docker.service
114120
check_docker_valid
115121

116-
load_images
122+
load_images
123+
bash "${scripts_path}"/init-kube.sh

context/rootfs/scripts/uninstall-docker.sh renamed to context/docker/rootfs/scripts/uninstall-docker.sh

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ systemctl stop docker
44
ip link delete docker0 type bridge || true
55
rm -rf /lib/systemd/system/docker.service
66
rm -rf /usr/lib/systemd/system/docker.service
7-
rm -rf /etc/docker/daemon.json
7+
rm -rf /etc/docker
88
systemctl daemon-reload
99

1010
rm -f /usr/bin/conntrack
11-
rm -f /usr/bin/kubelet-pre-start.sh
1211
rm -f /usr/bin/containerd
1312
rm -f /usr/bin/containerd-shim
1413
rm -f /usr/bin/containerd-shim-runc-v2
@@ -18,19 +17,11 @@ rm -f /usr/bin/docker
1817
rm -f /usr/bin/docker-init
1918
rm -f /usr/bin/docker-proxy
2019
rm -f /usr/bin/dockerd
21-
rm -f /usr/bin/kubeadm
22-
rm -f /usr/bin/kubectl
23-
rm -f /usr/bin/kubelet
2420
rm -f /usr/bin/rootlesskit
2521
rm -f /usr/bin/rootlesskit-docker-proxy
2622
rm -f /usr/bin/runc
2723
rm -f /usr/bin/vpnkit
2824
rm -f /usr/bin/containerd-rootless-setuptool.sh
2925
rm -f /usr/bin/containerd-rootless.sh
3026
rm -f /usr/bin/nerdctl
31-
32-
rm -f /etc/sysctl.d/k8s.conf
33-
rm -f /etc/systemd/system/kubelet.service
34-
rm -rf /etc/systemd/system/kubelet.service.d
35-
rm -rf /var/lib/kubelet/
36-
rm -f /var/lib/kubelet/config.yaml
27+
rm -f /usr/bin/seautil

context/download.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ install_url="https://sealer.oss-cn-beijing.aliyuncs.com/auto-build"
5959
##https://github.com/osemp/moby/releases/download/v19.03.14/docker-amd64.tar.gz
6060
##registry ${ARCH} image: ghcr.io/osemp/distribution-amd64/distribution:latest
6161
if [ "${cri}" = "docker" ]; then
62-
docker_version="19.03.14"
63-
docker_url="https://github.com/osemp/moby"
62+
docker_version="19.03.15"
63+
#docker_url="https://github.com/osemp/moby"
64+
docker_url="https://github.com/moby/moby"
6465
cri_tarball_amd64="docker-amd64.tar.gz"
6566
cri_tarball_arm64="docker-arm64.tar.gz"
6667
cri_tarball_amd64_url="${docker_url}/releases/download/v${docker_version}/${cri_tarball_amd64}"

context/imageList

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ack-agility-registry.cn-shanghai.cr.aliyuncs.com/sealer/lvscare:v1.1.3-beta.8
1+
ack-agility-registry.cn-shanghai.cr.aliyuncs.com/sealer/lvscare:v1.1.3-beta.8

0 commit comments

Comments
 (0)