Skip to content
This repository has been archived by the owner on Jun 28, 2024. It is now read-only.

Commit

Permalink
ci: install nydus snapshotter
Browse files Browse the repository at this point in the history
nydus-snapshotter / nydusd are required for the CoCo effort.

Signed-off-by: ChengyuZhu6 <[email protected]>
  • Loading branch information
ChengyuZhu6 authored and fidencio committed Sep 20, 2023
1 parent 498570c commit 62c865c
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 0 deletions.
84 changes: 84 additions & 0 deletions .ci/install_nydus_snapshotter.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#!/bin/bash
#
# Copyright (c) 2023 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

set -o errexit
set -o nounset
set -o pipefail
set -o errtrace

cidir=$(dirname "$0")
source "${cidir}/lib.sh"

target_dir="/usr/local/"

nydus_snapshotter_repo=$(get_version "externals.nydus-snapshotter.url")
nydus_snapshotter_version=$(get_version "externals.nydus-snapshotter.version")
nydus_snapshotter_repo_dir="${GOPATH}/src/github.com/containerd/nydus-snapshotter"
nydus_snapshotter_binary_target_dir="${target_dir}/bin"
nydus_snapshotter_config_target_dir="${target_dir}/share/nydus-snapshotter"

nydus_repo=${nydus_repo:-"https://github.com/dragonflyoss/image-service"}
nydus_version=${nydus_version:-"v2.2.3"}

arch="$(uname -m)"

clone_nydus_snapshotter_repo() {
add_repo_to_git_safe_directory "${nydus_snapshotter_repo_dir}"

if [ ! -d "${nydus_snapshotter_repo_dir}" ]; then
mkdir -p "${nydus_snapshotter_repo_dir}"
git clone ${nydus_snapshotter_repo} "${nydus_snapshotter_repo_dir}" || true
pushd "${nydus_snapshotter_repo_dir}"
git checkout "${nydus_snapshotter_version}"
popd
fi
}

build_nydus_snapshotter() {
pushd "${nydus_snapshotter_repo_dir}"
if [ "${arch}" = "s390x" ]; then
export GOARCH=${arch}
fi
make

install -D -m 755 "bin/containerd-nydus-grpc" "${nydus_snapshotter_binary_target_dir}/containerd-nydus-grpc"
install -D -m 755 "bin/nydus-overlayfs" "${nydus_snapshotter_binary_target_dir}/nydus-overlayfs"
if [ ! -f "${target_dir}/bin/nydus-overlayfs" ]; then
echo " ${target_dir}/bin/nydus-overlayfs exists, now we will replace it."
sudo cp "${nydus_snapshotter_binary_target_dir}/nydus-overlayfs" "${target_dir}/bin/nydus-overlayfs"
fi
rm -rf "${nydus_snapshotter_repo_dir}/bin"
popd >/dev/null
}

download_nydus_snapshotter_config() {
tmp_dir=$(mktemp -d -t install-nydus-snapshotter-config-tmp.XXXXXXXXXX)
curl -L https://raw.githubusercontent.com/containerd/nydus-snapshotter/${nydus_snapshotter_version}/misc/snapshotter/config-coco-guest-pulling.toml -o "${tmp_dir}/config-coco-guest-pulling.toml"
curl -L https://raw.githubusercontent.com/containerd/nydus-snapshotter/${nydus_snapshotter_version}/misc/snapshotter/config-coco-host-sharing.toml -o "${tmp_dir}/config-coco-host-sharing.toml"
sudo install -D -m 644 "${tmp_dir}/config-coco-guest-pulling.toml" "${nydus_snapshotter_config_target_dir}/config-coco-guest-pulling.toml"
sudo install -D -m 644 "${tmp_dir}/config-coco-host-sharing.toml" "${nydus_snapshotter_config_target_dir}/config-coco-host-sharing.toml"

}

download_nydus_from_tarball() {
if [ "${arch}" = "s390x" ]; then
echo "Skip to download nydus for ${arch}, it doesn't work for ${arch} now."
return
fi
local goarch="$(${cidir}/kata-arch.sh --golang)"
local tarball_url="${nydus_repo}/releases/download/${nydus_version}/nydus-static-${nydus_version}-linux-${goarch}.tgz"
echo "Download tarball from ${tarball_url}"
tmp_dir=$(mktemp -d -t install-nydus-tmp.XXXXXXXXXX)
curl -Ls "$tarball_url" | sudo tar xfz - -C ${tmp_dir} --strip-components=1
sudo install -D -m 755 "${tmp_dir}/nydus-image" "${target_dir}/bin/"
}

download_nydus_from_tarball
clone_nydus_snapshotter_repo
build_nydus_snapshotter
download_nydus_snapshotter_config
echo "install nydus-snapshotter successful"
12 changes: 12 additions & 0 deletions .ci/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,15 @@ cleanup_network_interface() {
[ "$CNI" != "" ] && info "$CNI doesn't clean up"
}

cleanup_nydus_snapshotter_dependencies() {
if [ -f "/usr/local/bin/nydus-overlayfs" ]; then
rm -f "/usr/local/bin/nydus-overlayfs"
fi
if [ -f "/usr/local/bin/nydus-image" ]; then
rm -f "/usr/local/bin/nydus-image"
fi
}

gen_clean_arch() {
# For metrics CI we are removing unnecessary steps like
# removing packages, removing CRI-O, etc mainly because
Expand All @@ -412,6 +421,9 @@ gen_clean_arch() {
fi
fi

info "remove nydus snapshotter dependencies"
cleanup_nydus_snapshotter_dependencies

info "remove containers started by ctr"
clean_env_ctr

Expand Down
5 changes: 5 additions & 0 deletions .ci/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@ install_extra_tools() {
fi
fi

if [ "${IMAGE_OFFLOAD_TO_GUEST}" == "yes" ]; then
info "Install nydus-snapshotter"
bash -f "${cidir}/install_nydus_snapshotter.sh"
fi

echo "Install CNI plugins"
bash -f "${cidir}/install_cni_plugins.sh"
}
Expand Down

0 comments on commit 62c865c

Please sign in to comment.