Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automated backport of #1338: Add OVN IC CI #1351: Fix OVN Image #1373: Use a specific OVNK commit #1414

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 24 additions & 27 deletions scripts/shared/lib/clusters_kind
Original file line number Diff line number Diff line change
Expand Up @@ -188,18 +188,14 @@ EOF
}

function deploy_kind_ovn(){
local OVN_SRC_IMAGE="ghcr.io/ovn-org/ovn-kubernetes/ovn-kube-f:master"
export K8s_VERSION="${K8S_VERSION}"
export NET_CIDR_IPV4="${cluster_CIDRs[${cluster}]}"
export SVC_CIDR_IPV4="${service_CIDRs[${cluster}]}"
export KIND_CLUSTER_NAME="${cluster}"

export OVN_IMAGE="localhost:5000/ovn-daemonset-f:latest"
docker pull "${OVN_SRC_IMAGE}"
docker tag "${OVN_SRC_IMAGE}" "${OVN_IMAGE}"
docker push "${OVN_IMAGE}"

delete_cluster_on_fail ./ovn-kubernetes/contrib/kind.sh -ov "$OVN_IMAGE" -cn "${KIND_CLUSTER_NAME}" -ric -lr -dd "${KIND_CLUSTER_NAME}.local"
local ovn_flags=()
[[ "$OVN_IC" != true ]] || ovn_flags=( -ic -npz 1 -wk 3 )
delete_cluster_on_fail ./ovn-kubernetes/contrib/kind.sh -ov "$OVN_IMAGE" -cn "${KIND_CLUSTER_NAME}" -ric "${ovn_flags[@]}" -lr -dd "${KIND_CLUSTER_NAME}.local"

[[ "$AIR_GAPPED" = true ]] && air_gap_iptables
}
Expand Down Expand Up @@ -240,32 +236,33 @@ function provider_failed() {
fi
}

# If any of the clusters use OVN-K as the CNI then clone the
# ovn-kubernetes repo from master in order to access the required
# kind scripts, and manifest generation templates.
function download_ovnk() {
echo "Cloning ovn-kubernetes from source"
mkdir -p ovn-kubernetes
# We only need the contrib directory, use a sparse checkout
(
cd ovn-kubernetes || exit
git init
git config core.sparseCheckout true
echo contrib/ > .git/info/sparse-checkout
echo dist/ >> .git/info/sparse-checkout
if git remote add -f origin https://github.com/ovn-org/ovn-kubernetes.git; then
git pull origin master
else
git fetch && git reset --hard origin/master
fi
)
function prepare_ovn() {
export OVN_IMAGE="localhost:5000/ovn-daemonset-f:latest"

echo "Building ovn-kubernetes with interconnect (OVN-IC) from source"
echo "This will become unnecessary if OVN CI image publishing is fixed"
echo "https://github.com/ovn-org/ovn-kubernetes/actions/workflows/docker.yml"
rm -rf ovn-kubernetes
git clone https://github.com/ovn-org/ovn-kubernetes
pushd ovn-kubernetes || exit
git checkout c6d8579689fe3b15c87abdf7e7647777bad26605

make -C go-controller

cp go-controller/_output/go/bin/* dist/images

echo "ref: $(git rev-parse --symbolic-full-name HEAD) commit: $(git rev-parse HEAD)" > dist/images/git_info
docker build -t "${OVN_IMAGE}" -f dist/images/Dockerfile.fedora dist/images/
docker push "${OVN_IMAGE}"

popd || exit
}

function provider_prepare() {
[[ -z "${K8S_VERSION}" ]] && K8S_VERSION="${DEFAULT_K8S_VERSION}"
[[ -n "${kind_k8s_versions[$K8S_VERSION]}" ]] && K8S_VERSION="${kind_k8s_versions[$K8S_VERSION]}"

download_kind
[[ "${cluster_cni[*]}" != *"ovn"* ]] || download_ovnk
run_local_registry
[[ "${cluster_cni[*]}" != *"ovn"* ]] || prepare_ovn
}
Loading